Friday, May 18, 2012

To dispute infringement of Oracle's patents, Google contradicts its own source code comments and file names

On Tuesday, Oracle and Google made their closing arguments with respect to Android's alleged infringement of eight claims from two Java-related patents. On that basis, the jury started its deliberations. Later, Oracle and Google filed outlines of their motions for judgment as a matter of law (JMOL) concerning the patent part of the case. On Wednesday, they fleshed out their related arguments, and late on Thursday, each party responded to the other party's JMOL motion.

I was waiting for those pleadings prior to discussing here in detail what the key issues and the probabilities of different outcomes are. As we've seen in connection with Oracle's copyright infringement claims, the court can overrule the jury. Also, there was -- and still is -- a lot of discussion about the best way forward for this case in light of a partial jury verdict on copyright liability. Since the partial verdict on copyright, there has repeatedly been good news for Oracle. After Judge Alsup overruled the jury and declared Google liable for eight more Java files, he also dismissed a belated Google argument about the ownership and registration of the asserted copyrights, and the parties reached a court-approved agreement on the course of action with respect to copyright damages, a deal that essentially stipulates what Oracle had proposed.

The jury has continued its patent-related deliberations. For an update on that process, I recommend this ZDNet story. Basically, the jury has asked questions related to some of the disputed issues. Meanwhile, another juror (the one mentioned in the ZDNet story) has been discharged due to a cold, and the ten remaining jurors are now deliberating. [Update] Here's the next ZDNet story -- it looks like the verdict won't come down today. [/Update]

Whatever the jury decides, the party that does not prevail on a particular item will want Judge Alsup or an appeals court to overrule the jury. That's why the parties' JMOL arguments are going to be relevant beyond the forthcoming jury verdict.

Jury verdicts aren't really predictable, but one can look at the facts put before, and the legal explanations provided to, a jury, and then assess the likelihood of particular outcomes. Here's a summary of my take -- maybe just hours before a jury verdict will be rendered on this:

  • Not only was Oracle's case narrowed ahead of trial (only two of the five originally-asserted patents are now before the jury), but Google also lost some of its affirmative defenses. In particular, there's no more invalidity defense left with respect to the two patents-in-suit. That's very unusual, and significantly ups the ante for Google.

  • The issues that Google has raised in terms of whether or not there is an infringement under a proper application of the court's claim construction may create some confusion, but ultimately, Google's own source code comments and file names contradict its argument. If I were a juror, I would attach a great deal of importance to that.

  • I would be very surprised if the jury didn't hold at least some of the claims from the RE'104 patent, or "James Gosling patent", infringed, and less surprised (even though I would clearly disagree) if Google was cleared with respect to the '520 patent. Even though Google has raised multiple issues with respect to the Gosling patent, none of its arguments makes sense to me (I've done a fair amount of programming and authored books on programming techniques and operating systems). With respect to the '520 patent, there's basically just one issue, and while Google is wrong on that one, that one issue is more likely to confuse non-programmers than all RE'104-related issues combined. If those patent infringement claims were put before professional judges with a fair amount of experience in patent cases (such as the ones at certain German courts), on the same basis as in this case (same claim construction, no invalidity defense etc.), my probability estimate of an infringement finding would be 80%+ for the RE'104 patent and 70%+ for the '520 patent.

  • If any infringement is identified, the jury will have to decide on willfulness with respect to each infringed patent. Most of the arguments for and against infringement are equally applicable to both patents, but not all of them. for example, Tim Lindholm authored a book (a much lesser-known writing than the "Lindholm email") that described the technique covered by a predecessor of the Gosling patent. So here again, Oracle has a stronger case with respect to the Gosling patent. That said, this is the same jury the judge had to overrule with respect to Google's copying of eight decompiled files, and the same jury that couldn't reach unanimity to throw out Google's "fair use" fairy tale.

Implications of infringement verdict

The Gosling patent is claimed to be infringed by Android's Dalvik virtual machine, while the '520 patent is allegedly infringed by Google's dx tool, a program that converts Java bytecode into Dalvik executable (Dex) code -- but not by the Dalvik VM itself:

An infringement finding with respect to the Gosling patent would be much more valuable (in terms of damages) than one concerning the '520 patent. Since the Gosling patent will expire before the end of the year (while the '520 patent will be valid for a few more years), it's a now-or-never opportunity with a view to a patent injunction.

Google argues that neither patent should result in an injunction: the '520 patent because of its limited commercial value, and the Gosling patent because expiration is near. But those arguments can be turned around and held against Google. For the '520 patent, the argument would be that an injunction over an allegedly unimportant patent doesn't cause much harm: Google should simply work around the patent. For the Gosling patent, the fact that it will expire soon makes an injunction the only way to enable Oracle to still derive substantial value from it. For example, I've seen a judge at the Mannheim Regional Court argue that way at a Motorola-Microsoft trial in February.

