Now we have a naive idea in our minds which I’m trying to get rid of, because it’s not true. And it’s that on any one product there is one patent, and that patent covers the overall design of that product. So if you design a new product, it can’t be patented already, and you will have an opportunity to get “the patent” on that product.
That’s not how things work. In the 1800s, maybe they did, but not now. In fact, fields fall on a spectrum of how many patents [there are] per product. The beginning of the spectrum is one, but no field is like that today; fields are at various places on this spectrum.
The field that’s closest to that is pharmaceuticals. A few decades ago, there really was one patent per pharmaceutical, at least at any time, because the patent covered the entire chemical formula of that one particular substance. Back then, if you developed a new drug, you could be sure it wasn’t already patented by somebody else and you could get the one patent on that drug.
But that’s not how it works now. Now there are broader patents, so now you could develop a new drug, and you’re not allowed to make it because somebody has a broader patent which covers it already.
And there might even be a few such patents covering your new drug simultaneously, but there won’t be hundreds. The reason is, our ability to do biochemical engineering is so limited that nobody knows how to combine so many ideas to make something that’s useful in medicine. If you can combine a couple of them you’re doing pretty well at our level of knowledge. But other fields involve combining more ideas to make one thing.
At the other end of the spectrum is software, where we can combine more ideas into one usable design than anybody else, because our field is basically easier than all other fields. I’m presuming that the intelligence of people in our field is the same as that of people in physical engineering. It’s not that we’re fundamentally better than they are; it’s that our field is fundamentally easier, because we’re working with mathematics.
A program is made out of mathematical components, which have a definition, whereas physical objects don’t have a definition. The matter does what it does, so through the perversity of matter, your design may not work the way it “should” have worked. And that’s just tough. You can’t say that the matter has a bug in it, and the physical universe should get fixed. [Whereas] we [programmers] can make a castle that rests on a mathematically thin line, and it stays up because nothing weighs anything.
There’re so many complications you have to cope with in physical engineering that we don’t have to worry about.
For instance, when I put an if
-statement inside of a while
-loop,
• I don’t have to worry that if this while
-loop repeats at the wrong rate, the if
-statement might start to vibrate and it might resonate and crack;
• I don’t have to worry that if it resonates much faster—you know, millions of times per second—that it might generate radio frequency signals that might induce wrong values in other parts of the program;
• I don’t have to worry that corrosive fluids from the environment might seep in between the if
-statement and the while
-statement and start eating away at them until the signals don’t pass anymore;
• I don’t have to worry about how the heat generated by my if
-statement is going to get out through the while
-statement so that it doesn’t make the if
-statement burn out; and
• I don’t have to worry about how I would take out the broken if
-statement if it does crack, burn, or corrode, and replace it with another if
-statement to make the program run again.
For that matter, I don’t have to worry about how I’m going to insert the if
-statement inside the while
-statement every time I produce a copy of the program. I don’t have to design a factory to make copies of my program, because there are various general commands that will make copies of anything.
If I want to make copies on CD, I just have to write a master; and there’s one program I can [use to] make a master out of anything, write any data I want. I can make a master CD and write it and send it off to a factory, and they’ll duplicate whatever I send them. I don’t have to design a different factory for each thing I want to duplicate.
Very often with physical engineering you have to do that; you have to design products for manufacturability. Designing the factory may even be a bigger job than designing the product, and then you may have to spend millions of dollars to build the factory. So with all of this trouble, you’re not going to be able to put together so many different ideas in one product and have it work.
A physical design with a million nonrepeating different design elements is a gigantic project. A program with a million different design elements, that’s nothing. It’s a few hundred thousand lines of code, and a few people will write that in a few years, so it’s not a big deal. So the result is that the patent system weighs proportionately heavier on us than it does on people in any other field who are being held back by the perversity of matter.
A lawyer did a study of one particular large program, namely the kernel Linux, which is used together with the GNU operating system that I launched.This was five years ago now; he found 283 different US patents, each of which appeared to prohibit some computation done somewhere in the code of Linux. At the time I saw an article saying that Linux was 0.25 percent of the whole system. So by multiplying 300 by 400 we can estimate the number of patents that would prohibit something in the whole system as being around 100,000. This is a very rough estimate only, and no more accurate information is available, since trying to figure it out would be a gigantic task.
Now this lawyer did not publish the list of patents, because that would have endangered the developers of Linux the kernel, putting them in a position where the penalties if they were sued would be greater. He didn’t want to hurt them; he wanted to demonstrate how bad this problem is, of patent gridlock.
Programmers can understand this immediately, but politicians usually don’t know much about programming; they usually imagine that patents are basically much like copyrights, only somehow stronger. They imagine that since software developers are not endangered by the copyrights on their work, that they won’t be endangered by the patents on their work either. They imagine that, since when you write a program you have the copyright, [therefore likewise] if you write a program you have the patents also. This is false—so how do we give them a clue what patents would really do? What they really do in countries like the US?
I find it’s useful to make an analogy between software and symphonies. Here’s why it’s a good analogy.
A program or symphony combines many ideas. A symphony combines many musical ideas. But you can’t just pick a bunch of ideas and say “Here’s my combination of ideas, do you like it?” Because in order to make them work you have to implement them all. You can’t just pick musical ideas and list them and say, “Hey, how do you like this combination?” You can’t hear that [list]. You have to write notes which implement all these ideas together.
The hard task, the thing most of us wouldn’t be any good at, is writing all these notes to make the whole thing sound good. Sure, lots of us could pick musical ideas out of a list, but we wouldn’t know how to write a good-sounding symphony to implement those ideas. Only some of us have that talent. That’s the thing that limits you. I could probably invent a few musical ideas, but I wouldn’t know how to use them to any effect.
So imagine that it’s the 1700s, and the governments of Europe decide that they want to promote the progress of symphonic music by establishing a system of musical idea patents, so that any musical idea described in words could be patented.