I just read the Federal Circuit decision from last year in the NTP v. RIM decision. And if I’m reading it right (I should stress here that I’m not an expert on patent law) NTP’s patents covered a relatively broad class of wireless email services: more or less, wireless email systems in which the user could both view his email on a wireless device and download them to a desktop computer.
That’s simply ridiculous. Email has been around for more than a quarter century. Wireless technology has been around for decades. The idea of combining the two is blindingly obvious. (And it would have been pretty obvious even back in 1991, when the first NTP patent was granted) Once the technologies for wireless transmission of digital data became cheap enough to be cost-effective for consumer products, it was inevitable that people would exchange email with it.
In other words, once you’ve got wireless technology and an email network, combining the two is a “shallow” problem. It takes some engineering know-how to do, but it doesn’t require any great flashes of genius. This, I think, is true of virtually all programming tasks. The challenge in software development lies in managing the complexity created when you’re building a program that has thousands of components that must all work together. The best programmers are those who can make a program that’s more than the sum of its parts by organizing them in a particularly clever or elegant manner. But no one component by itself is an “invention.”
Imagine if, in 1920, somebody had tried to patent car radios. At that time, cars and radios were both well-known inventions, but (based on a very cursory Google search, at least) you couldn’t buy a car with a radio. The patent office, I assume, would have thrown the patent application out, ruling that combining two well-known devices in a common-sense way isn’t a new invention. It doesn’t take very much effort to think of the concept, and there’s no reason why someone should be able to extort money from everyone else who stumbles on the idea simply because he happened to think of it first.
Patent law requires that inventions be “non-obvious” precisely in order to prevent precisely that kind of extortion. The idea is that the inventor should have to expend a significant amount of effort developing the new invention before the invention will merit the protection of patent law.
But viewed from this perspective, virtually all software “inventions” are obvious–that is, they involve combining well-known components (albeit a large number of them) in common-sense ways. They only look non-obvious to non-programmers because the non-programmers aren’t familiar with the underlying components. Unfortunately, non-programmers tend to be the ones who make decisions in patent cases.