Yesterday I received a new serious bug report against Mono in Debian. For those not in the know, “serious” severity is release critical, and can trigger removal of a package from the distribution in order to make a shipping release (e.g. if Debian is in deep freeze, as is the case right now). Bug 692614 relates to a single source file, ./mcs/class/System.Web.Extensions/System.Web.Script.Serialization/JsonDeserializer.cs, which is part of the System.Web.Extensions assembly. This file was written in 2008 by an upstream Mono developer, and is based on some code from json.org – specifically JSON_parser.c and JSON_checker.c
json.org code carries a non-standard license. Specifically, it’s MIT/X11 with an added clause: “The Software shall be used for Good, not Evil.”
I’ve had some discussions with Mono upstream, and they believe that they have resolved the matter to their satisfaction – their solution will make its way into Debian soon. But in the meantime, let’s talk about the clause.
The Free Software Foundation’s Freedom 0 reads:
A program is free software if the program’s users have the four essential freedoms:
- The freedom to run the program, for any purpose (freedom 0).
The Debian Free Software Guidelines and Open Source Initiative’s Open Source Definition clause 6 reads:
No Discrimination Against Fields of Endeavor
The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.
It’s fairly clear that the JSON.org license clause goes against both of these, making any piece of software using that license neither Open Source nor Free Software. It is not distributable by any organization which mandates Freedom for its users – not in Debian, not in Fedora, not on Google Code. Anybody who cares about their users will reject a clause like this, because it has awful chilling effects.
Think it’s funny? It really isn’t. Who can use the code without being at risk of a lawyer knocking on their doors? Can the Catholic Church? The ACLU? Republicans? Democrats? Military contractors? Genetic engineers? Big pharma? Petrochemicals firms? Communists? Fascists? Mono developers? WikiLeaks? Without a clear definition of “good” and “evil”, people need to seriously consider whether they are safe to use the code – because if the developer and users’ interpretations of the terms differ, there could be hell to pay. Would you want to ship a hardware device – let’s say you’re making a smart TV – and have some developer of a library send his lawyers around to tell you “sorry, TV rots kids’ brains, it’s clearly evil” to get your entire distribution channel shut down by injunction?
It’s not an oversight, kids. Upstream are well aware of the pain this childishness causes anyone who takes software licenses seriously. They giggle about it at conferences, like tweenagers who think they’ve one-upped the adults in the room. This non-Free license is intended to mock people who take licensing seriously. In fact, one could easily categorise efforts to pollute the Free Software ecosystem with fake, non-Free software as evil, which would mean all JSON.org code fails to comply with its own license, due to shipping with its license (Inception, anyone?).
Before the jokers in the room claim that this kind of problem is deserved by Mono, let’s take a look at all the software in Debian which Douglas Crockford endangers with his childishness. PHP? OwnCloud? jQuery? You think Debian serves its users well by pulling jQuery from the next release in order to serve the ego of a man behaving like an eleven year old?
It is also interesting to note that the author of this “do no evil” clause works at PayPal. Read that twice, go and repair your irony meters, then come back.
In conclusion: thank you so VERY much Doug Crockford for making the world of Free Software measurably worse.