Last week, Google banned my PHP port of JSMin from Google Code due to a quibble over a line in the license stating that “The Software shall be used for Good, not Evil”, which they believe makes the license non-free. When I asked Google’s Chris DiBona whether all Google Code projects including JSMin would be subject to bans due to this clause in the license, he replied, “Sadly, yes”.

Today, Etherpad (which was recently acquired by Google) released their source code on Google Code. Unfortunately, their source tree contains at least two different JSMin ports (one in JavaScript and one in Python), thus making Etherpad non-free and violating Google Code’s terms of service. I’ve notified Google via an email to the Google Code mailing list.

I bring this up not because I have anything against Etherpad or Google Code, and not because I want to start a fight, but because it demonstrates the slipperiness of the slope Google launched themselves down when they banned jsmin-php last week. While I may disagree with their interpretation of the JSMin license as non-free, Google is certainly within their rights to refuse to host it. However, since JSMin is so widely used by so many open source projects, Google now has to choose between banning popular, high profile projects (including their own) or applying their rules selectively and thus promoting a double standard.

So what will it be, Google? Will you remove JSMin from Etherpad, ban Etherpad, or just be—dare I say it—evil and ignore your own rules when they’re inconvenient?

If you need a new host for the Etherpad project, the lovely folks over at GitHub don’t seem to have any problem hosting JSMin.


Update (2009-12-18): Chris clarifies: “As a side note, it’s not a matter of violating the terms of service, which don’t mention specific licenses, it is against our practices, though.” I’ve updated the title of this post accordingly. Chris has also asked the Etherpad maintainers to remove JSMin, which seems to indicate that Google is going to do the right thing and follow their own rules. Admirable!

Update 2 (2009-12-18): There are several other Google-sponsored projects that fall afoul of this ban as well:

Comments

check this :
http://code.google.com/p/v8/source/browse/branches/bleeding_edge/tools/jsmin.py

this is only python code, but i’m pretty sure it is very easy to port it to javascript.

Gravatar icon
Jérémy Lal
Saturday December 19, 2009 @ 12:04 AM (PST)

Thanks for the link… tis bookmarked!

Gravatar icon
Saturday December 19, 2009 @ 01:16 AM (PST)

So now we have two destroyed projects instead of one. What have you accomplished here except crippling EtherPad?

Gravatar icon
Fredrik
Saturday December 19, 2009 @ 02:17 AM (PST)

Something worth looking at. Kinda like etherpad, it’s free, but geared more towards drawing.

Gravatar icon
jd
Saturday December 19, 2009 @ 03:23 AM (PST)

Interesting. If the “Good not Evil” clause makes the JSMin licence non-free in their eyes, then surely the fact that GPL code cannot be included in proprietary closed-source projects must make GPL non-free. Both place the same sort of restriction on projects that fork or include it. (don’t use my code to rob old ladies, vs. don’t pass off my work as your own).

Essentially, this means only MIT or Apache 2 licences, that say “I don’t care what you do with this code, you don’t even have to attribute it to me” are truly googlecode:free.

The redhat people mentioned in your other post have a good point, though. It’s unenforceable, which might cause some people problems, but I’m not sure why a source code hosting service should care.

Gravatar icon
Paul
Saturday December 19, 2009 @ 03:27 AM (PST)

Sadly, the line “The Software shall be used for Good, not Evil” is both self-contradictory and ineffective.

1. “shall” as in “ought to” is not a binding requirement

2. “Good, not Evil” is a purely subjective term – what is Evil for some is bound to be Good for someone else, hence making the practical and license-abiding use of the software virtually nil. Had it been written as “… be used for the Author’s Compatible Concept of Good, not Evil” then at least there would be some reasonable number of matches, but then the silliness would be just a little too obvious.

Take Google with their corporate mantra of ‘do not evil’ – they can do good by making lost books accessible and then for some other people this is pure evil.

