09 03 | 2012

JSON License considered harmful

Written by Tanguy

Classified in : Homepage, Debian, Grumble, To remember


The JSON License may seem interesting, but it a bad license, both non-free and ambiguous: do not use it. If you are the author of a piece of software that uses JSMin or its PHP port, consider dropping that non-free part or at least rendering it optional.

The JSON license

Do you know the JSON License? It is a software license inspired by the MIT/Expat license with one additional morality clause:

The Software shall be used for Good, not Evil.


For novices that clause can be perceived as a good idea serving a noble goal. But the problem here is that is would make your software non-free.

Indeed, there are two common definitions of free software: the FSF definition, and the Debian Free Software Guidelines, also known as the Open Source Definition. Basically, both definitions indicate that to be free, a piece of software must be usable with no restrictions, and forbidding evil uses is such a restriction. Specifically, it violates:

  • the FSF's zeroth liberty: “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 DFSG/OSD sixth point: “No Discrimination Against Fields of Endeavor: The license must not restrict anyone from making use of the program in a specific field of endeavor.”


In addition to these incompatibilities to being free, this morality clause implies additional problems, the most important one being that it is ambiguous, which is very bad for a license clause: who exactly defines what is Good and what is Evil? If it is the author, then this clause could be used for arbitrarily forbidding any use; it it is the licensee, then this clause it as good as void.

Do not use it

For all these reasons, the JSON License with that infamous morality clause is not suitable for free software, so if you plan to use that license for your work, please consider these suggestions: 1. do not; 2. do not, really; 3. if still in doubt, refer to point 1. There are several standard free software licenses, the closest one being the MIT/Expat one, that you should consider instead.

Now, if you really want to be considered as non-free, and rejected by Debian, Red Hat/Fedora, Google Code and more generally any free software distributor, this is the way to go.

On thing worth noting is that this morality clause only annoys free software distributors, that are certainly not doing Evil, but will not prevent any evil person to do Evil things with your software. To encourage people to do Good rather than Evil, it would be better to formulate that clause as a suggestion rather than an order:

The Software should rather be used for Good, not Evil.

The JSMin case

This infamous JSON License is known to be used by JSMin and its PHP port. If you are a Web application author, be careful when embedded external content, since it can render you whole piece of software non-free! If you are using JSMin, I would suggest that you drop it, or at least make it optional by using a conditional (if JSMin is here, use it, otherwise do nothing) so that distributors such as Debian can expurgate that non-free part.


saturday 10 march 2012 à 11:37 anon said : #1

Please use GPLv3 instead.

saturday 10 march 2012 à 21:00 Rafael said : #2

What does json license rules over? Any implementation of json has to follow that license?

monday 12 march 2012 à 17:42 Anonymous said : #3

The ambiguity of that clause should make it unenforceable, so we should be able to simply ignore it, right?

monday 12 march 2012 à 17:48 Tanguy said : #4

@Rafael: No, of course not! Basically, I think the software written by the authors of JSON itself are under that license, plus JSMin. That is all I have seen so far, and I hope that will ever be.

@Anonymous: I do not think we can rely on ignoring clauses that may be impossible to enforce because they are ambiguous, to qualify a license as free. And ultimately, the will of the author when he chose that license is used to resolve ambiguities, and here, the will is clear: “do not use the software for evil” is meant as a restriction, which makes it non-free, in spirit if not in practice.

saturday 17 march 2012 à 19:34 Sven said : #5

If you keep in mind that 'shall' is nothing more than a strong recommendation, I don't think this sentence really makes the license non-free in the DFSG sense. It only states the wish of the licensor, not a strict requirement.

saturday 17 march 2012 à 21:13 Anton Piatek said : #6

I think it was perhaps the PHP libraries for JSON which had this license, and an IBM development team wanted to use it so contacted their IBM legal team. They requested, and got, a license with an exemption allowing IBM and their customers to be able to use the software for evil.

I work for IBM, and know how careful the legal teams there are about software licenses. The fact that they actually asked for a licensing change suggests that the license is broken for other people and not just FOSS use.

saturday 17 march 2012 à 21:21 Anton Piatek said : #7

cnet coverage of IBM asking for "use for evil" - http://news.cnet.com/8301-30685_3-10422338-264.html

thursday 24 may 2012 à 14:11 Skype Download Free said : #8

It is very good information.It is very helpful for me.You have done a great work.keep it up Thanks for shearing it.

tuesday 11 december 2012 à 11:07 Bastien ROUCARIES said : #9

Dear tanguy,

Could I get your authorization to copy this text to the debian wiki ?

I am implementing a lintian tag for this kind of problem and it will be really helpful

tuesday 11 december 2012 à 14:20 Tanguy said : #10

@Bastien ROUCARIES : Sure, as for all my articles on this blog, this one is under the CC-BY-SA 3.0 license. If this is not suitable, just tell me, I can make specific adaptations.

saturday 21 march 2015 à 17:00 really? said : #11

Too many people lack the moral compass to decide what "good" and "evil" are. That is why we are in a world preparing to destroy itself. Who is the ultimate judge? Clue: it is not Barack Obama, Hillary Clinton, Vladimir Putin, ISIS, Al Sharpton, Hamas or Hezbollah. If further explanation is required, you are part of the problem.

sunday 31 january 2016 à 05:10 Poop said : #12

@Sven in many countries "shall" is a command.

sunday 16 august 2020 à 20:53 Ernesto Sun said : #13

If moral statements would be such a no-go we could forget try making moral laws. More difficult than total nihilism, yes, but worth the job. I will always choose JSON over MIT.

wednesday 19 october 2022 à 11:00 epic gamer said : #14

"it's ambiguous"
i think that's the point dude

thursday 01 december 2022 à 15:06 Tanguy said : #15

@epic gamer: I am not sure, but it the point of that license is being ambiguous, this is a bad thing for a license.

Write a comment

What is the fourth letter of the word odjll? :