
Summary
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.
Non-free
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.
Ambiguous
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.