For this reason, I find Google’s insistence on removing such terms from acceptable licenses on their site a laudable move. I do hope the JSMin author will figure this out and save himself and others the pointless hassle. If not, we will soon start seeing projects with a license terms like that shown in the title.

Dror

p.s. To be clear – I am also all for good, not evil. I think this is a great concept one ought to live by and preach to others. It is not, however, a concept that should appear in license agreements (or even more generally, in contracts).

Gravatar icon
Dror Harari
Saturday December 19, 2009 @ 04:19 AM (PST)

@Paul: The freedom in question is the freedom to run the software for any purpose. (This is part of the FSF’s definition of Free Software). The GPL is a free software license and doesn’t place any restrictions on running the software. The JSMin license, on the other hand, restricts what the software can be used for.

Gravatar icon
Angus
Saturday December 19, 2009 @ 04:27 AM (PST)

Google is right, you’ve left them with no choice, and for what? Including that line in the license achieves nothing other than to remove clarity, and to make the license non-free. Why did you do it?

Gravatar icon
Saturday December 19, 2009 @ 04:32 AM (PST)

Please check the link you posted again, it is not under the GPL at all …

  1. Copyright 2009 the V8 project authors. All rights reserved.
  2. Redistribution and use in source and binary forms, with or without
  3. modification, are permitted provided that the following conditions are
  4. met:
    #
  5. * Redistributions of source code must retain the above copyright
  6. notice, this list of conditions and the following disclaimer.
  7. * Redistributions in binary form must reproduce the above
  8. copyright notice, this list of conditions and the following
  9. disclaimer in the documentation and/or other materials provided
  10. with the distribution.
  11. * Neither the name of Google Inc. nor the names of its
  12. contributors may be used to endorse or promote products derived
  13. from this software without specific prior written permission.
    #
  14. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  15. “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  16. LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  17. A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  18. OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  19. SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  20. LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  21. DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  22. THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  23. (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  24. OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

That is a BSD license.

Gravatar icon
Saturday December 19, 2009 @ 05:49 AM (PST)

You did the right thing in posting this notice. I don’t know much about Google.code licence, and if they ban you for adding this line??? well they have to ban everyone. And if Google “believes” that this line makes your code non-free, well it’s their believes, so be it. But then they need to be fair and do so with everyone else.

What is free?? and what is non-free? is non-free everything that is not free? Is any licence free? what if there is no licence?

Gravatar icon
Saturday December 19, 2009 @ 06:02 AM (PST)

I’m sure this is all w/ good intentions, but…
1) Evil won’t care if they violate it.
2) Some folks interested in “good” may get concerned about the interpretation of their software as “evil”
3) Imagine trying to convince a judge that one person’s “good” is in fact evil.
4) license proliferation/compatibility issues, as mentioned in Ben’s comment on the linked original post.

What I really don’t get here is that with this post, you are inherently now making it your mission to:
- get them to either back down (“hear me roar!”), and/or
- make other code that use this type of license to be used less (which for an open source project, often reduces its updates and therefore its usefulness), and/or
- make other open source projects also suffer from a bit of transition mess (as always happens) after getting kicked off of google code, and/or
- make other code go obtain a different license for the software from the various authors (Crawford, you, whoever) specifically for them and their users (like IBM did), which minimalizes this license even more.

How is that “good”? And I’m afraid I agree w/ Google’s stance here. As I said before, I’m sure you have the best of intentions, but I believe this may be a misstep.

Gravatar icon
DT
Saturday December 19, 2009 @ 06:45 AM (PST)

However, since JSMin is so widely used by so many open source projects, Google now has to choose between banning popular, high profile projects (including their own) or applying their rules selectively and thus promoting a double standard … So what will it be, Google? Will you remove JSMin from Etherpad, ban Etherpad, or just be—dare I say it—evil and ignore your own rules when they’re inconvenient?

Wow, its really great isn’t it? Google spend millions trying to support the open source community, and now you get to put them in a difficult position and potentially force them to hurt quite a few open source projects. You must feel really good about yourself.

