An End To API Gaslighting?

The Supreme Court decision in Oracle vs Google ends a decade-long nightmare for open source developers.

Sunlight or gaslight?*

The decision of the US Supreme Court (SCOTUS) to reverse the erroneous conclusion of the US Federal Circuit appeals court (CAFC) that Google’s use of the Java SE API in Android was a copyright infringement comes as a great relief to open source programmers everywhere. Software developers have always assumed that merely including a function prototype in their code does not require copyright permission as it’s just a fact about the implementation.

Re-implementing a whole set of functions using only the original prototype so that a compatible program can be created is thus normal; the first wave of open source completely relied on doing so. The whole global open source community has been working for decades on the assumption that a re-implemented API does not risk a lawsuit. So the Pandora’s box Oracle tried to open was felt as an existential threat.

The decision issued on April 5th is a great outcome, albeit falling short of what might have been achieved had SCOTUS dived fully into the boundaries of copyrightability as Google asked in their petition. It aligns the US with the norm in Europe as well as affirms that the law in the US matches the common-sense expectations of programmers.

The Java Journey

How did we even get here? Sun Microsystems created the Java platform, a combination of a programming language and a comprehensive suite of helper functions split into three “editions” all of which are colloquially referred to just as “Java”. The promise of Java was famously “write once, run anywhere” – an abstraction achieved by using a software-implemented chip that’s ported to every hardware platform, hiding platform differences and delivering a uniform programming environment that’s agnostic to the hardware it runs on.

The core language and libraries, Java SE (“Standard Edition”), were widely adopted due in no small part to Sun’s vigorous application of licensing controls so that implementations were the same everywhere. Java ME — the edition aimed at mobile phones (not “smart phones” – this was before such things existed), was also widely adopted by phone manufacturers. But instead of the uniformity achieved by Java SE, Sun tolerated divergent implementations in return for significant licensing revenue. The result was that Java ME allowed manufacturers to “differentiate” and software in the after-market needed testing and maybe rewriting for every new phone. Write once, test everywhere.

Google saw a market opportunity here, not least after realising Apple were “going big” with the new “Smart Phone” product category with their Apple-only iPhone, and invested heavily to create the Android platform. What distinguishes smart phones from their ancestors is a uniform application layer served by a global app store so all models of phone can run the same apps. By hiding all the hardware differences under a uniform platform, Android allowed the software market on phones to transcend networks and hardware vendors. It created exactly the market Java ME should have created were it not for Sun’s tolerance of phone manufacturer “differentiation”.

Because so many programmers already knew how to use it, Google decided that the right programming language for Android was Java, but that the hot mess of Java ME should be avoided along with Sun. They created a whole new universe of helper functions with different names and architectures while ignoring those created by Sun for Java ME. But in order to use the Java programming language, they had to implement the core language functions of Java, and it just so happens almost all of those are also implemented as libraries of helper functions too. So Google took the function prototypes of those core language capabilities from Java SE and wrote (or otherwise obtained) completely unrelated code to implement them.

To a programmer, doing so seems obvious and unremarkable. Google didn’t copy implementing code from Java SE; they wrote a fresh implementation of the programming language, just as generations of software tool companies had done for every programming language. To Sun, while it was regrettable in revenue terms that Google had decided not to follow the path to Java ME, at least they were using Java as the programming language for Android while driving its adoption and market growth in a whole new, completely different market. Far from litigating, Sun welcomed Android and promised to support it in their open source NetBeans IDE.

Lighting Up

Just three years later, Oracle acquired Sun in early 2010 and took over stewardship of Java. Oracle then immediately sued Google for patent and copyright infringement over their use of Java. Despite seeming promising, the patent infringement case was quickly dismissed, leaving only the weak copyright complaints. That was when the gaslighting started.

The heart of the lawsuit’s copyright strategy was an attempt to persuade courts that the reality software developers understand is not real. In this case, Oracle’s legal team aimed to persuade the court that the term “API” didn’t refer just to an application programming interface in the sense of a set of function prototypes, but to the whole body of code implementing it as well. They then used an artificial distinction for elements within that presumed body of code, “declaring code” and “implementation code”, so that function prototypes sounded like they were part of the whole work and weren’t just placeholders. When practitioners spoke from their experience without defining “API”, this framing meant their factual statements sounded like they supported Oracle’s case.

