Software is valuable. It can take years to write and helps perform valuable tasks. But why shouldn't software be patentable?
The basic reason is that ideas, such as mathematical formulas, can't be patented. But courts misunderstood what software is decades ago and now we have a mess - and this case.
Alice in wonderland
The absurdity of software patents is the point of the Alice case. Essentially Alice Corp. listed the steps of an escrow transaction and added the words "on a computer" and got it patented as a business process (which are also bogus).
The brief from Microsoft and friends seeks to draw a reasonable line between what Alice did and "real" software inventions. As an example they describe the evolution of the mechanical typewriter - and its many patents - to the electric typewriter and finally the word processor.
Functionality previously achieved through gears and levers—like proportional font spacing — was re-developed using software that provided instructions to computing hardware. Those digital improvements served the same function as, and were no less technologically innovative than, their mechanical forebears. Accordingly, the inventions were patentable.
This is the key mistake of the software patent problem: taking earlier mechanical inventions and re-implementing them in software is patentable. Where is the novelty that inventions are supposed to have? The non-obviousness? Those patents should never have been granted.
Here is their best effort to justify the imaginary line between software and abstract ideas:
When it comes to true computer-implemented inventions, however, a blunt or simplistic application of the “abstract ideas” exception poses grave risks. Software is heavily dependent upon the use of algorithms. And it is “clear that a process is not unpatentable simply because it contains a * * * mathematical algorithm.” . . . Where a software patent describes a practical application of an algorithm as part of a process that produces a technological effect or useful result on a computer — e.g., encryption, data compression, higher- speed processing — that should be patent eligible under this Court’s precedent.
But here's the kicker:
Regrettably, it may be very difficult for a lay judge, with little technical understanding of how computers actually operate, to discern the difference between the two. In such cases, expert testimony may be necessary to illuminate the technological principles at issue, and claim construction required to determine the precise boundaries (and actual preemptive scope) of the patent. Even then, it still may be difficult to determine whether the patent covers an “abstract idea” or not.
Translation: our expert witnesses will help the court validate our software patents doing things you can't understand. Trust us.
But there's a bigger problem: software is inherently an "abstract idea." That's the nature of computing.
The Turing machine
The basic nature of computers was described by Alan Turing in 1936. His "universal computing machine" is known today as a Turing machine in his honor and is "how computers actually operate." According to Wikipedia:
A Turing machine is a hypothetical device that manipulates symbols on a strip of tape according to a table of rules. Despite its simplicity, a Turing machine can be adapted to simulate the logic of any computer algorithm, and is particularly useful in explaining the functions of a CPU inside a computer.
Turing machines can execute any operation that a real program can because they model not any specific CPU, but computation itself. Our computers are all limited variations on a Turing machine.
All software is reading, writing and executing instructions to perform algorithms. Therefore ALL software is "some process" - like Alice's escrow - "on a computer."
All computer programs are lists of symbols that embody ideas, algorithms and concepts in a way that may provide value "on a computer."
What other common object is a list of symbols? How about a book? Or this post?
A book is useless - has no "technological effect or useful result" - until it is opened and read by someone who can interpret the symbols. I don't read Korean, so a Korean book is useless to me, except as a doorstop.
Nonetheless I can't simply reprint the Korean book and sell it because of copyright. Which is the protection every computer program should have. And, in fact, is the key issue in the current fight between Google and Oracle over the Java API.
The Storage Bits take
Software implements abstractions "on a computer." But US courts have mistakenly decided otherwise, so software companies spend big bucks on lawsuits when what we need is better software.
Computers enable wonderful things. But in their underlying architecture they are symbol-manipulating machines implementing logic that could be performed - albeit much more slowly - without them.
Therefore, nothing "performed on a computer" is an invention. Sure, give software copyright protection. Punish plagiarism.
But let's stop pretending that something "performed on a computer" is an invention. Congress should make that clear so we can get back to the real work of software innovation.
Comments welcome, as always. If you think software can be a patentable invention, give an example and say why.