Free software and reusability

The rising popularity of the Free Software Movement and the open source philosophy have perhaps yielded an incomplete understanding of them in popular culture, that “open source” means merely “the code is public”. This is far from complete, and not just in an ideological sense but in a practical one. One of the common trip-ups I’ve seen is forgetting the importance of reusability, that free code should be free whether or not it’s part of the software that it came from.

One of the examples that I ran across recently is that of SugarCRM, which loudly advertises that it’s “open source” in its page title and marketing. This is true today; since 2007 the community edition of the software has been released under the GPL v3. But before then, the license they used contained the following requirement:

… all copies of the Covered Code in Executable and Source Code form distributed must, as a form of attribution of the original author, include on each user interface screen (i) the “Powered by SugarCRM” logo …

plus terms on the size of the logo and the fact that it must be a link. Not too onerous, you’d think, until you decide that you want to take some function for HTML text formatting or web form rendering or somesuch and incorporate it into MediaWiki, and suddently every page on Wikipedia needs to have a “Powered by SugarCRM” logo at the bottom of it. Worse, you could find some useful data structure for organizing e-mail addresses or something and try to incorporate it in your command-line e-mail client, and now you have a user interface screen with no way to display a “Powered by SugarCRM” logo even if you wanted to.

The sad part about this is that these aren’t restrictions that you’d ordinarily think about. Most news articles focused on the ethics of running a company using “open source” in advertising but with a significantly more featureful proprietary version. Some did realize that the license hurt your right to fork, since you’d always have to link to SugarCRM’s website (even if the company collapsed). But what’s really hurt by the inability to learn from and reuse the software is the community of free software development, the “creative commons”, if you will.

(As a side note, the Creative Commons organization is pretty good about respecting this, often under the name of remix culture.)

Debian’s Social Contract demonstrates an awareness of this concern:

We will give back to the free software community

When we write new components of the Debian system, we will license them in a manner consistent with the Debian Free Software Guidelines. We will make the best system we can, so that free works will be widely distributed and used. We will communicate things such as bug fixes, improvements and user requests to the upstream authors of works included in our system.

So, too, do the Free Software Foundation’s four freedoms, and the three tests for whether a particular license is free outlined in an FAQ for Debian’s Free Software Guidelines. Software with conditions on how you can reuse the code for other software isn’t really up to the standards of free software.

Another surprising example of forgetting to take reusability into account is the Free Software Foundation’s own GNU Free Documentation License. Most of the requirements are along the lines of free software licenses, but the GFDL adds the option to specify “front-cover texts”, “back-cover texts”, and “invariant sections” which cannot be changed in redistribution. You can see a typical example of this in the GCC manual, with one-line front-cover and back-cover texts, and an appendix called “Funding Free Software” as the invariant section. While this might help the FSF’s fundraising goals, it does mean that if I want to clip the two-line list of known bugs for a list of errata included with my distribution, or adapt GCC’s description of C99 hex floats into a slide for a class on C, I can’t get by with simply putting my errata list or my slide deck under the GFDL. I have to include the two cover phrases and the two pages on “Funding Free Software” somewhere in those documents, no matter how little of the source document I’m excerpting. Debian in fact considers GFDL-licensed documents with invariant sections not to be free. Surprisingly enough, one of the alternative proposals suggested that a satisfactory solution to the matter of invariant sections was the ability to counter their politics with a new invariant section of your own! While Debian picked the correct answer here, that there is insufficient difference between free software and free documentation that the latter should have different standards, it’s worrisome to see people completely forgetting the importance of free works being free to be reused in different works.

This is why the attitude of Debian project members who dislike the existence of Ubuntu, a distribution that regularly updates to the latest Debian packages for almost all its software, particularly bothers me. People interested in making a free distribution should want to see their work reused in other free systems. An attitude of a complete lack of interest in helping Ubuntu unless the problem can be phrased as helping Debian itself, or anger at people using e-mail addresses to contribute to Debian, shows that somehow the person is not quite committed to what it means to make a free operating system. In the words of Debian’s founder, “If Ubuntu is part of the Debian family, then we all win if Ubuntu is a success.” I don’t mean to say there aren’t valid reasons for only paying attention to one’s own direct work: one of those alluded to in the first link in this paragraph, a simple lack of time to understand systems other than Debian, is perfectly understandable. A couple of systems I maintain or know of at MIT, while technically free software, were written with so much of MIT’s infrastructure tacitly assumed at every step that bringing it even to another university is a nontrivial task. But this is something that we want to see, someday, when we have the time to generalize the system or can convince someone else to try.

Because people who develop free software and believe in the principles of free software should do so with not just an expectation but a hope that they will find their work reused in places that they never imagined.

11 January 2010