GNU 3

Turner Hall's website

The New 3

Being an advocate for Free, Libre, and Open Source software (FLOSS) over the years I never really reflected on the social implication of software freedom outside of issues like privacy and digital rights management which get the spotlight among free software “activists”. With recent events and discussions in certain corners of the programming community however, I’ve been forced to do some reflecting. Software plays a very real role in the lives of everyday people and can in many instances mean life or death. Software, like any other tool, can be portrayed as a completely neutral tool until it is used to harm others with its computations. Today, so-called “Free Software” is being put to use for organized repression, institutionalized murder, and other uncountable social injustices. Maybe not as much as nonfree software but enough to deserve serious reflection. When today’s concentration camps use GPL’d kernels and webservers on the machines which index their victims for abuse, is that really “Free Software”? Isn’t Free Software supposed to Free Society?

I want to reflect on the Free Software Definition and the “four freedoms” which compose it for a moment.

  • 0 - The freedom to run the program as you wish, for any purpose
  • 1 - The freedom to study how the program works, and change it so it does your computing as you wish.
  • 2 - The freedom to redistribute copies so you can help others
  • 3 - The freedom to distribute copies of your modified versions to others
  • (access to the source code is a precondition for 1 and 3)

Where is the loophole here? Is one of these four points flawed or is there an issue by ommision?

I think the issue lies with freedom zero.

The freedom to run the program as you wish, for any purpose

Anyone, good or bad, must be able run the program to do either harm or good at their own discretion for software to meet the Free Software Definition. Good and bad are fairly subjective outside the most rigid social norms (unless you want to lose an argument with any decent philospher). Harm, however, has a long history of definitions in law, ethics, sociology, and philosophy to draw upon so I think the best solution may lie there.

Andrew Feenberg in his philosophy of technology describes technologies such as gears, wheels, and screws as being politically neutral, whereas machines, with more complex inherently political designs, are comprised of many of these “politically neutral” parts put together. In other words, the smallest parts may be neutral, but when incorporated into a larger overall creation then the design can begin to be politicized. Gears, wheels, and screws do not have direct and political applications, they can only lead to something greater that necessarily does have politics if it is going to function with any kind of goal in mind.

Small software libraries and programs which when put together form larger systems are analgous to the gears, wheels, and screws in the above model. On it’s own a compression or networking library or program is not going to have politicized design. Larger projects, do, for better or worse have political designs with well-defined goals in mind. With freedom zero, any goal is allowed (“for any purpose”) and this leaves room for designs which are created for the purpose of harm.

Freedom zero was initially added to the free software definition in response to proprietary software and “shareware” or “freeware” in particular which allowed free access to run their closed-source programs with legal restrictions on usage which trapped innocent, individual users at the time. However, now that FLOSS is more prevalent then shouldn’t we take appropriate responsibility for our creations that that developers of proprietary software have often proven they are unable to use for the purpose of social freedoms? We are in a position to deny oppressors our tools which they use to strip the freedoms, livelihoods, and existences away from other human beings. We need to take responsibility. Free Software licenses need to be able to contain language restricting the use of such software for bodily harm at the very least (I would definitely want more expansive protections). Any code which has politicized design due to it’s sophistication with real world consequences should have protections from abuse in it’s applications (whether lower-level code needs the same protections is debatable).

There are a handful of software licenses I know of which do not meet the Free Software Foundation’s Free Software Definition and take social responsibility for its applications while meeting freedoms 1,2, and 3. But before that I want to mention a special mention for a nonfree license which does this, the Beloved Community License (BCLv1). The BCL is hardly comprehensive and uses “spiritual” language though (not sure that holds up in court, much less reality). Licenses which do improve on this take roughly the same concerns into account for the creation of a better world while also keeping code free. Some of them also have additional political motivations, but keep in mind that I do not strictly endorse any additional terms, it is just not very many licenses accomplish this so licenses which go a bit farther are sometimes the only examples. Some of these cover cases the others do not and have different approaches to ensuring social responsibility. I also try to avoid licenses which place the restriction on who is running the program rather than why they are running the program.

EDIT: I found someone else that keeps a better list of licenses that I will link to instead: List of Licenses for Freedom.

To conclude, if you really want to Free Society, then use the new 3 when defining what makes a free license (if you would excuse the very old, but GNU pun).

Freedom zero has to go.