Free Software and Time: a difference in philosophy with Richard Stallman

by Zed Pobre, January 7, 2005

Richard Stallman did an interview with KernelTrap that is a fascinating read. I agree with most of his philosophy, and am involved in the Free Software movement myself, partly through my contributions to the Debian GNU/Linux distribution, and partly through bits of code that I have written and released under the GPL. I reached one portion of the interview, however, that highlighted where I have to part ways:

Quoting Richard Stallman:
A non-free program systematically denies the users the freedom to cooperate; it is the basis of an antisocial scheme to dominate people. The program is available lawfully only to those who will surrender their freedom. That's not a contribution to society, it's a social problem. It is better to develop no software than to develop non-free software.

So if you find yourself in that situation, please don't follow that path. Please don't write the non-free program--please do something else instead. We can wait till someone else has the chance to develop a free program to do the same job.

A non-free program doesn't systematically deny the users the freedom to cooperate; it systematically denies the world the freedom to improve on it. It's a dead end path, and in many ways represents a lot of wasted human time spent redeveloping, re-inventing, or in the worse cases, simply out-waiting it until patents expire. The idea of absolute freedom as a virtue implied by what I quoted is also kind of a bothersome one; in actuality, we don't apply it to any of our other tools. If I am given a hammer, I don't have the freedom to use it to remove the nails in my neighbor's house, nor may I use it to violently strip off my own clothes in the middle of a busy elementary school, whether or not I'm careful not to hurt anyone while I do so. As a society, we don't want people to have that kind of freedom. So if it's given that some freedoms should be restricted by society, why then is non-free software a social problem?

There actually is a grain of truth to this assertion, and it has to do both with wasted time and human attitudes. When we make it more difficult for us to work together to advance human technology, whether it be via patents or copyrights and non-free software, or unpleasant contracts, we waste the time of every human interested in the fruits of advancement in that technology, and that time is sorely limited by lifespan. Worse, its not even necessarily limited by an individual's lifespan, but by the lifespans of all the people that the aforementioned individual wants to work or share things with. When you create an atmosphere that teaches people that it is not only allowable, but even a good thing to steal away the minutes of everyone else's lives for your own profit, you start twisting souls towards evil. That sounds somewhat melodramatic and mystical, but it has real meaning since one ignores the interconnectedness of things at one's peril; someone who starts down that slippery slope of greed may start becoming more and more careless with human lives, especially the ones that fall into the category of "nobody we know".

Unfortunately, this line of reasoning cuts both ways. A lot of proprietary software is significantly better than the best Free Software alternative available, and there are a lot of things that you can do with proprietary software that you just can't do at all with free software. Also, most proprietary software doesn't prevent the users from using it as a tool to build something free, and in many cases you can make a very strong argument that a lot of Free things would not be around without the presence of a proprietary tool. The biggest case in point on this matter is probably the Linux kernel itself. Linus Torvalds placed the main development of the kernel into the proprietary version control system BitKeeper, because no free version control system (and in fact, no other proprietary one that I know of) handles distributed development on the scale that the Linux kernel needs. Individual kernel developers aren't forced to use BitKeeper (and in fact, several major ones either refuse to do so, or are legally prevented from doing so — something I'll come back to in a bit), but what they submit through other channels will eventually end up organized inside it. Linus Torvalds, among others, has stated the opinion that the kernel could not have grown the way that it did without this software. Much human time has been saved, not having to wait for the operating system improvements that could not have been made as quickly without it.

This has not been without its price, however. Larry McVoy, the lead developer of BitKeeper, has been very aggressive about protecting the marketability of his creation, up to the point of prohibiting anyone working on a potentially competing revision control system from using the no-cost version of BitKeeper — and a commercial license is prohibitively expensive for an individual developer (the numbers are kept somewhat secret, but a leak from a couple years back showed the cost of an individual license at over $6,000 if I remember correctly). By deliberately preventing potential developers from learning from his example, he hinders (also deliberately) the development of better Free version control systems. This does have its cost in time to humanity — except that it has been minimized by the provision of a no-cost version of BitKeeper that almost everyone can use for the development of other Free software. Larry also made a very compelling justification on the Linux Kernel Mailing List for his somewhat heavy-handed tactics: he's not done developing yet. There are still a lot of things that BitKeeper can't do that he wants it to be able to do, and to be able to afford to keep developing it, he has to maintain marketability. If his company goes under, and he can't pay his fellow programmers, the people in the best position to provide those improvements to the public will be unable to do so. An attempt to demolish his business so that the world can better learn to make distributed version control systems is more short-sighted and destructive than the existence of even much less publically usable proprietary software