You’re being a pigheaded ass. You’d happily do all of this damage to other open source projects, and for what? To prove a dumb point about a trivial licensing quibble? Shame on you.

You are wrong, everyone is telling you that you are wrong, and it wouldn’t hurt you in the slightest to remove that dumb line from the license.

But instead you’re going to make life difficult for a whole bunch of people for no good reason whatsoever. Hmm, now what do you call that type of behavior? I know: Evil. How ironic.

Gravatar icon
Albert Smith
Saturday December 19, 2009 @ 08:58 AM (PST)

If you don’t want to release your code as free software then don’t.
Google is right, you’re placing restrictions on how a user can use your software and thus it’s not free software.

Gravatar icon
Saturday December 19, 2009 @ 11:17 AM (PST)

The time has come for you to switch to a consistent and recognizable license. GPL, MIT, Apache, whatever. This is just childish on your part, and only server to harm the open source community.

Gravatar icon
Tom M
Saturday December 19, 2009 @ 11:57 AM (PST)

@Ian Clarke, @DT, @Albert Smith, @Jesse McNelis, @Tom M: Please read this carefully: It’s not my license. It’s Doug Crockford’s license. I can’t change it without violating it.

@Fredrik: Etherpad isn’t “crippled”. They just need to remove JSMin from their source tree like everyone else on Google Code. It wouldn’t be very fair if Google made rules and then didn’t follow them, would it?

@Dror Harari: “Shall” means “must”, not “ought to”. It’s a binding requirement, which is at the crux of why Google, Red Hat, and others believe the clause is unenforceable.

@DT: Google has stated their firm position against allowing the license on Google Code. Doug Crockford has stated his firm position against changing the license. While I don’t think it’s likely that either side will back down, I think the odds of Doug changing his license are far worse than the odds that Google will change their rules.

By bringing to Google’s attention the fact that several of their own projects use code under the license they’ve banned and asking Google to follow their own rules (which is only fair), I hoped to get them to reconsider their stance or, at a minimum, to start a discussion about the problem.

I’m not sure if Google is willing to reconsider their rules, but they do at least seem willing to play by them, and this has certainly sparked a discussion.

Gravatar icon
Saturday December 19, 2009 @ 12:02 PM (PST)

Ok, sorry I thought you were Doug because at the time I posted the only tag on the post was “Doug Crockford” and I thought that was the name of the author of the post. Apologies, my comment was directed at Doug, not you.

Gravatar icon
Saturday December 19, 2009 @ 12:32 PM (PST)

Ah, fair point. I should tweak the design to prevent confusion like that.

Gravatar icon
Saturday December 19, 2009 @ 01:17 PM (PST)

Considering that JSMin is a pretty trivial piece of code (~200 lines of C), it would be much simpler to just do a from-scratch rewrite and avoid the brain-damaged license.

Gravatar icon
Saturday December 19, 2009 @ 02:12 PM (PST)

Yep, for JSMin, either rewriting it or using another minifier like YUI Compressor or Google Closure Compiler would be an option. Rewriting JSLint would be a much more daunting task though, since it’s quite a bit more complex than JSMin.

Gravatar icon
Saturday December 19, 2009 @ 02:20 PM (PST)

This seems like a good argument for not putting cute crap in licenses.

Gravatar icon
jengu
Saturday December 19, 2009 @ 02:47 PM (PST)

the GPL is cute crap ;)

Gravatar icon
ugnej
Saturday December 19, 2009 @ 04:01 PM (PST)

Give “The software shall be used for good not evil” a formal name (such as the Unenforcable Subjective Morality License) and have the OSI certify it. Everybody gets what they want and nobody has to change their stupid license.

Gravatar icon
Saturday December 19, 2009 @ 05:34 PM (PST)

