03:54 pm, 22 Dec 09
jsmin is not free software
JSMin has a non-free clause in its license: "The Software shall be used for Good, not Evil." The author of this addition clearly thought it was cute, but a license is no place for being cute; precluding evil is a simple violation of clauses five/six of the DFSG.
Allowing people to do things you disagree with is the whole point of free software, not just a minor quibble. See also Mark Pilgrim's great essay: Thank you for giving me the opportunity to explain this to you.
(When it comes to freedom, I side with Debian over the open source people or the GNU nuts. I think something like the third clause of the BSD license combined with a trademark for the book title (if he cared enough) would've been enough to address the issue invariant texts were meant to address in the non-free GFDL.)
Allowing people to do things you disagree with is the whole point of free software, not just a minor quibble. See also Mark Pilgrim's great essay: Thank you for giving me the opportunity to explain this to you.
(When it comes to freedom, I side with Debian over the open source people or the GNU nuts. I think something like the third clause of the BSD license combined with a trademark for the book title (if he cared enough) would've been enough to address the issue invariant texts were meant to address in the non-free GFDL.)
The worse part is that the author actually thinks his license is cute/clever, and instead of simply being reasonable and dropping the clause, he responds like a 6 year old.
Here is the fundamental problem: The copyright license, by its very nature, is not written in English, it is written in "Legal English". Terms used either have well established legal meanings, or they must be explicitly defined in the license text.
The terms "good" or "evil" do not have well established legal meanings (nor, to be honest, do they have well established and agreed upon universal meanings outside of the scope of the law). They are not defined in the license text.
What this practically means is that his clause is completely and wholly impossible for any recipient of the code to comply with, because there is no way to determine whether use of the code is "good" or "evil", as these terms are undefined.
It matters not what my definition of evil is, nor what yours is. In fact, the only definition that matters in this context is that of the copyright holder, and he has refused to clarify all possible uses that would be considered "good" or "evil", or even provide clarifying guidelines or boundaries.
What he has accomplished is this: He's written software that people like, and want to use, and by adding a poorly thought out joke, he has made it so that it is impossible to legally abide by his license terms.
Lets do a thought experiment (perhaps you may wish to revisit this when you're not high):
You decide that you wish to build a suite of applications around his JSMin code, confident that your actions are good, rather than evil, and thus, you do not need to worry about the clause in his license. Your applications become rather popular, and you form a company around selling these applications (the rest of the JSMin license permits you to do so). The JSMin copyright holder decides at some point that the act of you making money off of his work is evil and sues you for violating the terms of his license. Or, he decides that users who disagree with his political stances or evil. Or that Christians are evil. You should be able to see how this quickly descends into absurdity, but the license permits him to make that interpretation at will.
A reasonable individual when presented with these concerns, will work to resolve them, either by clarifying the legal language to make the code practically usable, or by removing the clause. Instead, the JSMin copyright holder takes great pleasure in having "tricked" or "trapped" various users (both individual and corporate) into not being able to use his code.
Does this cause me to lose sleep? Nah. I just think it's rather infantile of him.
And Clause 6... let's rewrite it: "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 doomsday device, or from being used for stealing money."
Instead they mention genetic research and legitimate commerce.
For instance, let's swap the use of "JSMin" with "gcc" in your hypothetical project, and assume I follow the license to the best of my knowledge in both cases. There's nothing technically preventing me from getting sued in either case.
In the case of gcc, I can still be sued for breaching the terms of the license - it's just fairly clear that I won't lose the case; what I'm allowed to do is well delimited.
With JSMin, it becomes up to a judge to decide what the intent of the evil clause is, and whether I violated it. That seems like a risk I might take if I felt the value I got out of the code was high enough, and I felt my chances of losing low enough.
I agree his lack of specifics on his definition of "evil" makes it hard to determine what's safe and what isn't. And that the whole clause is a little goofy. But, whatever. It's his code, he can be a dork about it if he feels like.
It would be up to a judge to determine the intent, but in general, courts defer to the intent of the copyright holder.
The whole reason that poorly written licenses are not a good idea is because of the fact that most judges do not understand software, much less FOSS. It is not safe to assume that the clause is unenforceable. A judge could easily say that you agreed to it, subject to its interpretation by the copyright holder.
If he wants others to be able to use his code, he should reword (e.g. replace "shall" with "should"), or drop that clause altogether. He refuses to do so, insisting that the clause, as worded, is correct. There is a place and time to be silly, and IMHO, a legal document is not that time and place.
Philosophical dialogue about what it means to be good or evil? Or squabbles about legal technicalia? I venture that he managed to stimulate zero valuable reflection – that there hasn’t been any music in the din he caused.
sometimes i just can't help myself
Yes, my unwitting minions! Do my evil bidding and render the JSMin unto me with your principled remonstrations! *cackles*Seriously though: Maybe he just enjoys absurdity more than generosity?
Him: "Ummmm, no?"
Him: "…That you're not allowed to use it for evil?"
Me: "Yes!"
Him: "Yeah, that's why we didn't use it."
Now that's looking out for the company's best interests!
really?
I googled "jsmin" to see what you were talking about. Couldn't this just be re-implemented in a few characters of sed? I agree with the principles behind the complaint over the silly statement in the license, but it's embarrassing to see such a commotion over such a trivial piece of software.Re: really?
Yeah, the Closure Compiler almost certainly does a better job of it. I think it's interesting only as a reference to think about.Re: really?
He uses this license on all of his code. Notably, someone wanted to include jslint which has the same license (and slightly more value).Also, JSMin has a nasty habit of getting bundled into other code, specifically because it is reasonably small and trivial.
Хороший блог!
Чёрт возьми! Круто! Вы Сами ответили. Беру в цитник! Смысл жизни и всё остальное. Решено. Без шуток. Журнал Ваш почему-то слабо продвинутый и малоизвестен. Советуем рекламировать Ваш ЖЖ с помощью программного продукта XRumer 7 Elite (ХРумер 7 Элите) получить можно на http://x-rumer.ru/ говорят хорошая программа для продвижения ЖЖ блогов.