The big lawsuit between Google and Oracle going on right now is as important as any in the history of computing.
Unless you've been lost in the deep woods in recent weeks, you're aware that Oracle has accused Google of misusing certain intellectual property. What you may not know is that, if Oracle won its case, software developers could well be in for some major changes in how they do their work.
In a nutshell, Oracle is arguing that application programming interfaces, or APIs, can be protected by copyrights. It argues not only that a specific list of software instructions that implement a particular API (instructions written in, say, C++) is protectable, but also that the abstract definition of the API itself can be protected.
What is an interface? That's the almost philosophical question at the heart of this trial. It has been a tricky one ever since the word first showed up in a courtroom. The antitrust suits filed against IBM in the late 1960s and throughout the 1970s may have been the first battles over interfaces. I don't know. But I do know that there was much at stake for IBM back then, because it was aggressively fiddling with interfaces on its mainframes to shake off makers of plug-compatible disk drives, tape drives, and other peripheral devices.
At first, IBM's box-to-box interfaces seemed fairly straightforward, involving certain types of electrical plugs and cables and the signals those cables moved from processor to disk drive, for instance. But as competitors grew more sophisticated in their ability to clone its interfaces, IBM started changing the logic of these connections -- logic embodied "further back" from the actual interface plug. Almost at a whim, the company could add a new protocol that was designed, so it seemed, only to add complexity and thus keep competitors off balance.
Today, Google and Oracle are fighting over interfaces defined only in software. These interfaces are more complex and more widely used, too. I think of APIs as highly structured exchanges of words, each one chosen from a strictly limited vocabulary and used according to highly specific rules: If he says X, I should say Y, and then I should expect him to do A, B, or C.
Threat to Linux?
The question is where -- or what -- this kind of interface is. Is it the code or words that its originator has used to describe it, or is it the abstract, noncoded specifications of the exchanges that should take place? More specifically, can the company that owns the copyrights to various Java libraries (i.e., Oracle) block others, such as Google, from building its own libraries that do the same thing as Oracle's in a different way with different code? (Could Plato have copyrighted the cube and thereby controlled all other, less perfect cubes?)
If Oracle won and the right to protect APIs in the abstract were established, there would be some serious ramifications for the software industry. Think, for instance, what this might mean for the future of Linux, which solely in terms of APIs "looks" and acts almost exactly like AT&T's Unix operating system, even if it doesn't use any actual code from Unix. In theory, the current owner of the Unix copyright, Novell, could demand royalties from everyone supplying or even using Linux.
Likewise, a win for Oracle might mean many dialects of many computer programming languages could be in for similar trouble. Users of Objective-C, such as Apple, might have to pay up -- again, to AT&T, whose people created the original C language. Andrew Binstock, writing at Dr. Dobb's, warns of the "end of programming as we know it." That's about as dire as it gets, no?
I'm not sure which company is right -- Oracle or Google -- but I am quite sure this is a lawsuit worth watching. What about you? Any thoughts?