Not that it’s necessary to beat this horse, but I recall hearing Bruce Perens say (paraphrased) “you can’t disallow an abortion clinic or an abortion rights activist from using it” when discussing free software.

It came to mind as a tangible example of what this stupid clause is actually saying.

Gravatar icon
Saturday December 19, 2009 @ 05:40 PM (PST)

Jeff: OSI won’t certify it, because OSI doesn’t allow licenses that contain restrictions on how the code can be used. That is Open Source Definition #6, ‘no discrimination against fields of endeavor.’ The bottom line is that this isn’t a Free license (under FSF’s definition) or Open (under OSI’s) so Google is right to ban it, and Etherpad was wrong to use it (since I can guarantee some etherpad users were using etherpad for Evil, not Good.)

Gravatar icon
Saturday December 19, 2009 @ 05:46 PM (PST)

As a developer on another project currently spending potentially useful development time reinventing the wheel to get around this licensing problem, I have a hard time seeing how making other members of the F/OSS community jump through hoops is in line with Doug’s goal of encouraging “good” here. As many have noted, this license has significantly bigger problems than Google’s unwillingness to host it; it is unambiguously not a free software license and cannot be properly included in any exclusively free-software distribution.

I agree with you that it is less likely that Douglas will change his mind than Google, but Google are in the right and it would be significantly better for everyone if they stick to their guns (temporary inconvenience to many, myself included, notwithstanding) than open the door for more license malarkey of this sort in other ostensible F/OSS projects.

Gravatar icon
Josh Hall-Bachner
Saturday December 19, 2009 @ 10:09 PM (PST)

Attention to detail with regard to licensing of software is one of the fundamentals of open source development, and so in that regard I think this is a good move. It will hurt, but the cost would have to be borne now or later, might as well figure it out now.

As far as getting Google to change their rules, that’s ridiculous in this case. The JSMin license is effectively blank from a legal standpoint. What’s the legal definition of Good, or Evil? I realize the caffeine-fueled “rock star ninja” coders out there don’t give a damn but at some point the grown-ups actually have to take care of Serious Business like making sure their servers don’t get impounded due to a legal technicality, so I don’t see Google budging. (After all, we’re talking actual copyright infringement here, however much the original author wants to think he’s given a license for his code, he hasn’t, not in any meaningful legal sense).

I say fork it. We (F/OSS) have done it to much larger projects just fine, JSMin and JSLint won’t be anything more special in that regard.

Gravatar icon
Michael Pyne
Sunday December 20, 2009 @ 12:03 AM (PST)

What makes a license free is extremely well understood these days, and bizarre usage requirements are a blatant violation of that. As well as just being dumb it also puts anyone using the software in a very difficult legal quandry. Does this apply to me? Am I being evil? How about someone using my software, is it my fault if they use it for evil?

How do I enforce this of my users? Do I require a clickwrap? Written contract? After all, the GPL is actually a copyright license that regulates only derivatives and duplication. This however isn’t a copyright license (evilness not being subject to copyright law). This term really requires a written contract to be certain – but finding a lawyer who will write a contract requiring someone is not evil will be a challenge.

This license term is dumb, the person who wrote it is a fool and the software is non-free.

Gravatar icon
Doug Winter
Sunday December 20, 2009 @ 12:49 AM (PST)

Doug Crockford is an idiot, to say the least.
His stupid license probably works in his own unicorn lalaland but not in _ The Real World _.

Gravatar icon
Lázaro
Sunday December 20, 2009 @ 04:20 AM (PST)

True software freedom is based on the freedom of the creator as well as the user of the software.

The person who creates the code can do what they want. Especially when we don’t pay a penny for the code. Everyone is moaning, “Oh, how could he do this?” Well, he could have easily just not provided the software in the first place.

I would rather people use standard licenses, to prevent confusion, but I’m also not worried about a phrase such as this. Evil is subjective, and one can’t sue based on something so subjective. As a contract term, it would most likely be found unenforceable, but I’m not a lawyer. Who knows what a lawyer could find enforceable.

