Model Engineering College

Talk by Richard M. Stallman 

The Danger of Software Patents

Next  1  2  3  4  5  6  7  8  Previous   ]

       If the IBM were really prohibited from using all those ideas that were patented by others, so what I said is the harm that the patent system would do is ten times the benefit, on the average. Now, for IBM though, this harm doesn't happen. Because IBM does have 9000 patents and thus forces licences and cross-licences and avoids the problem. But if you were small, then you can't avoid the problem that way and you will really be facing ten time as much trouble as benefit. Anyway, this is why the big multinational corporations are in favour of software patents and they are lobbying governments around the world to adopt software patents and saying naive things like "this is a new kind of monopoly for software developers that has to be good for them, right ?"

         Well, today, after you have heard my speech I hope you understand why that isn't true. You have to look carefully at how patents affect software developers to see whether they are good or bad, and explaining that is my overall purpose.

        So, that is the possibility of licensing a patent. The third possible option is to go to court and challenge the validity of the patent. Now the outcome of this case will depend largely on technicalities, which means essentially on randomness. 

         You know, the dice were rolled a few years ago and you can investigate and find out what the dice came up saying and then you will find out you have got a chance. So its mainly historical accident that determines whether the patent is valid. The historical accident of whether precisely which things people happen to publish and when. So, sometimes, there is a possibility of invalidating. So even if a patent is ridiculously trivial sometimes there is a good chance of invalidating and sometimes there is not. 

         You can't expect the courts to recognise that it is trivial, because their standards are generally much lower than we would think are sensible. In fact, in the United States, this is been a persistent tendency. I saw a supreme court decision from something like 1954 which had a long list of patents that were invalidated by the Supreme Court starting in the 1800's. And they were utterly ridiculous like making a shape of  door-knob out of rubber when previously they've been made out of wood. And this decision rebuked the patent system for going far far away from the proper standards, and they just keep on doing it.

         So you can expect sensible results from that, but there are situations where when you look at the past record, you see there is a chance to invalidate a certain patent. It is worth the try, at least to investigate. But the actual court case is likely to be extremely expensive.

        A few years ago, one defendant lost and had to pay 13 million dollars of which most went to the lawyers on the two sides. I think only 5 million dollars was actually taken away by the patent holder and so then there were 8 million to the lawyers. 

         Now, these are your possible options. At this point, of course, you have to write the program. And there the problem is, that you face this situation not just once but over and over and over because programs today are complicated. Look at a word processor, you'll see a lot of features. Many different things each of which could be patented by somebody, or a combination of two of them could be patented by somebody. British Telecom has a patent in US on the combination of following hypertext links and letting the users dial up through a phone line. Now these are two basically separate things, but the combination of the two is patented. 

         So, that means if there are a 100 things in your program there are potentially some five thousand copairs of two that might be patented by somebody already and there is no law against patenting a combination of three of them either. So that's just the features, you know, there are going to be many techniques that you use in writing the programs, many algorithms they could be patented too. So there are lots and lots of things that could be patented and the result is that developing a program becomes like crossing a field of land mines. Sure, each step probably will not step on a patent, chances are it will be safe. But crossing a whole field becomes dangerous.

         The best way for a nonprogrammer to understand what this is like is to compare the writing of these large programs with another area in which  people write something very large symphonies.  Imagine if the governments of Europe in the 1700's had wanted to promote progress in symphonic music by adopting a system of music patents. So that any idea that could be described in words could be patented if it seem to be new and original. So you'd be able to patent, say your three note melodic motive which is too short to be but it would have been patentable and may they could have patented a certain chord progression and may be patented using a certain combination of instruments playing at the same time or any other idea that somebody could describe. 

         Well, by 1800 there would have been thousands of these music idea patents. And then imagine that you are Beethoven and you want to write a symphony. To write a whole symphony, you are going to have to do lots of different things and at any point you could be using an idea that somebody else has patented. Of course, if you do that, he'll say "oh! you are just a thief, why can't you write something original". Well Beethoven had more than his share of new musical ideas. But he used a lot of existing musical ideas. He had to, because that is the only way to make it recognisable. If you don't do that, people won't listen at all. Paebulus thought he was going to totally reinvent the language of music and he tried and nobody listens to it because it doesn't use all the ideas that they were familiar with. So you have to use the old ideas that other people have thought of.

         Nobody is such a genius that he can reinvent the entire field of software and do useful things without learning anything from anybody else. So in effect, those people were patent holders and their lawyers, they were accusing us of being cheaters because we don't totally reinvent the field from scratch. We have to build on previous work to make progress and that is exactly what the patent system is prohibits us from doing. We have to provide features that the users are accustomed to and can recognise where they'll find our software just too difficult to use no matter how good it is.

         Now, people sometimes ask me why is software different from other fields. Sometimes, of course they ask this in a rather nasty fashion, they say the other fields can deal with patents why should software be an exception ? Now that's a nasty way of putting it because its making the assumption that it is wrong to  want to escape from a problem. I could imagine I am saying when other people could  get cancer, why shouldn't you ? Clearly, if it is a problem, enabling any field to escape is good. But it is a good and serious question "are these fields in the same issue" ? The patents affect all these fields the same way ? Is the right policy for the software the same as the right policy for automobile engines or pharmaceuticals or chemical processes, you know, this is a serious question which is worth looking at. When you look at it, what you see is that the relationship between patents and products varies between the fields. 

         At one extreme you have pharmaceuticals were typically a whole chemical formula is patented. So if you come up with a new drug then its not patented by somebody else. At the other extreme is software were when you write a new program, you are combining dozens or hundreds of ideas and we can't expect them all to be new. Even in an innovative program which has the few new ideas has to use lots and lots of old ideas too. And in between you find the other fields. Even in other fields, you can get patent deadlocks. 

         When the United States entered the World War I, nobody in the US could make a modern airplane. And the reason was that modern  airplanes use several different techniques that were patented by different companies and the owners hated each other. So nobody could get a license to use all these patents. Well, the US Government decided that this was an unacceptable state of affairs and essentially, paid those patent holders a lump sum and said we have nationalised these patents and now everybody go make airplanes for us. But the amount to which this happens, the frequency and the seriousness of it varies according to how many different ideas go in one product. It varies according to how many points of patent vulnerability there are in one product. And in that question, software is at the extreme. 

         Its not unusual of for a few people working for a couple of years to write a program that could have a million parts in it, different parts which is maybe, say 300,000 lines of code. To design a physical system that has a million different parts, that's a major project, that's very rare. Now you find many times people make a physical object with a million parts, but its typically many copies of the same subunit and that's much easier to design - that's not a million parts in the design. Now, so, why is this ? 

         The reason is that in other fields people have to deal with the propensity of matter. When you are designing circuits or cars or chemicals, you have to face the fact that these physical substances will do what they do, not what they are supposed to do. We in software don't have that problem and that makes it tremendously easier. We are designing a collection of idealised mathematical parts which have definitions. They do exactly what they are defined to do.

         And so there are many problems we don't have. For instance, if we put an if statement inside a while statement, we don't have to worry about whether the if statement can get enough power to run at the speed its going to run. We don't have to worry about whether it would run at a speed that would generates radio frequency interference in it and induces wrong values in some other parts of the data. We don't have to worry about whether it would loop at a speed that causes resonance and eventually the if statement will vibrate against the while statement and one of them will crack. We don't have to worry that chemicals in the environment will get into the boundary between the if statement  and the while statement and corrode them and cause a bad connection.

         We don't have to worry other chemicals would get on them and cause short-circuit. We don't have to worry about whether the heat can be dissipated from the if statement through the surrounding while statement. We don't have to worry about whether the while statement would cause so much of voltage drop and the if statement so that the if statement won't function correctly. When you look at the value of a variable you don't have to worry about whether you've referenced that variable so many times that you exceed the fan out limit. You don't have to worry about how much capacitance there is in a certain variable and how much time it will take to store the value in it. 

         All these things are defined a way and the system is defined to function in a certain way and it always does. The physical computer might not function, but that's not the programs fault. So because of all these problems we don't have to deal with, our field is tremendously easier. If you assume that the intelligence of programmers is the same as the intelligence of mechanical engineers, electrical engineers and chemical engineers and so on, what's going to happen. Those of us with the easiest field, fundamentally, are going to push it further. We make bigger and bigger the things and eventually it becomes hard again. 

         And that's why we can develop much bigger systems than people in the other fields. They just have these hard problems to deal with all the time. 

         In the other fields, it may be necessary to develop an idea, you may have the idea but then you may have to try out lots of different ways to get it work at all. In software now, like that, you have the idea and what you go and do is write a program which uses this idea and then the users may like it or not.  And if they don't like it, probably you can just fix some details and get it to work. There is another problem that we don't have to worry about - manufacturing of copies.

         Well, when we put the if statement inside the while statement, we don't have to worry about how the if statement is going to be inserted into the while statement as a copy is being built. We don't have to worry either about making sure we have access to remove and replace the if statement if it should burn out. So all we have to do is take copy in its all purpose copy anything facility. People making physical recruitment and physical products they can do that these things has to be built piece by piece each time. The result is that for them, the cost of designing a system of certain complexity may be (gesturing ) this much and the factory may take this much to set up. So they have to deal with this much with the patent system, its a level of overhead they can live with. 

         For us, designing it may cost  (gesturing) this much and manufacturing it may cost this much, so this much overhead from the patent system is crushing. Another way to look at it is that because we can, a few of us can, make a much bigger system, there are many more points of vulnerability where somebody might have patented something already.

          We have to walk a long distance through the mine field where they they only have to walk a few feet through the minefield. So its much more of a dangerous system for us. Now, you have to realise that the extensible purpose of the patent system is to promote progress.  This is something that is often forgotten because the companies that benefit from patents like to distract you from it. They like to give you the idea that patents exist because they deserves special treatment. But this is not what the patent system says. 

         Patent system says, the goal is to promote progress for the society. By encouraging certain behaviour like publishing new ideas and after certain - originally that was fairly short - time, everyone could use them. Of course there is a certain price that the society pays as well and we have to ask the question which is bigger - the benefit or the price. Well, in other fields, I am not sure. I am not an expert on other fields of engineering, I've never done them and I don't know whether having patents is good for progress in those fields.

         I have been in software since before software patents existed and I know that software patents do a lot of harm and essentially no good. In the old days, ideas came along, either people in a university had an idea or somebody had an idea what he was working on developing a software. And either way, these ideas got published and then everyone could use them. Now why did the software publishers publish these ideas? Because they knew that the big job was writing the program. 


Next  1  2   3  4  5  6  7  8  Previous  ]
Model Engineering College, Thrikkakara, Kochi-21, India.