By seeding these and many other complexities to reframe reality, the court was led down a path of treating function prototypes as if they were part of the implementation code itself. With this sleight of hand, it was then easy to characterise use of function prototypes as if it was appropriation of the code. This created cognitive dissonance in anyone already familiar with programming, resulting in many attempts to clarify with analogies. That seemed to include the district court judge, William Alsup, who I remember asking me at the end of my witness testimony in the court how I understood an API.

While Alsup saw through it, by building on this constructed complexity Oracle managed to persuade the CAFC (essentially a patent appeals court) to overturn the thoughtful judgements of Alsup’s district court. Like the dissenting option to SCOTUS from Justice Thomas and the outrage of IP maximalists after the case, CAFC’s finding was simplistic in its handling of the reality understood by developers and heavy on bad assumptions about software, based partly on being patent specialists and partly on not understanding about function prototypes.

Every conversation about the case with Oracle’s staff and legal team had the feeling of cognitive dissonance that’s characteristic of being gaslighted. They sought to make every practitioner challenging their position feel they were inexperienced, naive and lacked understanding of the technology. This went on for years. The feeling of despondency that accompanied the final CAFC holding, once again overturning the district court’s reality-based judgement, was overwhelming.

Extinguished by SCOTUS

So the decision of the Supreme Court on April 5th was like finally being released and affirmed. Wisely, the court avoided the byzantine complexities that had enabled the gaslighting in the first place. SCOTUS asserted that since a reversal on the fair use matter would render any outcome of the copyrightability issue moot, they would only expend effort on the fair use matter. They then held that — regardless of the extent to which an API is copyrightable — if a party “reimplemented a user interface taking only what was needed to allow users to put their accrued talents to work in a new and transformative program, [the party’s] copying of the … API was a fair use of that material as a matter of law.” 

Justice Breyer, who had been a leading copyright scholar prior to his judicial career, has written for the court a wise, strong, precedent-setting outcome that reflects the reality programmers expect, which is that the use of an external function declaration alone doesn’t give others a control point. That expectation has been almost universal for the whole history of programming and SCOTUS has correctly upheld the consensus of the public in the face of self-serving gaslighting. As if to confirm the practical effect of the finding, Justice Thomas has voiced the outrage of the copyright maximalist community using the conceptual framework of the gaslighters in his dissent. It seems even the dissenters agree the court’s decision is strong.

While there is obviously a risk of future cases exploring the limits of what constitutes a user interface in API terms (and of course nothing in this article should be understood as legal advice}, it seems that in the majority of cases concerning open source developers, the reality they expect will also be the reality in law.

Many thanks to the friends who checked this over for me, especially Richard Fontana and Rich Sands. All the errors remain mine.

*(It’s sunlight)

The Missing Stakeholders

The coming wave of digital regulation may claim to target “Big Tech” but will inevitably end up harming citizen-innovators most because regulators have forgotten to include them in their process.

Tracks in the snow suggest a bird being captured by a cat.
Stakeholder-Citizen Interaction

Here come the regulators. “Big Tech” companies like Facebook and Google definitely deserve some guide-rails, as well as some consequences for the unwanted impacts they have foisted on society along with the desirable ones. Facebook in particular has some deep, serious consequences of its amorality due soon. But so far, pretty much every regulation relating to the digital realm is defective.

Continue reading

Settling Scores With Giants

A UK national newspaper approached me to write an opinion piece about the copyright directive vote today, at short notice. When I asked to be paid for my work, they suddenly decided to just treat it as a “written interview”. Seems wanting to see authors paid is only an issue when they’re not the ones paying. I stopped as soon as I heard, but already had a rough unpolished draft so – here it is.



There’s a vote in Strasbourg this week about copyright rules. The pretext is an update of the original 18 year old copyright directive to make it fit for the Internet age. But there’s something strange going on, fuelled by legions of lobbyists paid with old money. The thinking behind the copyright directive will only #fixcopyright for the dragons of content who want to harm the giants of tech. That “dragons vs giants” conflict will just leave the rest of us smaller creatives trampled, burned –  and unpaid.

Change Due

There’s no doubt that we need to revisit copyright for the digital age and make some adjustments to the rules. When the original directive was negotiated in the 90s the Internet as we know it was in its infancy. But in the midst of all the necessary change, some dark forces have been at work to settle scores with the young upstarts of the Internet age — with no concern for who else gets hurt in the process.