I'm not saying that there definitely will be a patent injunction against Google if there's an infringement finding. In the United States, it's never easy to win an injunction. But Google's claim that a patent injunction can't happen here is only one side of the argument.

Details concerning the infringement of the "Gosling patent"

This is U.S. Patent No. RE38,104 on a "method and apparatus for resolving data references in generated code". The asserted claims are claim 11, claim 27, claim 29, and claims 39-41. On the USPTO website, the list of claims contains an error that looks like a word processing error or web server bug -- many of the claims end with "..Iaddend..Iadd". A bug-free version is available on Espacenet, a patent database operated by the European Patent Office.

On his personal blog, James Gosling pointed out (after the trial had begun) that "Google slimed Sun" with its unlicensed use of Java in Android, and put into perspective the things Jonathan Schwartz said in his testimony.

The patent relates to a more efficient way of resolving symbolic references. Simply put, if you run a program, the system executing it (in Android's and Java's case, the virtual machine) has to organize large amounts of data that the program creates, and when anything is done with and to such data, the virtual machine has to find it in a particular location. For that purpose, a symbolic reference has to be resolved in order to have the exact address in the computer's memory at the given time -- which will almost always be a different physical location than last time, even on the same hardware setup. The Gosling patent greatly accelerates this process. In Oracle's estimate, this technique enables performance gains by a double-digit factor.

The first non-infringement argument Google makes with respect to the Gosling patent (all of its asserted claims) is that Android doesn't resolve "symbolic references" because those contain field indices as opposed to being, for example, words like variable names. Google's argument amounts to hairsplitting. There's no reason why a symbolic reference couldn't also be a number -- as long as it's clear that it's not a physical memory location. The key thing is that the symbolic reference must be resolved in order to access data. That's what the patent is about. The patent is not limited to just one kind of symbolic reference.

In order to prevail on this point, Google has to basically argue that its Resolve.c file doesn't resolve anything, or at least that it doesn't resolve "symbolic references" contrary to what Google's own source code comments say in some other files about those field indices:

The second non-infringement argument is even weaker: it's about what the term "data" means in connection with the value of a resolved variable that is fetched. While most infringement-related arguments come down to the plaintiff seeking a broader construction and application than the defendant (and it's usually just the opposite for invalidity arguments), here we have case in which either party claims that the other party wants to "narrow" the meaning. Anyway, it appears that Android has an IGET function that indeed does obtain data within the meaning of the asserted patent claims.

Finally, with a view to claims 27 and 29, the infringement argument is all about the dexopt (Dalvik executable optimizer) component. Google argues that "dexopt resolves symbolic references statically rather than dynamically [as required by the patent]".

Terms like "dynamic" and "static" almost always lead to claim construction and application disputes. Here, Oracle wins if the jury (or, in the alternative, the judge) concludes that it's sufficiently dynamic for the purposes of this patent if a certain kind of optimization is performed while the virtual machine is already running -- it's not necessary for execution of the program code itself to have started. In a way, an optimizer is "dynamic" if it does its work again after, for example, a system update. It has to respond to some kind of changed circumstances. And that's what dexopt does.

Details concerning the infringement of the '520 patent

This patent is U.S. Patent No, 6,061,520 on a "method and system for performing static initialization".

I said before that there's essentially just one key disagreement between the parties that makes all the difference between the infringement or non-infringement of this patent. The parties disagree on whether or not the dx tool "simulates execution" of an intialization of an array.

The patent saves memory by simply aggregating all of the steps that are needed to intialize an entire array. Instead of a long series of initialization commands (item 1 gets value A, item 2 gets value B, etc.), it combines all of this in a more efficient way.

Google tries to apply an extremely strict interpretation of simulation, according to which a tool like dx would really have to do almost everything that would happen at runtime. Google argues that "pattern matching", as performed by the dx tool, isn't simulation. For example, it doesn't result in what is called stack manipulation.

In my view, it's perfectly logical for a simulator to simulate only those parts of a code segment that are relevant to the result that the simulation is supposed to deliver. If the purpose of a simulator is to calculate how much time a certain kind of operation needs, it may (or, depending on the circumstances, may not) have to do the closest thing to actually going through the entire operation. In this case here, the purpose of simulation is merely to figure out what effect all those initialization commands will ultimatly have, in order to then be able to aggregate them. That's what Google's source again states. Quite tellingly, the relatedd source code file is named "Simulator.java" -- still, Google says it doesn't simulate. Here's what the comments in that file say:

I'm really convinced that an efficient kind of simulation is still a simulation, but the potential for confusion is significant.

The jury's questions suggest to me that we should get a verdict either later today, or on Monday. It appears that the jury is done with the Gosling patent and working on the '520 patent. By the time I publish this post, it may already have moved on to the willfulness part (the last question on the patent verdict form).

If you'd like to be updated on the smartphone patent disputes and other intellectual property matters I cover, please subscribe to my RSS feed (in the right-hand column) and/or follow me on Twitter @FOSSpatents and Google+.

Share with other professionals via LinkedIn: