Prof. Jyothi John, Head of Computer Engineering Department introduces Stallman:
It's my privilege and duty to welcome the most distinguished guest ever we had in this college.
Mr. Richard Mathew Stallman launched the development of the GNU operating system in 1984, the goal being to create a completely free Unix-like operating system. The organisation that was founded in 1985 to further this purpose is the Free Software Foundation.
Stallman is a visionary of computing in our times, and is the genius behind programs such as emacs, gcc, the GNU debugger and more. Most importantly, he's the author of the GNU general public licence, the licence under which more than half of all free software is distributed and developed. The combination of GNU with Linux, the kernel, called the GNU/Linux operating system, now has an estimated twenty million users worldwide.
Stallman's concept of free software talks about freedom, rather than about price. His ideas g a long way into ensuring development of software for the welfare of society, collectively developed by programmers who do not "lock up" their work, but rather release it for others to study, modify and redistribute.
Stallman received the Grace Hopper award from the Association for Computing Machinery for 1991, in 1990 he was awarded MacArthur Foundation Fellowship - other recipients of this prestigious award include Noam Chomsky and Tim Berners-Lee. In 1996, an honorary doctorate of Technology from the Royal Institute, Sweden was awarded to him. In 1998, he received the Electronic Frontier Foundation's Pioneer award, along with Linus Torvalds. In 1999 he received the Yuri Rubinski Memorial award.
Today, Stallman will be talking about the danger of software patents. In fact this is one of the most important aspect of the freedom of programming because the aspect of software patents may make all programmers potential lawbreakers because unknowingly they may be violating some of the patents registered by some other company.
After that introduction, I am sure many of you want to know about Free Software. But unfortunately that's not what I am supposed to speak about. In fact, this topic, software patents, is not very closely related to the issue of Free Software. Software patents are a danger that affect all programmers and all computer users. I found out about them of course in working on Free Software because they are a danger to my project as well as to every other software project in the world.
There is a very unfortunate phrase that you may have heard. It is the phrase "intellectual property". Now, there are two things wrong with this phrase. One - it prejudges the most important policy question about how to treat some kind of ideas or practices or work. So, whatever it assumes that they are going to be treated as some kind of property. Now, this is a public policy decision and you should be able to consider various alternatives to choose the best one. Which means you shouldn't name the whole field, name the question with with a term that prejudges what kind of answer you use.
But second and and even more fundamental, that term is actually a catalogue for totally different areas of law including copyrights, patents, trademarks, trade secrets and various other things as well. Now these areas of a law in fact have almost nothing in common. What the laws say is totally different from one to the next. Their origins are completely independent and the public policy issues that they raise are completely different. So the only intelligent way to think about them is to pick one of them and think about it; think about them separately.
So the intelligent way to talk about them is never to generalise about them but to talk about a specific one, you know, talk about copyrights or talk about patents or talk about trademarks, but never lump them all together as intellectual property because that is a recipe for simplistic conclusions. It is almost impossible to think intelligently about "intellectual property" and so I refuse to do that. I just tell people why the term is a mistake and then if you ask me for my opinion on copyrights or my opinion on patents it will take me an hour to tell you it. But they are two different opinions and my opinion on trademarks is something completely different as well.
So the most important thing for you to start with is never mix copyrights and patents as topics. They have nothing to do for each other. Let me tell you some of the basic differences between copyrights and patents: a copyright deals with a particular work, usually a written work and it has to do with the details of that work. Ideas are completely excluded from it. Patents, by contrast - well, patent covers an idea. It's that simple and any idea that you can describe - that's what a patent might restrict you from doing.
Now, copyrights have to do with copying; if you wrote something that was word for word the same as some famous novel and you could prove that you did this while you were locked up in a room and you have never seen that novel, this would not be copyright violation because it's not copying. But a patent is an absolute monopoly on using a particular idea. Even if you could show that you thought of it on your own that would be considered totally irrelevant. It doesn't help you.
Now, copyrights exist automatically. Whenever anything is written, it is copyrighted. Patents are issued through an expensive application process. There is an expensive fee and even more expense in paying lawyers, which of course tends to be good for big companies and the patent office says that it only issues patents for things that are unobvious. However, practically speaking, in many patent offices the criterion is unobvious to somebody with an IQ of fifty. And they have all sorts of excuses to ignore the fact that whenever any programmer looks at it his first statement is, "this is absurd, it's obvious." They say, "well, this is hindsight". So they have an excuse to completely ignore the judgement of everybody who really is a programmer.
Now, copyrights last an extremely long time. In the US today it's possible for copyrights to last for a 150 years, which is absurd. Patents don't last that long; they merely last for a long time - 20 years which in the field of software, as you can imagine is a long time. Now there are many other differences as well. In fact every detail is different. So the worst thing you should ever do is to learn something about copyrights and suppose that the same is true of patents. No, more likely it is not true of patents. If it's true of copyrights, it's not true of patents. That would be a better guideline if you had to guess.
Now most of the time when people describe how the patent system works they are people with a vested interest in the system. And so they describe the patent system from the point of view of somebody who wants to get a patent and then point it at programmers and say, "hand me your money". This is natural, you know, when they sell lottery tickets they talk about people who win, not people who lose. Of course most of the people lose, but they don't want you to think about them and so they talk about the ones who win. It's the same with patents.
The patent system is a very expensive lottery for its participants. But of course the people who run the system want you to think about the small chance you might win. So to redress this imbalance, I am going to explain what the patent system looks like from the point of view of somebody who might be a victim of a patent. That is, somebody who wants to develop software. So, suppose that you want to develop a program and you were in a country that has software patents. How do you have to deal with the patent system.
Well, the first thing is you have to find out about the patents that might potentially affect your area. This is impossible, because patents that are in the pipeline being considered by the patent office, are secret. Well, in some countries they are published after 18 months but that still gives plenty of time for it to be secret. So you might develop a program this year, which is perfectly legal and safe this year. And then next year, a patent could be issued and all of a sudden you could be sued. It happens, or your users could get sued.
For instance, in 1984 the compress program was developed and since it was Free Software. It was distributed by many companies along with Unix systems. Well, in 1985, a US patent was issued on the LZW compression algorithm used by compress. And after a few years UNISYS began squeezing money out of various companies.
Well, since we in the GNU project needed a data compression program and since we could not use compress we began looking for some other compression program. We found that somebody came forward and said, "I have been working on this algorithm for a year and now I have decided I am going to contribute it to you. Here is the code". We were a week away from releasing this program when I just happened to see a copy of the New York Times , which doesn't happen very often, and it just happened to have the weekly patents column and I noted it and so I read it. It said that somebody had got a patent for inventing a new method, a better method of data compression.
Well, that was not in fact true. When I saw this I thought we'd better get copy of this patent and see if it's a problem and it turned out to cover exactly the same algorithm that we were about to release. So this program was killed one week before it was released. And in fact that person, that patent holder had not invented a better method because in fact it wasn't new, but that doesn't matter. He had a monopoly.
So eventually we found another compression algorithm which is used in the program that's known as GISA. But this illustrates the danger that you face: even if you had unlimited resources, you couldn't find out about all the patents that might endanger your project. But you can find out about the issued patents because they are published by the patent office. So in principle you could read them all, and see what they restrict you from doing. Practically speaking, though, once there are software patents there are so many of them that you can't keep up with them.
In the US there are over a hundred thousand of them; may be two hundred thousand of them. This is just an estimate. I know that 10 years ago they were issuing 10,000 a year and I believe it has accelarated since then. So it's too much for you to keep track of them unless that's your full-time job. Now you can try to search for those that are relevant to what you are doing, and this works some of the time. If you search for keywords or follow links you'll find some patents that are relevant to what you are doing. You won't find them all.
Now, a few years ago somebody had a US patent - may be it's expired by now - on natural order recalculation in spreadsheets. Now, what does this mean ? It means the original spreadsheets did the recalculation always from top to bottom. Which meant, if a cell depends on a lower cell, then it wouldn't get recalculated the first time. You have to do another recalculation to get that one. Clearly it's better to do the recalculation in the order, you know, if A depends on B then do B first and then do A. This way a single recalculation will make everything consistent.
Well, that's what the patent covered. Now if you search for the term spreadsheet you would not have found that patent because that term did not appear in it. The phrase "natural order recalculation" didn't appear either. This algorithm, and it was indeed the algorithm they covered basically every imaginable way of coding this algorithm. The algorithm is called topological sorting and that term did not appear in the patent either. It presented itself as a patent on a technique for compilation. So reasonable searching would not have found this patent but it would have been a reason to sue you.
In fact you can't tell what a software patent covers even roughly, except by studying it carefully. This is different from patents in other areas because in other areas there is some physical thing happening and the details of that physical thing usually give you a sort of anger so that you can tell whether it relates or not. But in software there is no such thing and so it's easy for two totally different ways of saying something to cover, in fact, the same computation and it takes careful study to see that they cover the same one. Because of this even the patent office can't keep track. So there is not one, but two patents covering LZW data compression. The first one was issued in 1985 and the second, I think, in 1989.
But that one had been applied for even earlier. One of this patent belongs to Unisys and the other belongs to IBM. Now, this kind of mistake is not in fact that rare. It's not the only one.You see patent examiners don't have a lot of time to spend on one patent. In the US they have an average of 17 hours per patent. Now that's not enough to carefully study all the other patents in the area to see if they are really the same thing. So they are going to make this kind of mistake over and over. So you won't find all the patents that might threaten you but you might find some of them.
So then what do you do? You have to try to figure out precisely what these patents prohibit. That is very hard because patents are written in tortuous legal language which is very hard for an engineer to understand. You are going to have to work with a lawyer to do it.
In the 1980's the Australian Government commissioned a study of the patent system. The patent system in general, not software patents. This study concluded that Australia would be better off abolishing the patent system because it did very little good for society and cause a lot of trouble. The only reason they didn't recommend is that international pressure. So one of the things they cited was that patents which was supposed to disclose information so that they would no longer be secret or in fact useless, for that purpose, engineers never looked at patents to try and learn anything because it's too hard to read them. In fact they quoted that an engineer saying "I can't recognize my own inventions in patents".
Few years ago an engineer in US named Paul Heckel was sueing Apple. He had a couple of software patents in the late 80's for a software package and then when he saw hypercards and looked at inside - this is nothing like my program. He didn't think any more of it. But later on his lawyer explained to him that if you read this patent carefully hypercards fell into the prohibitted area. So he sued Apple feeling this is an opportunity to get some money. Well once when I give a speech like this, he was in the audience, and he said "oh no that's not true. I just wasn't aware of the scope of my protection" and I said "yeah, that's what I said".
So you are going to have to spend a lot of time working with a lawyer and expaining to the lawyer what projects you are working on, so that the lawyer can explain you what are the patents employed. This is going to be expensive when you're done the lawyer will tell you something like this : "If you do something in this area you are almost sure to lose a lawsuit. If you do something in this area you are in a substantial danger and if you really want to be safe you better stay out of this area and of course there is a substantial element of chance in the outcome of any lawsuit." So now that you have a predictable terrain for doing business what are you going to do .
Well, you have three options to consider - you can try to avoid the patent, you can try to licence the patent, or you can try to challenge its validity in court. Any one these three is sometimes a viable alternative and sometimes not.
First let's consider avoiding the patent. Well in some cases that's is easy. You know Unisys was frightening people using the patent on LZW compression which is have to find another data compression algorithm or we can avoid that patent. Well, that was somewhat difficult because there are many other patents covering lots of other data compression algorithms. But eventually we found one that was not in the area that those others' patents cover, eventually we did. So that program was implemented. It actually gave better compression results and so we now have GZIP and a lot of people use GZIP. So in that one case it was, there was considerable work and we were able to do it to avoid that patent.
But in the 80's Compuserv defined an image format called GIF and used LCW compression algorithm in defining it. Well, of course once the uproar about the patent become known, people defined another image format using a different compression algorithm. They used GZIP algorithm and that format is called the PNG format which I suppose to mean that PNG is Not GIF.
But there was a problem: lots of people have already started using GIF format and there were many programs that could display GIF format and produce GIF format but they couldn't display PNG format. So the result was people felt it too hard to switch. You see when you are dealing with a data compression program used by somebody who says "I want to compress some data or you can give them a data compression program". If he can get sued for using this one and you give him another one he will switch.
But what you want to do is make images that can be displayed by Netscape, then he can't switch unless Netscape handles the other format, and it didn't . It took years, I think, before Netscape is started to handle PNG format. So people essentially said "I can't switch, I just have't" and so the result was the society had invested so much in this one format but the inertia was too great for a switch even now there was another superior format available.
So even when a patent is rather narrow, avoiding it can be very hard. Postscript specifications includes LZW compression which we and our implementation of a postscript cannot implement. We supported another kind of compression in some sense that's not correct even though it does the useful job. So even a narrow patent is always feasible to avoid.
Now, some times a feature get patented. In that case, you can avoid the patents by taking out that feature. In the late 80's the users of the word processor ZIRITE got a downgrade in mail. That word processor had a feature where you could define a short word or sequence as an abbreviation. Whenever you type in that short sequence and then a space it would turn into a longer expansion. You could define this anywhere you write. Then somebody patented this and ZIRITE decided to deal with the patent by removing the feature. They contacted me because in fact I had put a feature like that into the original Emacs editor back in the 70's - many years before that patent. So there was a chance that I could provide evidence would enable them to fight the patent.
Well, this at least showed me that I had at least one patentable idea in my life. I know of it because someone else patented it. Now, of course you can respond to these patented features by taking the features out. Once your program starts being missing several features that users want, it might be useless as a program.
Now you may have heard of Adobe Photoshop. We have a program called the GIMP which is more powerful and general than Photoshop. But there is a one important feature that it doesn't have which is pantom colour matching. Which is very important for people who want actually print the images on paper and get reliable results. This feature is omitted because it is patented. And as a result is that the program for one substantial class of users is crippled. If you look at programs today you see that they are often provide many features and what the users demand is features. If any important feature is missing, well, it is easy to leave it out. But the results may be very bad .
Of course, sometimes a patent is so broad that is impossible to avoid it. Public key encryption is essential for computer users to have privacy. The whole field was patented. That patent expired just four years ago, so they could dream now Free Software in the US for public key encryption. Until then many programs free and non-free were wiped out by the Patent Office. And in fact that the whole area of computing was held back for more than a decade despite strong interest. So, that is the possibility of avoiding the patents.
Another possibility that is sometimes available is to licence the patent. Now the patent holder is not required to offer you licence that's his. The patent holder can say "I am not licensing this, you are just out of business. Period".
In the League for Programming Freedom we heard in the early 90's from somebody whose family business was making casino games, computerised of course, and he had then threatened by somebody who have a patent on a very broad category of computerised casino games. The patent covered a network where there is more than one machine and each machine support more than one type and they can display more than one game in progress at time. Now one thing you should realise is the patent office thinks that is really brilliant. If you see that other people implemented doing one thing and you decided to support two or more. You know if they made a system that plays one game and if you make it able to play more than one game that's an invention. If you can display one game and you decided to setup so that display two games at once that's an invention .
If he get with one computer and you do it with network having notebook computers thats an invention for them. They think that these steps are really brilliant. Of course we in Computer Science know this is just a rule that we can generalise anything from one to more than one. So most obvious principle there is. So every time you write a subroutine that's what you're doing. So this is one of the systematic reasons why the patent system produces and then oppose patents that we would all say are ridiculously obvious. You can presume just because it's ridiculously obvious that they wouldn't be upheld by a court. They may be legally valid despite the fact that are stupid. So he was faced with this patent and the patent holder was not even offering him the chance to get a licence. "Shutdown!" - that's what the patent holder said, and that's what he eventually did. He couldn't afford to fight it.
However many patent holders will offer you chance of a licence. But it cost you dearly. The owners of the natural order recalculation patent would be demanding five percent of the gross sales of every spreadsheet and that I was told was the cheap pre-lawsuit price. If you insisted on fighting over the matter they would be charging more. Now you could, I suppose, sign a licence like that for one patent, you could do it for two, you could do it for three. For what I think twenty different patents for your program and each patent holder wants five percent of the gross sales. What I have said twenty - one of them disagrees, then you are pretty badly screwed.
But actually business people tell you that two or three such patents would be such a big burden that they would make the company fail. In practice, even if in theory, it might have the chance. So a licence for a patent is not necessarily a feasible thing to do and for us, the Free Software developers were in the worst position because we can't even count the copies and most licences domain in the field for copying so that's absolutely impossible for us to use one of these licences. You know, that if a licence charged one millionth part of a rupee for each copy, we would be unable to comply because we can't count the copies. The total amount of money that I might have in my pocket, but I can't count it so I can't pay it. So we suffers some special burden occasionally.
But there are one kind of organisations for which licensing patents works very well and that is the large multinational corporations and the reason is that they own many patents themselves and they use them towards cross licensing. What does that mean? Well, essentially the only defence against patents is deterrence, you have to have patents of your own. Then you hopes that somebody points patented you, you will be able point patent back and say "don't sue me, because I'll sue you".
However, deterrence doesn't work as well for patents as it does with nuclear weapons and the reason is that each patent is pointed in a fixed direction. It prohibits certain specified activities. So the result is that most of the companies that are trying to get some patents to defend themselves with. They have more chance of making a success. They might get a few patents that might get a patent that points there and they might get a patent that points there. And then if somebody over here threatens this company what are they going to do? They have a patent pointing over there, so they have no defence.
Meanwhile, sooner or later, somebody else who wander over there and the executive of the company will think "gee, we're not as profitable as I would like, why don't I like to squeeze some money out of them." So they say first to getting this patents for defensive purposes. But they often change their minds later when a victim wants to buy. And this by the way the reason why the fallacy in the myth that the patent system "protect" the "small inventor".
Let me tell the message in the myth of the starving genius. If somebody who's been working in isolation for years and starving and he has a brilliant new idea for how to do something or other. And so, now, he's starting a company and he is afraid some big companies like IBM will compete with him and so he gets a patent and this patent will "protect him". Well, of course, this is not the way of things work out in fields. People won't make this kind of progress in isolation is where you working with other people and talking with other people and developing software usually. And so the whole scenario doesn't make sense and besides, if there's such a good computer scientist there is no need for him to starve. He could have got a job at any time if he wanted.
But let's suppose this happened, and suppose he has this patent, and he says "IBM, you can't compete with me because I have got this patent ". But here is what IBM says: "well, gee, let's look at your product, hmm, I have this patent, this patent and this patent and this patent and this patent that your patent is violating. So how about a quick cross-licence?". And the starving genius says "hmm, I haven't had enough food in my belly to fight these things, so I better give in" and so they sign a cross-licence and now guess what .
IBM can compete with him - he wasn't protected at all. Now IBM can do this because they have a lot of patents. They have patents pointing here, here, here, everywhere. So that anybody from almost anywhere that attacks IBM is facing a stand-off. A small company can't do it but a big company can.
So IBM brought an artcle it was in Stink magazine, I believe issue number five of 1990, that's IBM's own magazine - an article about IBM's patent portfolio. IBM said that they have two kinds of benefits form it's 9000 active U.S patents. One benefit was collecting royalties from licences. But the other benefit, the bigger benefit, was access to things patented by others. From mission to not to be attacked by others but with their patents through cross licensing. And the article said that the second benefit was an order of magnitude greater than the first.
In other words, the benefit of IBM is to make it things freely, not being sued, was ten times the benefit of collecting money from all their patents. Now the patent system is lot like a lottery, in that the what happens with any given patents is largely around them and most of them don't get bring benefits of their owners. But IBM is so big that these things average out over the scale of IBM. So you can say IBM is measuring what the average is like. What we see is, and this is a little bit sudden, the benefit of IBM of being able to make use of ideas patented by others is equal to the harm that the patent system would have done to IBM if there were no cross licensing.
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.
They knew that publishing the ideas would get them credit from the community and meanwhile anybody else who wanted to compete with them would still have to write a program, which is the big job. So they typically kept the details of the program secret, of course some of us think that it is wrong, but that is a different issue they kept the details of the program secret and they publish the ideas and meanwhile the software development because software development is going on that provided the field with a steady stream of ideas so ideas were not the limiting factor.
The Limiting factor was the job of writing programs that would work and that people would like using. So, in effect, applying the patent system to software focuses on facilitating a thing which is not the limiting factor while causing trouble for the thing which is the limiting factor. You see the software patents encourage somebody to have an idea but at the same time they encourage people to restrict its use, so in fact we are actually worse off now in terms of having ideas we could use, because in the past people have the ideas and publish them and we could use them and now they have the ideas and patented them and we can't use them for twenty years.
In the mean time, the real limiting factor - which is developing the programs - this is hampered by software patents because of other dangers I explained to you in the first half of this talk. So the result is that while the system is supposed to be promoting progress in software actually it is so screwed up its just obstructing progress.
Today we have some economic research showing Mathematically how this can happen. You can find it in www.researchoninnovation.org and I am not completely sure of the name of the paper, but its one that shows that in a field where incremental innovation is typical. Having a patent system can result in slower progress. In other words the system produces counter intuitive results that are the opposite of what it was intended to do. This backs up the intuitive conclusion of every programmer who sees that software patents are absurd.
So, what can a country do to avoid this problem ? Well, there are two approaches, one is to address the problem at the issue of granting patents, and the other is to approach it at the point where the patents are being enforced. Doing this at the stage of granting patents is not quite as easy as you might think, now I have been talking about software patents but strictly speaking you can't classify patents into hardware patents and software patents because one patent might cover both hardware and software so in fact my definition of a software patent is a patent that can restrict software development. And if you look at many software patents you can often find that the system may describe has a large part of the computer itself as a part of the description of what's going on, that's a great way of making the whole thing seem complicated when it is really trivial. So its the way they can get the patent office to decide it is unobvious. But there is a different criterion that can be used, a slightly different place to draw the line that still does a reasonable job and that is between processes that transforms matter in a specific way and processes where the result is just calculation and display of information or a combination of data processing and display steps where others are put it as mental steps being carried out by equipment.
There are various ways of formulating this, but more or less equivalent. Now this is not exactly the same as prohibiting software patents, because in some cases computers are used as a part of specific physical equipment to make it do a specific thing. And software patents might be allowed if they are part of a specific physical activity. But that's not really a disaster, after all once people are involved in a specific physical activity or a specific physical product, they are bringing into their home business all those complexities of dealing with matter. So its more like those other fields of engineering, may be its okay to have patents on that narrow kind of software.
As long as we can keep the core areas of the software, the purely software activities safe from patents we have solved the bulk of the problem. So that is a feasible approach and that's what people are working towards in Europe. However that is not going to be any use in the United States because United States already has tens of thousands and probably hundreds of thousands of software patents. Any change in the criterion for issuing patents does not help at all with the patents that already exists.
So what I propose to the United States is to change the criteria for applying patents to say that purely software systems running on general purpose computing hardware are immune from patents.They by definition cannot infringe a patent and this way patents can still be granted exactly the way they are now and they can still in the formal sense cover both hardware implementations and software implementations as they do now. But software would be safe.
That's the solution I propose to the US, but it could be used in other countries as well. Now, one of the tremendous dangers facing most countries today is the World Trade Organisation, which sets up a system of corporate regulated trade - not free trade as its proponents like to call it, but corporate regulated trade. It replaces regulation of trade by governments that are somewhat democratic and might listen to the interest of their citizens with regulation of trade by businesses which don't pretend to listen to the citizens. So it is fundamentally antidemocratic and ought to be abolished.
But it is crucial to note that the part of the GATT agreement which deals with patents does not require software patents. Many experts who have studied this in Europe makes this claim and the reason is that they interpret technical affect as there is a specific physical consequences for physical system going on. And the software vector doesn't do that, doesn't have to be, in the domains that the patents can cover. So at least you don't have to worry about the Word Trade Organisation causing problems here despite the tremendous problems they cause in other areas of life.
Preventing India from software patents here will be up to you - to the citizens of India. I am a foreigner, I have no influence except when I can convince other people through the logic of what I say. There is a chance that you can do this. When US started to have software patents the public policy question was not considered at all. Nobody even asked whether it was a good idea to have software patents. The Supreme Court made a decision which was then twisted around by an appeals court and ever since then there was software patents.
But when Europe started to consider officially authorising software patents a few years ago, public opposition started to rise and became so strong that the politicians and the parties began paying attention to it. And started saying that they were against it. In fact two attempts to authorise software patents have been blocked already in Europe. The French Minister of Industry says that the software patents would be a disaster and under no circumstances should they be allowed in France. Over the German political parties have taken a stand against the software patents.
The battle is not yet over, you know, we have not conclusively blocked software patents in Europe because the multinational companies and their servant, the United States government, is lobbying very hard and they have ignorance on their side it is so easy for somebody with a naive near-liberal view to be persuaded that new kind of monopoly has to be good.
You have to look at the details of how software patents affect software development to see that they cause problem. You have to study that economic research in its Mathematics in order to see why you shouldn't assume that patents always promote progress. So it is easy for IBM to centre someone and say you should really adopt software patents, they are great for programming and look US is ahead in when US has software patents if you have software patents too you might catch up. You can get more dominant and - when US was ahead in computers before it had software patents, it can't be because of software patents. It is important to understand that each country has its own patent systems and its own patent laws and what you do in a certain country under the jurisdiction of that country's patent law. So the result is that if the US has software patents the US becomes a sort of battleground where anybody using computer might get sued.
If India avoid software patents then India is not a battleground, and computer users in India do not face this danger of getting sued. So it turns out that each country will issue patents to foreigners just as to its own citizens. So in fact in a place which has this idea of software patents foreigners can own those patents there are lots of non-US companies that own US software patents so they all welcome to get involved in the fighting in the US. Of course is we Americans to suffer become the victims of this. Meanwhile in India if there are no software patents that means Indian companies and foreign companies are prevented from coming to India and attacking people with software patents.
So, yes it is important that each countries has its own patents for that makes big difference but you can't understand what difference it makes. Having software patents in a certain country is not an advantage for developers in that country. It is a problem for anybody distributing and using software in that country. Now, if you in India are developing a program for use in US you may face the problem or your client may face the problem of US software patents. At least probably you can get sued here.
The client who commissioned the program and tried to use it might get sued in the US and indeed you will have to deal with the problem, the US is problem when you try doing business in the US. But at least you will be safe here you know at least it is a big difference between your client got sued because your client told you to make a product and that product is patented versus you get sued for making that product.
If there are software patents in India you will get sued. Wheas in the current situation at least you can say to the client "well, we did our job you told us to make this and we made it and so, I am sorry this happened to you but this is not our fault." If there are software patents in India you get sued yourself and there is nothing you can say about that.
So the ultimate conclusion is that software patents tie all software developers, all computer users and essentially all businesses in new kind of bureaucracy which serves no beneficial social purpose. So that is a bad policy and it should be avoided. Businesses don't like bureaucracy. If businesses knew that they were threatened with a new kind of bureaucracy they would have opposed software patents very strongly. But most of them aren't aware of this.
In the US software patents have led directly to business method patents. What does this mean? A business method is basically haw you make decisions about what to do in the business. And in the past these decisions were made by humans but now sometimes they are made by computers and that means they are carried out by software and that means decision policies can be patented. So software patents implied business method patents and business procedure patents. So the result is that any business could find itself, you know, once they decide "we're going to automate the way we carry out our procedures" but now they can get sued with software patents. So if the businesses only knew they would be organising through things like the chamber of commerce to demand opposition to software patents.
But most of them don't know and therefore it is going to be your job to inform them. Make sure that they understand the danger that they are facing. And then India may be able with the help from other countries like France and Germany to reject software patents. It is important for the people in the Indian Government to make contact with officials in European countries so that this battle against software patents doesn't have to be fought at one country at a time, countries can work together to adopt an intelligent policy. May be there should be a no software patents treaty that various countries can sign and promise each other aid when they are threatened by economic pressure from the United States as part of its economic imperialism.
Because United States likes to do that, you know, one of the provisions in the GATT agreement is that the countries have the right to make compulsory licenses for making medicines to address a public health crisis. And the South African Government proposed to do this for medicine against AIDS. South Africa has a very bad problem with AIDS the figures I heard was that a quarter of the adult population is infected. And of course, most of them can't afford to buy these medicines at the prices charged by the US companies.
So the South African Government was going to issue compulsory license which even under GATT is allowed to do, but US Government threatened economic sanctions. Vice President Gore was directly involved with this and then he'd be facing the presidential election he realised that this was going to look bad and so he dropped out of the effort. But this kind of the thing is what the US Government does all the time with regard to patents and copyrights. They only mind if people get patented to death. So it is important for countries to work together against this.
For more information about the problems of software patents see www.programming-freedom.org and www.ffii.org. And there is also a petition to sign, www.knowepatents.org.
Please talk with all executives of businesses - any kind of businesses - about this issue. Make sure that they understand the extend of the problem they face and they think of going to business organisations to have them lobby against software patents.
Oh, by the way any journos over here, I would recommend writing articles about software patents separately, from articles about free software. If you cover them in one article together, people may get the idea that software patents are only bad for the free software developers and they are okay for other software developers.
This is not true, if you think back of what I have said, hardly any of it relates to the question of whether the programs are free or not, the dangers of the same for all software developers. So please don't take the risk, the people will get confused, write separate articles.
Note: At this point, there was a short blackout, and both the recording and the transcript is incomplete here.
Return to GNU's home page.
Please send FSF & GNU inquiries & questions to [email protected]. There are also other ways to contact the FSF.
Please send comments on these web pages to [email protected], send other questions to [email protected].
Copyright (C) 2001 Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
Updated: $Date: 2007/02/07 02:35:32 $ $Author: mattl $