This is the fundamental justification for the continued existence of a lot of proprietary software, supported fairly solidly by the fact that Free Software seems to be utterly unable to keep up with a number of programs. There's no functional counterpart in the Free Software world to Adobe Premier, for instance. A number of mathematical or research tools (Matlab and it's various toolboxes, for instance, or Maple, or a variety of GSS tools) have no Free Software counterparts that come close to working as well as they do. OpenOffice.org is finally starting to catch up to what most people need from Microsoft Office, but doesn't have the integration ability with some of those research tools that I mentioned. The Gimp is a wonderful tool for basic image manipulation, but for professional work (or even advanced personal work), you'll need Adobe Photoshop, and probably some proprietary plugins as well. I'm even stuck on that last one — and it's a matter of time. I'm likely to be picking up Noise Ninja and possibly Adobe Photoshop to go with it (for the reparation of some of the more heavily damaged photographs), despite the fact that I despise Adobe as a company, because I have a lot of history tied up in old photographs that I really want to get scanned, cleaned up, organized, and preserved. If it were only for my personal review (and photographs lasted forever without damage), I might have time to wait for some of these tools to finally get written on the Free Software side, but it's not (and they don't), and I have neither the time nor the skill in this field to write such software myself. If I want to be able to share these images, repaired and cleaned, with my father or my two remaining grandparents, I have even less time. My family is getting old. I've already lost the opportunity with two of my grandparents.

The underlying problem is that developers who have to have full-time jobs unrelated to the building of software often have insufficient time to make really good programs -- even in the free software world where a few development hours a week can be multiplied by the efforts of a thousand programmers worldwide. I would absolutely love to be able to sit down and fix a lot of the weaknesses I've found in Drupal, the CMS I'm using for this site, or finish dealing with my C++ options parser or LDAP user management tools, but by the time I get home from work I'm often exhausted and burnt out on code and computer-related issues. This isn't just a personal issue; it affects a lot of people, as I understand it, and writing a large, well-polished application is both difficult and time-consuming. This means that often pushing an application (particularly one that doesn't have a large number of programmers in the target market) past basic functionality up to being useful and well-polished requires that someone pay a large number of programmers to do so, and one of the best ways to be able to do that is to have the resulting code be paid for by its users — and that requires a proprietary software model, as the Free Software model rapidly drives the monetary value of the software itself down towards zero.

There are of course exceptions, and business models that support the development of Free Software based on things other than the software itself (such as hardware or support contracts), but it remains true in the majority of cases.

By this reasoning, then, proprietary software does have a place alongside Free Software, as long as its use doesn't hinder the creation of Free materials more than it assists it. Unfortunately, there are a number of proprietary programs that do exactly that, either by adherence to proprietary data format (or more dangerously, extending a standard data format in a proprietary way), or by providing a completely proprietary build environment where even if you wrote Free software in it, it would be useless to the rest of the world because it would require that proprietary system to compile. The more subtle examples are also some of the more dangerous and pervasive: Microsoft Word supports exporting documents (minus some formatting) in standard formats, but stores its data natively in a proprietary format, and the fact that this format has been mostly reverse-engineered hasn't provided enough compatibility to let people choose freely between word processors on their merits without worrying about being able to share those documents with others. More poisonously, applications such as Scientific Workplace extend standard formats such as LaTeX in such a way that the documents cannot be reconstructed without the proprietary environment, but get to conceal that fact behind a format well known to be "Free". More dangerously, proprietary build environments such as IDL are catching on in academic environments (particularly in the field of astronomy), resulting in research that can only be easily verified inside of that same proprietary environment, if at all (compiler errors, difficult enough to catch even with Free compilers, are even more so with a proprietary compiler).

This, then, is where the focus of the Free Software community should be, and where I encourage programmers to take their stands. There aren't enough Free Software programming jobs available for programmers to just quit their jobs rather than work on proprietary software, but there are enough relatively decent companies available to avoid taking part in projects that really do deny users the freedom to cooperate, rather than just forcing the world to re-implement later. The majority of people in the world can't program, and proprietary software tools can be better than nothing in helping them contribute to their communities. If you are a programmer and want to help the world, quitting your job probably won't have that result unless you're working on a particularly destructive project as I described above. If you can spare the time to write Free Software, however, please do, particularly software that helps the propagation of open standards. Scratch your personal software itches, help fix other people's Free Software, or even just take the time to file descriptive bug reports or document things. Use Free Software when it's a viable alternative, and encourage others to do so, so that they know that it's possible.

But railing against the sheer existence of proprietary software is just a waste of valuable time.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Hammers

"If I am given a hammer, I don't have the freedom to use it to remove the nails in my neighbor's house, nor may I use it to violently strip off my own clothes in the middle of a busy elementary school, whether or not I'm careful not to hurt anyone while I do so. As a society, we don't want people to have that kind of freedom. So if it's given that some freedoms should be restricted by society, why then is non-free software a social problem?"

A better anology would be a sledge hammer. Lets say you buy a sledge hammer along with some fence posts and put up a fence. A week later you are putting up a different fence and the sledge you have is unweildy due to the design of its handle.

In the proprietary model, you are prevented from using your skills as carpenter to modify the sledge in anyway. So, what other tool works the same way as proprietary software? I can't think of any.

In addition, which hammer actively prevents you from comitting certain acts? I'm thinking of lawful acts here, but while we're at it, which tools stop you from commiting crimes?

The rest of your article is quite agreeabale.

Hammer analogy

The point was more that society places various accepted restrictions on freedoms on usage (by virtue of making certain actions crimes), and less that the restrictions on the use of hammers work exactly the same way as the restrictions on proprietary software. It's certainly fair to argue about whether one restriction or another is a good idea, but I am rebutting the idea that it is unacceptable to have to give up any freedom whatsoever in order to use a tool of any kind.

There are, in fact, tools with modification restrictions, however. Cars come immediately to mind: if I buy a car, there are limitations on how far I can modify it and still drive it on a public street. This is actually a fairly good analogy to proprietary software, since such software doesn't generally prevent you from modifying it locally (there are unofficial patches for many software packages), but only from redistributing it or (in the case of client/server style software) connecting to certain servers after it has been modified.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.