Monday, May 2, 2011

Software patents

Just wrote this for an online forum in an interesting class I'm taking: CS181, Computers and Ethics in Society. Thought I'd post it here, too. I've written about software patents before. If I had carte blanche to change just one thing about our laws, this would be it.

I think that software should not be patentable for three reasons.

First, software algorithms are inherently abstract and mathematical. One of the core ideas in computer science is the Church-Turing conjecture--that every computable algorithm can be implented on a Turing machine, or, equivalently, written as an expression in the lambda calculus. In that concrete sense, there can be no meaningful distinction between an algorithm and a mathematical expression. Since patent law only deals with "physical inventions", it currently relies on the distinction that software is encoded in a physical medium--for example, as bits on a hard drive. I think that this distinction is silly, since the object being patented is clearly the bits, not the hard drive. Don Knuth himself expressed that sentiment in his letter to the patent office.

Second, the status quo in patent practice provides large software companies with an unfair advantage. In particular, it helps large vendors of closed-source software. Since the Patent Act of 1832, inventors have been required to submit sufficient explanation of their device that another engineer could reproduce it. In the case of mechanical inventions, for example, they must submit detailed blueprints with the application, which become a matter of public record. This gives companies a fundamental tradeoff. They can keep their invention to themselves--as trade secrets. This gives them sole benefit of their R&D, but no legal protection if another inventor independently discovers it. Alternatively, they can file a patent. This makes their invention public, but gives them legal rights. I think that this tradeoff is important to the patent system's goal of promoting innovation: it gives inventors means and incentive to make their discoveries public.

This tradeoff is missing in software. I think that the most natural way to generalize the Patent Act requirements to software would be to require applicants to submit their source code. Instead, large vendors currently have their cake and eat it, too. They build portfolios of patents, often on algorithms defined in surprisingly vague terms. They keep all the associated code--if it even exists--closed, hindering others who would like to create "new or useful improvements thereon".

Third, software should not be patentable because software innovators do not need patents. On the contrary, they are hindered by patents. Patent law was designed for physical devices, under very different economic realities. Its purpose was to foster innovation. Physical inventions, in general, have a vastly longer development cycle than software. They must progress from an idea, to a protoype (at which point they become patentable), to a production run. Scaling to production is often time-consuming and expensive. If a small company is brining the device to market, it may take many years to bootstrap, reinvesting revenue in production capacity, before it achieves mass-market success. Physical devices have significant costs and delays beyond the initial R&D; the primary purpose of patents, as I understand them, is to protect inventors during this period. Larger, better-funded competitors shouldn't be allowed to steal their designs and outcompete them on production.

Software is a different world. The unit costs of software are essentially zero. I believe that being first to market with an idea is more than enough competive advantage to encourage innovation.

Not only do software patents fail to encourage innovation, they actively hinder it. This is primarily because of the risk and costs of patent litigation. How much does a patent case typically cost? This page summarizes the result of several inquiries into this question. While there is no consensus, the lowest estimates are roughly $1million. In the world of mechanical devices, such costs may be incidental. A car company, for example, might spend many orders of magnitude more than $1million setting up a production line. In the world of software, such costs can be overwhelming. Many software companies begin with signicantly less than $1m in funding. Google, for example, famously started with a $100,000 in angel funding from Andy Bechtolsheim. A poorly-timed lawsuit could have probably have destroyed what has since become a beacon of American innovation, even if the plaintiff's case was weak.

I think that the fact that software patents have the same twenty-year protection period as other utility patents is an indication of how out-of-touch the system has become with the realities of the industry. Twenty years ago, in 1991, "minicomputers" were large towers with significantly less power than a modern cell phone. The internet was a research project run by the US government and a handful of universities. Students were typing essays on electronic typewriters or writing them out by hand.

Imagine, for a moment, that Id Software had filed a patent on the world's first first-person shooter, DOOM. "A novel method of electronic entertainment, simulating combat from an individual perspective in a three-dimensional environment." This was a truly novel innovation with a working implementation--and therefore far more patentable, in my opinion, than many software patents which have been granted. GoldenEye, Duke Nukem, Half-Life, Grand Theft Auto, Bioshock, Halo, Call of Duty, Portal and countless other titles would not exist. Eighteen years of fast-paced innovation and relentless competition could have been prevented by a software patent.We could look forward to the second company ever to release a first-person shooter to do so in 2013.

I'll conclude with a quote from Id's founder, John Carmack.

The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.

I think that this summarizes my views nicely. Software innovation would be best served if software algorithms were explicitly excluded from the scope of utility patents, just as mathematical formulae already are.

No comments: