On Monday, the Supreme Court heard oral arguments in the Bilski case, which I’ve written about before. My write-up for Ars Technica is here. At issue in the case is which inventions are eligible for patent protection. The case is nominally about a method for hedging against risk, but the ruling is expected to have broad applicability for “business method” and possibly software patents. Software patents played a surprisingly large role in the argument. If you’ll forgive me for quoting myself:
Stewart [representing the government] argued that applying the machine-or-transformation test [for patentability] would not have changed the outcome of State Street, the 1998 Federal Circuit decision that opened the floodgates to both software and business method patents. This is surprising because State Street was the decision that introduced the Federal Circuit’s now discredited “useful, concrete and tangible result” test. But Stewart contended that the patent in that case, which involved using a software algorithm to manage mutual funds, would be approved under the new “machine or transformation” test the government is now defending.
That provoked a strong response from Justice Stevens, the court’s senior associate justice and its most fervent software patent critic. He noted that the patent in the State Street case merely took a standard computer and installed new software on it. “You can’t say that’s a new machine,” he said. Stewart insisted that installing a sufficiently innovative program on a computer could transform it into a new machine for purposes of patent law.
But Justice Breyer objected that this reasoning would undermine the government’s goal of limiting business method patents. “All you do is you get somebody who knows computers, and you turn every business patent into a setting of switches on the machine because there are no businesses that don’t use those machines.”
Justice Roberts asked about another hypothetical software case: whether you could patent the process of using a calculator to compute “the historical averages of oil consumption over a certain period and divide it by 2.” Stewart responded by drawing a distinction between a calculator with “preexisting functionality” to “crunch numbers” and a computer that “will be programmed with new software” and “given functionality it didn’t have before.” We’ll let readers judge for themselves whether this distinction makes any sense.
One of the things I love about writing for Ars is they let us mix a bit of editorializing in with our straight news coverage. But but I’d like to expand on that last comment. The Supreme Court said 37 years ago that mathematical algorithms are not eligible for patent protection. Ever since then, patent lawyers have bent themselves into pretzels trying to describe software in ways that evades this rule. They have been helped tremendously by the fact that most lawyers and judges have only the vaguest idea of how software works. So they can rely on distinctions that make intuitive sense to legal professionals without worrying too much if these distinctions make any sense in the real world.
In this case, Stewart seems to be suggesting that there are “mathematical” algorithms, and then there is software that’s something more than mathematics. I’ve never seen anyone give a coherent explanation of this distinction, but I think it relies on a basic sense that Newton’s method (say) can’t possibly be in the same category as Microsoft Word. The former is clearly a mathematical algorithm, while the latter is… something else.
This distinction simply doesn’t stand up to close scrutiny. The legendary computer scientist Donald Knuth explains the point well:
I am told that the courts are trying to make a distinction between mathematical algorithms and nonmathematical algorithms. To a computer scientist, this makes no sense, because every algorithm is as mathematical as anything could be. An algorithm is an abstract concept unrelated to physical laws of the universe.
If you examine Microsoft Word carefully, what you’ll find is that it’s nothing more than pile of mathematical algorithm encoded in a machine-readable format. To be sure, it’s an extraordinarily large pile of algorithms, and it performs some extremely useful functions. Moreover, Microsoft has cleverly engineered things so that the process doesn’t look mathematical to the average user. But the fact that the mathematics are “under the hood” doesn’t mean they aren’t there.
Stewart claimed that loading software on a computer transforms it into a new machine by giving a computer “functionality it didn’t have before.” This argument doesn’t withstand close scrutiny. Obviously, it’s true that loading software on a computer gives it functionality it didn’t have before. But this is little different than saying that setting my alarm clock causes it to perform a function—waking me up at a particular time—that it wouldn’t have done otherwise. We don’t say a set alarm clock is a different machine than an unset alarm clock. It’s the same machine with different settings. Programming a computer is exactly like setting an alarm clock except that the computer can handle dramatically more complex instructions. If setting your alarm clock doesn’t create a new machine, then neither does installing Microsoft Word on your computer.
As a programmer, I would say both Justice Roberts’ hypothetical oil calculation and your last argument about the alarm clocks are closest to the mark. I would avoid referring to programs as algorithms or that they have been ‘engineered’ to perform a task. Programs may -contain- algorithms, but at their heart they are simply a set of instructions, not substantially different from the example given by Justice Roberts. The calculator is a general-use machine just as a computer is a general use machine. I can give instructions to a human to crunch numbers on a calculator, and I can write instruction code for a PC to do the same thing automatically. I think the easiest way to express this is, you can patent the calculator or a CPU because they both require specialized manufacturing processes that are not mere instructions to perform a task. All software however, no matter how complex, are ultimately just step-by-step instructions. Anyone who argues, “but it’s how those instructions are put together that is patentable” is wrong because, as in Justice Roberts’ example, does dividing by two in a different point of the process really make it patentable?
Good news: apparently some on the supreme court are pretty informed about what’s actually going on here — especially from Stevens, about whom I will admit to have a certain stereotype of “old dude who knows nothing about technology.”
Bad news: that apparently it got through a large number of lower courts who couldn’t figure that “installing new software on a machine” makes it a patentable creation, or that all computer programs aren’t math.
Eh, phrased that badly, meant to say “does not make it a patentable creation.” Also, my opinion of the court’s technological savvy is probably only valid within the scope of my very low expectations.