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
  • 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
  • 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
      • “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


blog comments powered by Disqus

Published

01 June 2016

Category

work

Tags