I make part of my living writing and am a published author, so I have the greatest respect for the idea that people who create things should be paid for their work. I’ve also spent my career in the software industry, with a special interest in Open Source Free Software — the community-collaborative approach that’s built the software which today runs the world. Success there depends entirely on copyright law, so you’d expect me to be a massive fan – and I am.

There are many ways to use the rights which creators get to their work. Sometimes simply being paid by other people to enjoy the work is the answer; I am very keen on any publisher paying me to write this for you, for example (narrator: they didn’t)! But there are other approaches.

If I want to collaborate with a group of people to make the computer software that runs my web site, I may prefer to make the use of my copyrighted code freely available to the other people sharing the work with me, and give them the freedom to improve it and share their work with others too. Doing that means I can easily work with the best programmers in all the different companies that use the software. I’ve not “given it away” — I get value from my copyright by sharing their innovation and maintenance of the software.

I might also prefer to use my copyright in my writing (or if I were a musician, in my music) to excite new readers and listeners who wouldn’t pay for what they don’t know. As publisher Tim O’Reilly once said, “The problem for most artists isn’t piracy, it’s obscurity.” I might choose to make my book or music available freely for download to build a fan base that will buy printed versions or attend concerts. People who did that wouldn’t be “pirates” but prospects.

Not just money for the middle man

So here’s the problem with what’s going on with the copyright directive. It doesn’t recognise that any of these alternative approaches to using copyright exist. The background thinking is infused with the views of a world where only corporations care about copyright, citizens only consume it and any other behaviour must therefore be wrong. It lacks any viable understanding of other worlds – such as mine – where copyright is freely licensed to enable valuable returns like developer collaboration, consumer network effects, small artist exposure and new author visibility. Instead its old-world thinking is anxious to preserve the significant funds skimmed off by the middle men of publishing.

It’s thinking that’s not too worried about most of the actual creators – just the big-money ones. They’re keen to preserve a retired superstar’s pension but not too bothered about my income, because only one of those makes the publisher rich.

The Dark Arts

It’s worse than just self preservation though. The proposed effects swing dramatically in the opposite direction. Whoever the dark fingers pulling the strings are, they want to shut down any and all new avenues of creativity.

  • Want to link to a web site? The proposals want you to negotiate a copyright license first (article 11).
  • Want to host writers on your web page? The proposals want to assume everything uploaded is pirated until proven otherwise (article 13).
  • Using open source software on your web site? The proposals can be understood to open you to high compliance and liability costs (article 13).
  • Doing research for a project? Text and data mining may be restricted to formal institutions (article 3).

All these – and many more – are being gleefully pursued in the name of stifling Google and Facebook, but because they arose in minds imbued with the business norms of the industrial revolution, they have no concept that individual citizens might be impacted as well. They accuse people like me of being “paid by GAFA” to oppose them, rather than recognising their lobbying tramples on our work.

The process at the Parliament is only half of the activity – the European Commission also has a set of proposals it wants to see implemented. It’s quite hard to say who exactly is behind each specific friendly-fire-prone measure on both sides. The text in Parliament is emerging in a constant flurry of drafts and amendments that make it impossible for a normal person to keep track. Even the few people working to defang these proposals in Brussels are struggling to find what text will actually appear in front of the Parliament until it’s too late.

But more ominously, there are insiders supporting the copyright extremists in both places. The official Twitter accounts of a number of Commission bodies have been pumping out partisan misinformation throughout the process, and representatives of the Commission have been remarkably dismissive of concerns, preferring to wave them away as the work of the “tech giants” with no regard for the “content dragons” whose paws seem to occupy every puppet that pushes back at me.

It’s Not Over

That’s why I will remain concerned whatever happens in Strasbourg this week, even though the Parliament vote is just a step in a longer process. The next stage after the Parliament decides on its goals will be “trilogues” as the Parliament, Commission and Council meet to harmonise their respective proposals. Given the propensity of insiders to allow their thinking to be dominated by the “content dragons” and to dismiss the concerns of new model pioneers like myself as “just the tech giants trying to derail us” I have great fear that we’ll see a repeat of GDPR here. That showed us measures supposedly protecting European citizens actually inflicting extensive collateral damage on small innovators while hardly inconveniencing the multinational giants who were supposedly in the cross-hairs. When dragons settle scores with giants, it’s the little people who get trampled and burned.