Perhaps Google had its cadre of lawyers examine this, and that line gave them the heebie jeebies. Fine, if Crockford had a choice of license, Google also has a choice on whether to host or not. As the author of this post writes, there are other options for hosting, such as github.

People can also re-create the functionality and provide a different license. That’s also another type of software freedom, and one that Crockford would probably not consider evil.

Gravatar icon
Sunday December 20, 2009 @ 07:13 AM (PST)

“The Software shall be used for Good, not Evil” – so it follows that using it on Google Code is Evil?!

Gravatar icon
Christof
Sunday December 20, 2009 @ 07:38 AM (PST)

@Shelley, “Well, he could have easily just not provided the software in the first place.”

To be honest that would have been better. Instead he released a faux-open source project, which in turn got ported and adapted by other real open source projects. The fact of the matter is the class I downloaded from Google Code said “MIT” license in it, which was apparently an outright lie. This product got where it is by misleading people into thinking it was open source, and while the author certainly has his own rights his own deceit and stubbornness to keep up what seems like nothing more than a stupid running joke have caused a lot of people, myself included, a lot of grief. Just has he has the right to take the actions he did, I have the right to think he’s a douchebag for it.

Had he not released it someone else would have written and released a real open source one by now, and the people who where improving things wouldn’t have been tricked into working on, or with, something proprietary. I’m willing to put my money where my mouth is on that too. I’ve spent the night hacking together something new for my project, and I have high hopes that it will be just as good, if not better, than this class in time. Its already up on google code in the Mortar repository. Once its a little more solid (I’m still having some newline issues, and having been put together in less than 24 hours it could use some more testing) I’ll make an announcement or something.

Gravatar icon
Sunday December 20, 2009 @ 08:24 AM (PST)

the irony: one of the Site Chris diBona works on: http://www.allforgood.org/

found on: http://sites.google.com/a/dibona.com/dibona-wiki/Home
LOL

BTW I really like open source, but this legal stuff really gives me the creeps…

Gravatar icon
Sipke
Sunday December 20, 2009 @ 09:23 AM (PST)

tedivm, I can understand the frustration. The point is, though, that creators can choose to do what they want with their creations. And that includes funky licenses.

The license is simple to read. The line was there from the beginning (I believe it was, wasn’t it?) At that time someone could have said, “This is bogus!”, and written something else.

It was Crockford’s choice to do this with the license, even if it meant people and companies would hesitate to use the software. Or, in the case of Google, decline to host.

I wouldn’t call the software “proprietary”. He’s given folks permission to use, and reuse the software. And he hasn’t charged. He just added one line, as protest, as humor — who knows. But it was perfectly acceptable for him to add the line. And perfectly acceptable for us not to use the software.

As for the MIT license, it has the MIT license…plus one extra line. I looked at the license, and there’s nothing about the license that restricts anyone from adding an extra line. This doesn’t null and void the MIT license.

In fact, people should take the MIT license at face value, rather than putting so much “meaning” into one line that is so subjective as to be nothing more than decorative annotation.

Gravatar icon
Sunday December 20, 2009 @ 01:06 PM (PST)

I double checked and yes, you can create a modification of the MIT License. The license is still valid, still the MIT License.

Perhaps some of the companies who are problem with the license, should spend a little more on software engineers, and a little less on lawyers.

Gravatar icon
Sunday December 20, 2009 @ 01:10 PM (PST)

None of the parties to this dispute are evil. But the legal/corporate structure we have been forced to operate in is. “Intellectual property” has largely shifted from protecting invention, to protecting corporate monopolies big enough to buy the law of the land.

The result? Our institutional mainstream will long be known as the one that took an information technology of vast abundance, and engineered it into a tool of widespread poverty. Software patents have created endless inefficiencies, and serve to stop innovation more than to help it.

That’s what the whole free-software movement opposes. We are in this together.

Gravatar icon
Sunday December 20, 2009 @ 01:30 PM (PST)

