Oracle stunned the computer industry last night by suing Google over patent and copyright infringements relating to its Android mobile operating system.
The specific complaint alleges that Google infringed on 7 patents that Oracle acquired when it bought Sun Microsystems. The patents include one written by the "father of Java", James Gosling, who quit his VP position at Oracle in April.
The company also claims that its copyrights in "code, documentation, specifications, libraries, and other materials that comprise the Java platform" have been infringed. They want the court to enjoin Google and "persons in active concert or participation with it" (which seems to include all Android developers and companies in the Android ecosystem) from "continued acts of infringement of the patents and copyrights" at issue.
Oracle is asking for treble damages, citing Google's "willful" infringement. "Google has been aware of Sun’s patent portfolio," Oracle says in the complaint, "including the patents at issue, since the middle of this decade, when Google hired certain former Sun Java engineers." The engineers in question likely include Lars Bak, Robert Griesemer, and Frank Yellin, all former Sun employees who now work for Google on Java and Web browser technologies, and all of whom appear as inventors on one or more of the patents in question.
Given that Google's Eric Schmidt recently bragged that the company could bring in upwards of $10 billion per year thanks to Android, the possible damage awards are huge. So the question is, does Oracle have a leg to stand on with this complaint?
We're still going through all the materials (the full complaint can be found here) but at first blush the copyright part of the action seems to be the weakest part. The Android virtual machine is a complete clean-room implementation of something that is almost but not quite Java. Android uses the Harmony class library from Apache, which was not created using any source code from Sun. Google has not used Sun's Java coffee cup image, and in fact they take great pains to say that technically speaking, Android is not Java. So I'm at a loss to see where the copyright claims are coming from.
The patent claims may turn out to be another matter, however. Thankfully Oracle was kind enough to provide us with a list of the patents they say Google and friends are infringing. Here's the list, along with their listed inventors, if you'd like to do your own research:
- #6,125,447: Protection domains to provide security in a computer system; Li Gong
- #6,192,476: Controlling access to a resource; Li Gong
- #5,966,702: Method and apparatus for pre-processing and packaging class files; Nedim Fresko, Richard Tuck
- #7,426,720: System and method for dynamic preloading of classes through memory space cloning of a master runtime system process; Nedim Fresko
- #RE38,104: Method and apparatus for resolving data references in generated code; James Gosling
- #6,910,205: Interpreting functions utilizing a hybrid of virtual and native machine instructions; Lars Bak, Robert Griesemer
- #6,061,520: Method and system for performing static initialization; Frank Yellin, Richard Tuck
The technology in at least one of these, the '720 patent, seems to clearly be used in Android. When the OS starts up, it creates a process called the "zygote" and initiaizes the Dalvik Virtual Machine inside that process. Then it forks (clones) that process to create every other process that uses Dalvik. By doing this, new Android processes can start up much quicker than they otherwise could have, because it's a lot faster to copy the memory of an already started process than it is to execute all the initialization code.
Fortunately for Google, this trick has been around for ages, long before the '720 patent was filed. I remember first learning about it in emacs on Unix systems. After all your elisp code had been parsed and all your libraries loaded (which could take a dozen seconds or more), you could freeze a copy of memory onto disk. Later you start emacs quickly by loading the memory image from disk, making a few adjustments, and continuing execution from the point of the freeze in a fraction of the time.
The way the US patent system is currently set up, it's difficult if not impossible to write a sizable body of code without unknowingly infringing on somebody's patent. Your best hope seems to be to waste a lot of time filing as many patents as you can of your own, and hoping that anybody who sues you is unknowingly infringing on one of yours. That gives you a bargaining chip so you can do some kind of cross licensing deal. It's a stupid, wasteful, unproductive government-created system that achieves the exact opposite of what was intended when it was first started. But, what can you do.