PyCon Day 4: Morning Keynotes
APIs, #Googacle, and You
Van Linberg (chair of the Python Software Foundation) and Ewa Jodlow…
Keeping PyPI running and Donate
On Thursday something happened and I changed my entire talk
What Happened?
- Oracale vs. Google decision. Use of Java input.
- 2010 lawsuit
- API could not be copyrighted as a matter of law
- Federal circuit reversed the decision
- Appeals court sent the case back down to the trial court
- Court ruled that Google’s use of API was covered by “fair use”
Why do we care?
- Aren’t software patents the real issue?
- I think that the copyright here is more important
- Copyright is the foundation of Open Source
- Though some aspects of patents are more complex and intricate, a lot about it is simple
- If you are an inventor, you have to describe to the public how it works
- Copyright is superficially similar, but in other ways fundamentally different
- With copyright, you have exclusive use, but that time is measured in decades
- Differences
- Patents cover function; copyrights cover content
- Nothing is patented by default; almost everything is copyrighted by default
- What do you mean, “Almost everything is copyrighted?”
- Copyright does not extend to a lot of things
- You can’t copyright a machine
- Judge ruled that APIs are much more like a machine than a novel
- The underlying sequence and structure of the API were not copyrightable
- What do you mean by API?
- names of builtins
- arguments of the functions
- function signatures
- collections of names
- Didn’t the appellate court get it wrong?
- No, I don’t think they got it wrong as the law is written
- Is there no expression or creativity that go into creating an API
- If you’ve ever heard of programmers arguing over beautiful vs. ugly API, you’ve probably wandered into the muddy ground of partially copyrightable expression
- Count may not have necessarily understood all of the policy implications for the public
- Would have been better for innovation if they had written a “bright line rule”: a rule that allows people to easily reason about what they can and cannot do
- Fair Use
- Copyright statue says that criticism, comment, teaching, scholarship is not an infringement of copyright
- Non-commercial use is covered
- None of the 4 fair use factors seem to really fit Google’s use of Java’s API
- Google is a commercial entity
- Google is affecting Oracle’s ability to profit from a copyright on Java
- This will likely go down as a keystone case on factor #2 (The “nature” of the use of the copyrighted work)
- So now it’s legal to reimplement APIs right? It’s fair use?
- Van say’s no.
- All that it means was that it was legal for Google to use Oracle’s Java API in Android
- The holding is very specific to this case
- The appellate court doesn’t set any precedent
- It’s only a “persuasive” case
- Other courts don’t have to agree
- Policy
- Fair use is by definition a case-by-case evaluation
- This decision is for one use only. So why is it a big deal?
- If the decision had gone the other way, it would have set precedent
- Companies would yield patent-like power over the use of their APIs
- Cases like this, do not come along very often. This was well litigated (quantitatively, not qualitatively)
- A decision the other way would have opened a large portion of the US to liability
- Extinction-level event for Android and all of the disruption that that would entail
- One op-ed claimed that this decision would kill free software
- Oracle’s lead trial counsel
- Google’s narrative boiled down to the fact that “if you offer your software in a free an open way, then no restrictions will apply”
- I believe that she meant it, but that was in the context of arguing fair use.
- What else to learn?
- It doesn’t always pay to mouth off on the Internet or on a mailing list
- IANAL, and then will proceed to argue, usually incorrectly
- A while back, a lot of engineers did that and then got hauled in to court
- It doesn’t always pay to mouth off on the Internet or on a mailing list
- Is this over?
- No
- Decision is not final
- It will go to appeal (33% chance to be overturned)
- Most powerful thing that could happen is that Oracle could win
Keynote: Adaptation in OSS
Chris Ewing
- Environmental challenges that Plone has faced
- Start with “pseudo-adaptation”
- Behaviour adaptation that
- Convergent adaptation
- flying squirrel
- Metaphorical adaptation
History
- Jim Fulton
- CEO of “Digital Innovation”
- Sees a tutorial on
- Starts to write “bobo”
- Because “ZoDB”, principia
- Release the software as open source
- Zope was born to the world
- Zope
- Traversal/Object publication
- URL looks like a file system path
- CGI similar to HTTP
- Can we treat Python Objects in the same way as CGI?
- Can we change the fs hierarchy to a nested dict? (Yes)
- Let objects publish themselves
- Use lookup to find the object
- Call the object to let it represent itself
- Security was built into Zope
- Fine grained access control
- Mixed content was simple
- Zope allowed new devs to build websites w/ only their browser
- Zope was being called Python’s killer app (1998)
- Content Management Framework (CMF)
- Lots of tools for creating content
- Setting display
- You could them the application
- CMF wasn’t nice to look at
- Traversal/Object publication
- Plone
- CMFPlone was created as a themed package with the goal of making CMF easy to use
- In place content creation
- Could publish it right there with a button
- Strong security model allowed sites to mix public and private content
- Could integrate intranet and extranet
- Users and community grew quickly
- Launched in 2002
- First Plone sprint held in Bern Switzerland in 2003
- One of the largest open source projects in the world
- CMS
- Manage Content
- Create/edit/display/delete
- Connect/Stage/Version/Aggregate
- Multi-lingual/integration/federation
- All custom tools
- Manage custom content
- Support custom themes
- Problems
- Support for working through the web
- Changes are stored entirely in the database
- You can’t test them
- You can’t manage them in version control
- Packaging
- 2002-2003 PyPI was created
- Used eggs for plugin packages
- system is easy to use for the front end
- But now to maintain the system, you need to be a Python programmer
- More problems
- Redundant types
- No PEP8
- Large diverse community has had lots of experience in solving the problem
- Solutions
- Biggest barrier has been the messy API
- A bunch of people specifically wrote API docs for what they wished the API looked like
- “Facade pattern”
- Don’t expose the mess behind the curtain… only expose the API
- One example of “program to an interface, not an implementation”
- Zope corp overhauled the multiple inheritance to an “adapter” pattern
- adapter pattern represents a “has a” relationship, rather than “is a” relationship
- Multiple inheritance example, showing 16 classes being required for one simple class.
- Adapters to the rescue
- Do we need objects to render themselves directly?
- Plone doesn’t have URL dispatch
- But Plone does have traversal and object
- Call the class and we can get its default view
- Or register different adapters for different types of content
- Objects get a lot simpler
- We can view our content objects as separate things
- Do we need objects to render themselves directly?
- “Templates == Layout”
- “Templates != Layout”
- Let’s transform layout from one to the other
- Diazo: we write xslt so you don’t have to
- Diazon
<theme href="">
- Selectors, Rules, etc.
- Theme for Plone 5 can consist of a very small number of things
- Use your own tools
- But I HATE xml
- Demo
- CMFPlone was created as a themed package with the goal of making CMF easy to use
blog comments powered by Disqus