I thought I would give my perspective on the whole software patents debate. You’ve probably already heard about the software patent legal landscape forcing large companies to keep a war chest of patents to defend themselves against each other while making it a very unfair field for smaller players and less ‘evil’ companies with no interest in playing the game. This is all true and well known so I won’t rehash these ideas but rather talk about an aspect inherent and specific to software that enables all of this.
The act of writing software can be summarized as generating ideas and writing down these ideas in a language computers can understand and execute. Software programmers are in the business of writing ideas all day. This combined with the fact that the bar for ideas being patentable is very low means that programmers probably generate and write down multiple patentable ideas per day. From the get go they are inevitably setting up a huge patent minefield.
I don’t know if anyone has ever calculated the average density of patentable ideas in code, but if you consider, for example, that performing an online transaction with the last entered customer data (the infamous 1-Click patent) is patentable, I would very roughly estimate that there is a patentable idea every 20 to 50 lines of code.
As an example, the Linux kernel (just the very core of Linux) contains more that 10 millions lines of code. If you consider a complete Linux distribution (by adding the graphical user interface and a bunch of utilities) you get at least ten times that amount, that is more than 100 millions lines of code. Using the rough estimate above, we can calculate that there are more than 2 millions patentable ideas in a consumer operating system. That is an incredible amount of complexity. In fact, it is a testament to human ingenuity that we can (sometimes) get all this code to work together.
Now code is not used side by side like an infantry of little computer processes working in parallel to make computers or phones go. It is rather organised and packaged in a huge network of building blocks, a pyramid of hundreds of thousands of libraries, APIs or functions heavily inter-dependent on each other. What’s more, the building blocks are usually not all written by the same people or organisations and their consistent and stable behavior is critical for enabling compatibility (remember, often between millions of parts made by thousands of developers).
This hierarchical and networked architecture is inevitable and the best way to organise complex information, however the stability it requires at the bottom of the pyramid means that some building blocks cannot be changed once the pyramid is built. Someone claiming ownership of the shape of a bottom block after the pyramid is built, someone having the power to force a bottom block to be removed and replaced with a different shaped one, no matter how simple and obvious this bloc is, does not have power over just this block but over the whole structure above it and all the components that depend on it. This means patent holders have a disproportionately large amount of power when they target such a bloc. They know that changing it would require tearing down, redesigning and replacing often thousands of dependent projects and probably break compatibility for millions of users of these projects. It is usually simply not an option.
I believe that the rate of creating new ideas inherent in building software and thus the explosion of these ideas along with the exponential amount of potential interdependence between them, is the most important aspect making the current patent system not suitable for software.
By claiming ownership over a tiny idea, a patent holder can hold a huge proportion of the project hostage. In order to reestablish a sane balance of power, the patent system needs to be changed drastically and take into account the massively interdependent nature of software parts. It makes no sense to let people claim the shape of a tiny block at the center of the pyramid after the pyramid is built.
Other industries, such as aviation where airplanes are also built from very many components have the potential for similar issues but none have a rate of creation of new ideas even close to that of the software industry.
This problem needs be solved quickly because as technologies advance to become more and more complex and more and more interconnected, the drag on innovation will only get worst.