The following is an amalgam of several letters I sent to Richard Stallman, founder of the free software movement, expressing my concern about the direction GPL licensing is taking, and why I disagree with some of the objectives of the Free Software Foundation.
The following letter comes to you, Dr. Stallman, after twelve years of thinking about, and contributing to, free software. I hope you will recognize, from this, that I am writing solely out of my great love of programming and for no other reason.
I have had many years to consider the elements of your software philosophy. I think I understand the freedom you see missing in the world, and why you have chosen this particular path to seek it. I also think, now, that the means you have chosen will ultimately hurt the cause you champion, and this letter is my explanation why.
All productive effort begins with the mind. Thought is our resource against unreasoning nature. The thinker who makes his thoughts come alive in the world is mankind’s benefactor. Anything that would hamper or restrict his thought is man’s worst enemy. A world that does not think is only coasting on its past achievements; it has no future.
Every profession is but the technical side of making these thoughts a reality. Everyone, whether farmer or teacher or programmer, has an image in his mind of what he wants and uses his skills to make that image real. This trait is universal and is how mankind stays alive.
The great freedom you champion is the freedom of the mind to create. It must not be hampered or restricted – at the peril of life. However, there is a difference between the freedom of the mind and the freedom of the products of the mind. The one is alive and must be free to act; the other is inert and must be controlled to be useful, by the mind.
A pilot must have absolute control of his craft or else. The pilot is free, but his plane is not. If air traffic control, to do their job, thought they needed to control the pilot’s plane without his consent, they would quickly learn what a horrible mess results. But if each part is free, each in full control of its own part of the problem, even patterns of magnificent complexity are possible.
At one point, in your youth, you describe trying to fulfill your ideas in an atmosphere of incompetence and professional jealousy. You had good ideas, but they were hampered by the slowness of those around you and their unwillingness to make their work and ideas available to you. This is indeed a problem of today’s world: the lack of reasonable co-operation. I have also felt such frustrations.
When dealing with unskilled pilots, however, the answer is not to control their planes and what they do with them – it is to educate the pilots. Believing all companies to be unconcerned with co-operation, you have proposed a means, via the GNU Public License, to remove the software they write from their hands so that you may use it in yours. This is an attempt to shortcut the basic problem, but it will not lead to the world you want.
If you try to govern the fruits of another’s labor, it will initially increase the activity of those who know how to use those fruits; but in the end you will find the producers less and less willing to give you their products with nothing offered in return. Free software is in its heyday now, there is a lot to go around and a lot of people who know how to use it. Such energy surrounds every change, until the well its tapping from begins to run dry.
Free software benefits from the labor of a host of volunteers who believe in your vision: which is to turn the world of programming, and of programs, into their hands. That is the promise of all revolutions: To free the work of others from their owners’ control, in order to grant you the power to do what you want with it. It promises possession of the fruits of another’s mind without his consent, or else he must not produce at all.
Your mission began with a wish for freedom, but it will end with the minds of programmers yoked to the will of the majority. You will ultimately destroy the very freedom you are working toward.
In a society of free men, the programmer who writes code and the farmer who grows food must trade on equal terms in order for each to get what he wants from the other. Neither has any claim to fruits of the other’s work without trading for it. If the programmer had such a right, the farmer would be his slave; his love of farming abused by claiming a right its result without payment. The farmer, if he wants to go on farming, must do work on the side to continue providing for his master.
In your vision, a programmer is only paid for the ancillary work he does: training, customization, documentation. If eighty percent of his mind’s labor is spent making something complex enough that it needs training, why do you recognize only twenty percent of his work as valuable? You penalize him for his best thought. The more time he spends on his ideas, the less he deserves from society in return? There would be no reason for training or documentation if not for those ideas. They support the value of the rest; are you saying they have no value themselves worth paying for?
You encourage a society that feeds on the programmer’s mind without compensation, even forcing him to feed on himself – in the form of not programming some of the time – to continue his work. For the one who loathes programming, this is not so terrible, he wants to avoid it anyway; but it is an institutional prison for anyone who loves his work as a programmer and wants to do nothing but. You are working toward a society in which the one-hundred percent programmer cannot support his own life. The mind you wanted to free from incompetence will be sacrificed to it; the mind who loves his work will be unable to do it.
Your movement makes claims about reusability and sharing of ideas. You have nothing to reuse if I don’t write it for you. They talk about the freedom of ideas – at the cost of the mind who made them. They talk about the joy of programming in a free community. But it is a joy that cannot survive on its own, that must accept joyless things in order to provide that joy for others.
I think when you face a person who will not share his efforts with you on fair terms you must educate him. We must endeavor to educate society so that people realize the benefits of working together, trading effort for effort on equal terms. You cannot solve the problem by appropriating the products of one mind for the use of another. That is the dream of communism: To take money from the rich because the poor want to use it and don’t have any. For a programmer, the code he writes is his wealth, which he sells for currency in order to participate in society. Take that away from him and you force him either not to be a programmer or to die as one.
Without educating people, it is true that you will have to do everything by yourself. Not wage legal war and conquer others’ territories, but accept the fact that they will not co-operate with you and carry on without them. You may feel this is “hampering” your mind, but it is different. Your options may be restricted, but only by the limits of your own resources. Your choice of what to do with those resources is completely free. The world you propose, however, would remove even this choice, since the programmer would literally have to buy his time from society to do his job. And if he lacks the money and the willingness to live off his parents or anyone else? He will find that he has lost the choice to program, whatever his personal ability.
So let us do away with the GNU Public License. Let us realize the mistake, revert that code to the public domain, and set about teaching companies and programmers the benefits of co-operation under the terms of fair trade, and why they should not fear licensing their software at whatever value the market determines.
Fear of piracy, theft, deadly competition – these are the bugaboos responsible for your experiences of long ago. Companies hold their software and patents as if a monster were always lurking around the next corner. That is the war to fight: the war against ignorance. Education, not control. Show a man he has nothing to fear from you and he will help you; compel him to work for you without payment and you win only his body, not his mind. The mind is what you want freed. The road to its deliverance has always been through understanding.
To clarify, I want to program, not because another person wants me to and is willing to pay me, but because I love to program. When I use the word “programmer”, I refer to this kind of individual. And while it is true that I might accept a business proposal to write software, I am also willing to program in the absence of anyone’s personal interest in my idea. This has been my history.
So I enact my ideas in code, but now I need to live. I could go out and sell the idea, but you force me to do other work – perhaps related to the idea – until I’ve earned enough to pursue the next one. I disagree. If writing code is what I love, I should not be penalized by society for doing nothing but that – if I can find buyers afterwards willing to pay for the code I’ve written. I don’t want to train, write documentation, etc.; I am a programmer. The way I sell ideas is by contracting with interested parties via a software license; not a license on me and my future time, but on the results of the time I’ve already spent. Isn’t this what copyleft wants to prevent?
As I said before, you deny the 100% programmer – which is who I am. I don’t want to waste seven weeks of every year doing other things, whether you are willing to or not. I have the right to decide exactly how, and on what terms, to offer my code to the world, even if that means not offering it at all. Why is that once I’ve written it you should become part-owner? If I wrote it and deleted it the same night, would that be a crime? If you say copyleft only applies once I’ve published it, why? Why is there one point at which it leaves my ownership and becomes the possession of all? By your philosophy – and correct me if this is wrong – you want part title to my code the moment I type it out. Maybe I can charge if someone first asks me to do the typing, but if I type it for no other reason than wanting to see it done, I cannot charge for it later?
This is the freedom to create that you seem to want to deny. It would produce a world where a full-time programmer could only follow the paths dictated by his peers, because these are the only paths they’d be willing to pay him for. I could not, without turning to part-time work produce work that no one is presently asking for and then survive on its success – even if they all want it once I’m done and see how it works. Somehow, it’s supposed to be theirs now, and I’m the one responsible for defaulting on my electric bill?
The farmer analog is of course inaccurate. His produce can only feed a limited number of mouths. A programmer’s work, however, can potentially help all people who use computers at all times, far into the future. His works “keeps on giving” because he has sold the working form of an idea. How can you deny him the right to expect remuneration from society for this gift in equal measure? Where is the “poison” in that? I see only that you want the right to use something you did not create without rewarding its creator. Explain to me how this is not your purpose.
You might, in the end, denounce my argument as “the individual vs. the society”; and that private ownership of what one has done – whatever it is, in whatever form – is destructive to the good of society. I would say that society has always been a collection of individuals, and that if you denigrate the individual in favor of any conception of collective good, it will ultimately destroy to the very good you had hoped to achieve.
Yes, more and more free software is being written. That is not what I’m addressing. I refer to the pure programmer. If you push him out of the picture, the innovative quality of software – the range of scope of truly original ideas – will deteriorate. I don’t mean new ideas that come from teenagers avoiding their homework in college. I mean new ideas that come from experienced minds, deep and far-reaching ideas, that require months and years of labor without any interest from the public in the meantime. If you end the possibility of a financial payoff at the end of such an effort, you will end all such efforts.
Free software seems bright and rosy, but there are reasons, I believe, why there are few high-quality programs of an original character that have been developed at the expense of no one other than the programmer himself. Your “growing” free society is growing by feeding on the money and time of others: companies, parents paying for their children’s time, money earned by the programmer at another job, etc. It is parasitic, feeding off society’s wealth and unable to sustain itself. Look at your desktop offerings, the state of Guile, the lack of any modern build tools – all of these could be solved, easily. But until someone is willing to foot the bill, in advance, without payoff, they will not be written. Ever. Someone has to pay for your movement to continue; and if they are not willing to pay, the pure programmer cannot do what he loves to do.
Lastly, it is not copyleft I am arguing with. That is just another form of software license. You should have the freedom to license your software however you wish. If you decide not to charge, but instead ask others to make their changes public and available on the same terms – that’s just another form of payment. I can decide whether I want to add to your software on those terms or not – the terms you set in offering the software to me. I am still happy to contribute to Emacs on that basis, for example, because I consider Emacs enough of a joy that it is, to me, a fair trade.
What I object to is your desire to ultimately deny others the freedom to choose whatever license they wish. The GPL could not have existed in the first place if you yourself had not enjoyed such a freedom. But you don’t just use copyleft for yourself, you campaign that copyright is wrong, evil, “poison”. Your copyleft license can exist in my world, since you own what you do and can distribute it on whatever terms you wish; copyright cannot exist in yours. My policy is hands off; each to his own work, and let the market decide what society will pay for and what it won’t. I can survive on those terms.
But you want, if I understand you, to control the terms of licensing available to programmers. You said, “I am in favor of people’s freedom to control their own lives and to co-operate with others”; but your push for copyleft seems to say the opposite: You want to control their lives by dictating the available options for earning a livelihood, and by forcing them to co-operate with others at their own expense.
Can you explain to me how pushing copyleft, and removing my choice of licensing as a professional, increases rather than decreases my freedom to control my own life? You seem to me to be saying:
Software may be sold, but without restricting the right of the buyer to modify and redistribute the result – without having to pay his original distributor for the copies he makes.
Is this right? Or can I allow modification and redistribution, but at a charge, and it would still be free software?
If this is your basic position, you state that being able to sell software is evidence that it can be self-sustaining. From a strictly monetary standpoint, I cannot prove this to be wrong without making certain assumptions about the nature of society; just as you cannot prove it right without making the same kinds of assumptions.
I will continue the argument as though the right to modify and redistribute software cannot be charged for, since this would constitute a financial “restriction” of that right.
So, if a buyer exists who is willing to make the initial payment for a piece of software – or, if you are able to sell it multiple times before free distribution ends your customer base – you could, potentially, make as much money writing code as by proprietary software. Without buyers, you could not.
In other words, I could develop and sell software exactly as companies do now, but I would have no right to stop anyone from giving away copies of my software without paying me.
This means I could not rely on enough buyers, once the software had been published, to be certain the effort would pay for itself. Copyleft wipes out my potential customers by allowing distributors to give away my product – and charge for distributing it even – without paying me and without any development cost for them.
Thus shrink-wrapped distribution could not be relied on to pay for software development, as it does now. Selling licenses will not pay for it either – because I could only force payment for the first license. After the first, no one would be required to pay me.
The only thing that can reliably fund software development is something other than software. In other words:
Software cannot be guaranteed to pay for its development unless it is paid for up front.
There are a few implications of this I would like you to consider:
Full-time programmers who are currently funded by the code they write will cease to exist. Once they run out of money in the bank, they will have to turn to other funding or do other work. They cannot, as they do now, rely on software sales to make their living. This implies that:
Only software created by part-time programmers, or projects society is willing to pay for in advance, can exist. Since the people in category ‘a’ will die out, we fall on category ‘b’. Perhaps you see nothing wrong with this. Let’s carry it further:
If part-time programmers do not have enough time left over to work on an idea, and if that idea cannot attract funding in advance, it will never exist.
Is this OK with you? Are you aware how many programs are out there that only exist because their authors made an investment in the hopes it would pay off? That, and the existence of a government that requires people to pay them for their work, and not make copies for everyone else?
Do you really want to restrict the development of complex, new ideas to what the public is willing to pay for in advance, and what part-time programmers have enough resources left over to create? If so, you have far more faith in humanity’s fore-sight than I do. Just look at our history.
The above explains my fear, and the situation I see resulting from copyleft. It leaves the future of programming at the mercy of altruism, public desire and free-time. I believe such a society cannot develop as freely as America has, on the principle of rewarding inventors for their effort, and their sacrifice in the face of public disapproval.
You mentioned that I might invent something no one is interested in, and still not be able to survive as a programmer. Well, of course. I have no problem with that. I’m not asking society to guarantee me payment for anything; I accept this as a risk I’m willing to take. What I object to is your desire to remove all chance of a pay-off that is not guaranteed, or funded by other efforts.
If I create a piece of software that revolutionizes the world, I deserve to be made rich. That would be an appropriate reward for the corresponding benefit offered to society. A fair trade. I wouldn’t even mind offering people the restricted right to modify and redistribute my idea – so long as they pay me for having such an idea to modify and redistribute!
What you want is that once I release my idea to the public, to becomes public property. Anyone can change and distribute it freely. I may have saved one hour of every computer user’s life on the whole planet, but I am not to be paid in equivalent man-hours to research more ideas. If I save millions of hours for other people, it would be right to reward me with the funds to pay for supporting millions of hours of mine. In your world, however, the only thanks I get – assuming no one paid me to write my software in the first place, and no one was willing to pay me after I’d written it to see me publish it – is a pat on the back and the necessity now to return to my other job so I can repeat the performance. Is this just?
If this is the society you want, I think you are shooting yourself in the foot. If one of society’s members contributes such good, he should be given every resource to keep doing it. That’s what becoming rich is supposed to mean: Society is rewarding you for the value they recognize. You may suggest that now that I’m famous, others will be willing to fund my future efforts. That’s a big assumption. I think your society wants to use inventors as mules, driving them in the direction of their preference by controlling the purse strings. If one programmer bucks the trend and develops a fantastic new idea – well, it sucks to be him. His thanks is to return to his real job while everyone else starts copying his idea.
You said my argument is like a gangster justifying the right to take your purse. But a gangster gives you no choice. The whole point of capitalism is that you get to choose what you pay for – or don’t buy it. I feel more like the lady with the purse – which represents the earning potential of selling my software – and you want to make that purse disappear. This works fine for you, in your position. But I don’t think you’ve considered how it will affect all parts of society – and how it will not work for you in the future should it take hold. Again, look at the free software community with a close eye. There are a lot of things missing, and, I believe, good reasons why it still does not seriously challenge the consumer market after twenty years. You could say “give it time”, but there is no arguing that; my position would end with the same remark. The question is, if we give it time, what really will be the result?