Saturday, 2 June 2012

Oracle v. Google v. Common Sense

Oracle's drawn-out legal campaign against Google has finally reached its conclusion. First came the judgment that Google has not breached copyright (aside from one elementary 9-line method), and that it has not infringed upon Oracle's patents. On Thursday, the final determination came, which asserted that APIs are non-copyrightable.  Here it is:

This command structure is a system or method of operation under Section 102(b) of the Copyright Act and, therefore, cannot be copyrighted

Groklaw

Finally, some common sense in the world of patent litigation. It's been a long time in coming.

This is great news for software developers everywhere, and we all owe a debt of thanks to Google (for not caving in and paying Oracle's ransom demands), to the FSF (whose support over the years has been invaluable), the EFF (with great coverage), those at Groklaw for their tireless monitoring of the trial, and countless others; not forgetting the patient jury and most learned judge.

The problem is this represents just the tip of the iceberg. Software patents are a menace to the very practice of software design, leaving programmers (especially lone programmers) at the mercy of corporations with large patent portfolios, even if their work is entirely of their own inspiration and manufacture. Software patents are simply nonsensical.

The argument for software patents goes like this: those who spend time and effort creating a product should be assured of their ability to reap financial rewards, free from risk of their competitors duplicating and reselling their work. Without this assurance, say the patent advocates, companies and individuals won't produce software. (You have to put open source to the back of your mind for this argument to hold water.)

Yet, every programmer knows that their work is amply protected by existing copyright legislation. Consider the Oracle v Google case: the only complaint that was even partially upheld was copyright violation in a single nine line method. Copyright assures that another competitor can't take your code and use it (even with changes) in their own product without your permission. They would have to rewrite it.

Software patents go further, and copyright ideas behind the code. Yet, there's an odd dilemma here: ideas which make up code are expressed in algorithms. Algorithms are not copyrightable.

You can't just go and copyright the concept of a loop. That would make programming nigh on impossible - unless you paid royalties to the owner of the "loop" patent. Yet, a loop is hardly that much of a mental leap when considering machine code. It's basic. Just because somebody wrote a loop first before somebody else doesn't give them the right to collect money from everybody who subsequently writes something similar. There are only so many fundamental programming constructs which one can use to write software with.

It's tantamount to copyrighting the method of harvesting an apple from an apple tree. Somebody managed it first - they made a mental leap, and determined that to acquire the apple, one needs to:

harvest_apple : apple
  while !sense_apple
    move_hand(observe_rel_pos(apple, hand)) 
  close_hand
  return pull_toward

Since this individual did it first, they should be able to receive money for every subsequent apple harvest that takes place on the Earth. This is the principle behind a software patent.

If software patents sound crazy, that's because they are. In too many cases, they prevent programmers from coding the obvious. It shows, too: the amount of litigation over software patents is simply astonishing. It's why Google bought Motorola for its patent portfolio. It's why Google's filing an antitrust suit against Microsoft and Nokia.

Yet the situation will be hard to change, as patents are worth a lot of hard cash, and no business wants to throw away most of its net worth. RIM's patents are said to be worth billions of dollars. Google bought Motorola for over $12bn, moreorless entirely for its patents.

Perhaps some common sense is coming to the situation. Kodak recently lost a case against Apple and RIM, where it was trying to enforce a patent around camera image previews. The judge threw out the case due to the "obviousness" of the patent. This case also highlighted the financial significance of these patents: Kodak's share price dropped 25% after the ruling.

This lunacy will have to reach a balance soon, between assurance of revenues on the one hand, and common sense on the other. At present, the only way companies can protect themselves is by investing billions in vast patent portfolios and expensive lawyers. A long term solution needs to involve more intelligence than this.

The supremely amusing factor in the Oracle v Google case was that the case concerned copyright and patents for Java. Up until only a couple of years ago, Java was owned by Sun Microsystems. Sun released Java under the GPL license to open things up to the community. Oracle bought out Sun in early 2010, and in just half a year, were taking Google to court for supposed infringement of Sun's patents. All this, even though Oracle's official position was only to use patents for defensive purposes.

It's really quite sad. Tarnishing an excellent reputation in just a couple of years, thanks to one company hell-bent on sapping R&D and replacing it with lawyers. How they could fail to realise that their existence depends on the developer community is mind boggling.  It's no wonder that the father of Java, James Gosling, has recently switched sides and joined Google. We wish him all the best.

There's been much dissatisfaction with Java 7, Java security, Java's falling behind other languages, and  plenty of other Oracle products of late. For example, think about Oracle's atrocious treatment of OpenOffice (which sat almost dormant, before the community branched off LibreOffice, and Oracle finally relinquished OO to Apache).

Oracle must stop pursuing quick monetary wins through unwarranted litigation, get back to developing their own software portfolio, and re-engage a battered, disillusioned and diminished community. Lest they slip and fall on their own sword.