My Response to Bram Moolenaar's Vim Article

J.B. Nicholson-Owens

January 18, 2002

In the first issue of Free Software Magazine, Bram Moolenaar, author and maintainer of Vim, a highly capable vi clone, expressed his views on free software and discussed his choice of license for Vim. Vim may qualify as free software (although some clarification in the Vim license would be welcome), but Moolenaar's views on software licensing are not compatible with the philosophy of the free software movement. Moolenaar's article contains some misleading and incorrect descriptions of the GNU GPL. His statements make me wonder why they were included in a magazine dedicated to discussing free software.

Just prior to his flawed description of the GNU GPL, Moolenaar discusses his rationale for why he created the Vim license. Two points of concern for Moolenaar are proprietorship and commercial distribution; problems he noted that came into play with a derivative of Elvis, another vi clone.

One of these points is indeed incompatible with free software—proprietorship. Extending free software to produce a proprietary derivative is never acceptable to the free software movement for the same reason producing proprietary software outright is unacceptable—proprietary software robs us of the opportunity to help ourselves and our neighbors. Proprietary software does not grant us all the freedoms of free or even semi-free software.

Moolenaar's other problem with the Elvis license is that it allows commercial distribution of someone else's work. This is not a problem for the free software movement. Selling free software (including free software you did not write) can be okay. In fact the FSF encourages us to charge as much money as we can for redistributing free software. The 'free' in free software does not refer to price.

Moolenaar's motivations are particularly selfish. As he said in the license, source code to improvements of a distributed Vim derivative must be made available to the maintainer (Bram Moolenaar). The Vim license doesn't compel distributing this source code to the community nor to the person running the improved Vim. With the Vim license, under normal circumstances, the Vim maintainer is the only required recipient of the source code to distributed improvements. Moolenaar alone decides which improvements are worthy to be released to the community. Moolenaar sets himself up as the gatekeeper for improvements. Those wishing to make a proprietary version of Vim are allowed to do so, they merely need to coordinate their effort with Bram Moolenaar. This is considerably different from how the GNU GPL works.

Moolenaar says he didn't choose the GNU GPL because

[I]t restricts the changes you can make. That is, you can make changes, but when you distribute the modified software, you must make the modified sources available to everybody. Thus people are not free to keep these changes to themselves.

It is true that when you distribute modified GPL-covered software you must make changes available, but that does not mean you are prohibited from making private derivatives. If you want to keep your changes to yourself, simply don't distribute your derivative. The restrictions on what you may include in distributed GPL-covered work are there to preserve the software freedom of those outside the distributor's organization who receive a copy of the software.

The GNU GPL prohibits making proprietary derivatives, the GPL does not prohibit private derivatives. You can not modify GPL-covered code and distribute it minus the freedoms you had when you obtained a copy of the software. The GPL's strong copyleft prevents you from adding restrictions to the software's license when you redistribute or modify the software. It is an advantage of the GNU GPL that you don't have to go through a gatekeeper to get improved copies of the software.

Later in his essay, Moolenaar says he doesn't think all software should be free and open-source. It is surprising to read this admission in a magazine dedicated to free software because it seems to be deeply incompatible with the free software movement in two ways:

  1. The free software movement thinks all software should be free software. The freedoms of free software are desirable for all software. I should never be in a situation where I can't help my neighbor or my community by sharing software because some part of my software is not free.
  2. The free software movement is not the same as the open source movement. The two movements have differing and incompatible philosophies which makes them separate movements. Some members of both movements work on practical projects together, and some open source licensed projects are valuable contributions to the free software world. But the two movements are not the same.

Moolenaar raises a common question about how people would make a living from free software:

All people working on free software that I know somehow make a living out of commercial software, either with a full-time job or by studying to get a job later. Without commercial software, how would these people make a living?

Moolenaar confuses the terms 'commercial' and 'proprietary'; the free software movement is not an anti-commercial movement. I would answer his question in two ways:

  1. The free software movement is not responsible for determining how to make businesses profitable. Having a workable business plan is the responsibility of each particular business. The free software movement is fighting for greater societal software rights. It would be ridiculous to ask the NAACP to modify their stance against racial injustice because businesses find it hard to operate without a little discrimination. Racial equality is not something we prioritize below the world's business interests. The FSF is making a similar argument about software freedom—our freedoms to run, study, modify, and distribute verbatim or improved copies of software at any time for any reason are more important than (and compatible with!) the world's business models.
  2. That said, the FSF has a more direct answer to the question. People could make a living by custom programming free software. RMS has said in his speeches he once lived on money he made from writing GNU Emacs extensions. He charged hundreds of dollars per hour and he got work because people figured he could get the job done in the least amount of time. People could also make a living by selling free software. The FSF and others sell free software. When you buy a GNU/Linux distribution from vendors including Red Hat or Mandrake, you're buying some free software. Also, when you pay for a good or service from a business that operates on free software, you're helping make free software work.

Although the context of the thread was different, Russ Allbery made an excellent point on Usenet in <ylvgdvv06y.fsf@windlord.stanford.edu> that applies here too. Allbery argued that companies have been going out of business since there have been businesses; this is normal in a free market economy. It is the responsibility of each business to invent a viable plan and adjust that plan to the market in which they wish to do business. That means adjusting to the increased presence of free software with a strong copyleft—software that can't be embraced and extended away from the community. Businesses which are unable to compete in a free software world are going to go under. This is normal.

Contrary to Moolenaar's claim that [m]ost commercial[sic] software cannot be open-source, because a company would lose its advantage over competitors, proprietary software loses its advantage just by being proprietary. Free software offers something proprietary software can never offer—freedom. And built on that freedom comes an entire community of support, the depth of which could never be built around proprietary software because the only people who really know how the software works and have the opportunity to improve it are those who have a hand in developing it.

Moolenaar also notes:

Since software patents and copyrights are a very weak protection, keeping the source code a secret is still the best choice in most situations. Unfortunately, this means that you are not able to learn from how commercial software was implemented, or add a feature or fix a bug in the program you bought. A solution can be making most of the program open-source, and keeping a small but essential part a secret.

Software patents are wrong not because of their weak protection but because they stifle the growth of the entire software industry to benefit one person or organization. [ed. note: Software patents are neither protection nor are they weak. Software patents cut off an entire idea from development thus hobbling everyone for the benefit of a few. Furthermore the USPTO is incompetant in determining what software is non-obvious, they also hand out multiple patents for the same idea. I should have made these points more clear in the original lest anyone come away thinking I agree with Moolenaar's view on software patents. Read more about these points or listen and read about them. August 12, 2002] Software patents simply shouldn't exist. This too is another area where Moolenaar's opinion differs from that of the free software movement. Moolenaar's opinion works against free software development. Keeping a small but essential part of the source code a secret is no solution either. Nobody can tell where the bug, security threat, or privacy violation will be in a piece of software. What if the problem lies in the small but essential (and unfortunately withheld) part? You need the fundamental freedoms of free software for all of your software.

I obviously don't think Moolenaar's views about the ethics of free software are compatible with the free software movement, and he has misstated the effect of the GNU GPL on private derivatives. So naturally I wonder why his views were included in Free Software Magazine.

J.B. Nicholson-Owens consults using free software, writes free software and free documentation, and cares for cats.

Copyright © 2002 J.B. Nicholson-Owens. Verbatim copying and distribution is permitted in any medium provided this notice is preserved.