Shelley, there’s more to the issue than rights. It’s certainly true that people have the “right” to be potentially misleading; I don’t think anyone questions that. What’s really in question here is:

  • Is the license he’s offering a free software license?
  • If it isn’t, is Google in the right for refusing to treat it like one?
  • Is Douglas taking a stand on a legitimate principle here or just causing trouble?

I can’t establish the answer to the last one beyond my own personal opinion, but I see very little room for disagreement on the first two. By placing a usage restriction on the software (however vague), this license rejects the underlying freedom aspect of free software, and Google, if the defining purpose of their Google Code site is to host exclusively free software projects, must treat it accordingly. (GitHub’s mission is not limited to free software in the same way and so of course can take a different position on the matter.)

Shelley, it’s very difficult to take your suggestion that people just ignore the line in the license seriously. A license is a legal agreement between two parties that they are bound to follow while lawfully utilizing the content under license. People cannot and should not freely disregard portions of licenses that they find personally bothersome or inconvenient. (And in reverse, those who write software they hope others will use should not license it in a frivolous or potentially problematic fashion.)

The license is still valid, still the MIT License.

It is a new license which is derivative of the MIT License. You are correct in asserting that such derivatives can be created but incorrect in asserting that a license which differs materially from what is known as the MIT License is in fact the same thing.

Gravatar icon
Josh Hall-Bachner
Sunday December 20, 2009 @ 01:42 PM (PST)

Forgive me, Josh, for seeming flippant, but when you write, “You are correct in asserting that such derivatives can be created but incorrect in asserting that a license which differs materially from what is known as the MIT License is in fact the same thing”, are you asserting that the MIT License allows evil?

I don’t want to get into religious battles on licenses, and I do understand the issues, and problems with creating variations of licenses — especially when the reasons seem frivolous. When I license my code, I use a standard license. Ultimately, in the end, though, the creator of the code can license the code however they want.

Gravatar icon
Sunday December 20, 2009 @ 02:41 PM (PST)

Sorry Josh, for some reason the comments picked up your name, instead of using mine.

Gravatar icon
Sunday December 20, 2009 @ 02:44 PM (PST)

Not sure how that happened. I’ve fixed the attribution on your comment to use your name, Shelley.

Gravatar icon
Sunday December 20, 2009 @ 02:54 PM (PST)

Good = produces value to the end user, perhaps so much value they will actually value the work with money.

Evil = hard to use, confusing, or unreliable product that confuses, baffles, thwarts users or just makes them angry or upset.

Gravatar icon
Doug Ransom
Sunday December 20, 2009 @ 07:43 PM (PST)
Gravatar icon
Finite
Monday December 21, 2009 @ 09:19 PM (PST)

Looks like CNET picked up on the swirling chaos around this battle of good versus evil.

Gravatar icon
Paul L.
Monday December 28, 2009 @ 11:49 AM (PST)

This software shall be used for Evil, and not Good. For the purposes of this license, “Good” is defined as supporting the aims and interest of the corporate driven world economy, wherein the letter of the law is more important than the well being of the people it governs. An example of this would be to move domestic jobs overseas in order to save money. “Evil” is defined conversely as any such action which benefits the people of the world moreso than corporations. An example of this would be to encourage qualified applicants to immigrate and provide them with benefits.

Furthermore, while this software may not be used for Good, derivative works may be relicensed under any free software license provided the aim is not merely to circumvent this restriction.

Gravatar icon
Fairlight
Monday December 28, 2009 @ 09:17 PM (PST)
New comment

required, won't be displayed

optional

Don't type anything here unless you're an evil robot:


And especially don't type anything here:

Basic XHTML (including links) is allowed, just don't try anything fishy. Your comment will be auto-formatted unless you use your own <p> tags for formatting. You're also welcome to use Textile.

Copyright © 2002-2010 Ryan Grove. All rights reserved.
Powered by Thoth.