[Want to keep me writing even though the big guys expect me to do it for free? Please support me on Patreon!]

The Legislative Disconnect Of The Meshed Society

What is the “meshed society”? It is people, joined together by the Internet, able to interact — to collaborate, to create, to transact and to relate directly with each other — without the need for another person to mediate or authorise. As we discover more and more ways to disintermediate our interactions, society is transformed: from a series of hubs with privileged interconnecting spokes intermediating supply to consumers at their tips, into a constantly shifting meshed “adhocracy” of temporary connections, transactions and relationships of varying length. In the adhocracy, individuals play the roles of user, repurposer, maker, buyer, investor and collaborator in a constantly changing spectrum of combinations.  Continue reading

Article 13 – An Existential Threat

The Electronic Frontier Foundation has published a letter from more than 70 leaders in the emerging meshed society (including me) which criticises Article 13 of the European Union’s proposed new copyright regulations. This Article starts from the assumption that the only role of an individual is to consume copyrighted works and hence deduces that any act of publication on the part of an individual must be infringing the copyrights of a corporation unless proven otherwise. The text doesn’t state things that clearly, but the effect is unmistakable. It’s as if a politician was proposing to ban syringes because addicts use them, without considering that hospitals do too.  Continue reading

One Last Push To Save The API

A group of computer experts – including me – asked a US court to think again about fair use of APIs this month.

Tomás Saraceno artworks at SF MOMA: Stillness in Motion—Cloud Cities

It was an unlucky fact that Oracle’s case against Google over Android started with patents. Their initial case fell apart almost immediately, with almost all the patent claims invalidated. The implausable backstop copyright case Oracle made against Android’s use of language-essential definitions in the Java APIs (and thus against the freedom of developers everywhere) carried on though. The initial patent case meant that the appeal when Oracle soundly lost ended up at the Court of Appeals for the Federal Circuit (CAFC) — the specialist patent appeals court in the USA — and not at a court competent to dispense copyright justice.  Continue reading

Copyright Needs Radical Reform

Use of copyright today far exceeds the ways its framers imagined. We need reform, not just adjustments.

Cow Pulling Lawn Mower In Delhi

Copyright is back in the news in Europe. In the UK, the Digital Economy Bill proposes to increase the maximum prison sentence for online copyright infringement to ten years. Meanwhile, an extensive modernisation of copyright for the EU is also in progress, with a goal of making the treatment of copyright the same across Europe, especially in relation to digital media. Continue reading

DRM Is Toxic To Culture

In pursuit of market control now, deployers of DRM are robbing us of our culture in perpetuity by enclosing the future commons.

Dry Stone Wall

Ancient dry stone enclosure wall in Cornwall, England

It’s possible that you think that unauthorised use of copyrighted music, films and books is such a serious problem that it’s worth giving away a little of your convenience and freedom in exchange for stopping it. If you do, I’d like to suggest you think again – and time is running out.  Continue reading

Copyright: A Modest Proposal

Maybe if we stopped saying “copy” everywhere we’d find a way to fix copyright?

Ball Of Points

  1. Why is a song that I play digitally or a book I read electronically subject to extensive controls that are not considered appropriate to physical records or books? It’s because they are subject to licenses that can’t be applied by the seller to the physical works.
  2. Why can those licences be imposed on digital works? Because the use of digital works is considered subject to copyright, whereas the use of physical works is not because of a legal doctrine called “copyright exhaustion”.
  3. Why is that? Because the act of instantiating the work for use has been described as “copying”, allowing the rules surrounding copyright to be used as a threat to back up arbitrary license terms controlling use.
    Continue reading

What Is An API? The Clue Is In The Name

Wild Webmink

At the end of my testimony in the recent Oracle v Google trial in San Francisco, Judge Alsup asked me to explain what an API is. My answer aimed to simplify the answer for a general listener while remaining recognizable to most programmers. Here’s what I said.

The Java source code of OpenJDK usefully follows a layout convention. Up front of each file is a copyright and license statement. After that come a sequence of definitions of the various standard functions that complete the Java programming language. Together, a set of related definitions comprise a class library.

Each of those definitions comprise three parts. There is a function declaration, which defines the name of the function and the order and data types of the parameters used by the function. After that is a comment block with a summary of the specification for the function, tagged to allow it to be…

View original post 319 more words