Hacker News new | past | comments | ask | show | jobs | submit login
Etherpad includes banned (on Google code) software JSMin (wonko.com)
75 points by suprgeek on Dec 19, 2009 | hide | past | favorite | 58 comments



Crockford talks about this problem here: http://developer.yahoo.com/yui/theater/video.php?v=crockford...

They want to use something that I wrote in something that they wrote, and they were pretty sure they weren't going to use it for evil, but they couldn't say for sure about their customers. So could I give them a special license for that?

Of course. So I wrote back – this happened literally two weeks ago – "I give permission for IBM, its customers, partners, and minions, to use JSLint for evil."

Pretty funny, if you ask me.


It's an unfortunate aspect of IBM's legacy that they supplied the Third Reich with computer supplies (those numbers branded into people's arms are IBM database ids), and they also partnered with apartheid South Africa to supply them with technology.

See http://www-cs-students.stanford.edu/~cale/cs201/ and http://www.ibmandtheholocaust.com/ and http://en.wikipedia.org/wiki/IBM_and_the_Holocaust and http://en.wikipedia.org/wiki/History_of_IBM for starters; the last one has a rather distressing paragraph:

One of the medals Watson received was from the Nazi government in 1937, honoring him in his role as the President of the International Chamber of Commerce. During the rise of Nazi Germany and the onset of World War II, Watson and IBM’s German subsidiary had relationships and contracts with the German military/industrial technocracy. IBM's punch card machines were used by Germany to keep track of people who were to be subjected to the Holocaust.[8] Only after Jews were identified—a massive and complex task that Hitler wanted done immediately—could they be targeted for efficient asset confiscation, ghettoization, deportation, enslaved labor, and, ultimately, annihilation. It was a cross-tabulation and organizational challenge so monumental, it called for a computer. Of course, in the 1930s no computer existed. But IBM's Hollerith punch card technology did exist. IBM and its German subsidiary custom-designed complex solutions, one by one, anticipating the Reich's needs. They did not merely sell the machines and walk away. Instead, IBM leased these machines for high fees and became the sole source of the billions of punch cards Hitler needed.


Wonderful. So JSMin will still be used by IBM, Crockford gets to illustrate how divorced Legal Speak is from Regular Speak, and pokes some (well deserved) fun at "IBM and its Minions". Win-Win


The RPGer in me finds it amusing that they did not ask for you to extent that to "neutral" acts.


Neutral in this license appears to be in a gray area. The initial phrase "for Good, not Evil" presents a dichotomy. Now, this addendum allows Evil as well. So the license has never explicitly addressed this issue, it seems like it would depend on what else the license says.

Assuming that the license this is added to is a generally permissive license, I would assume that neutral acts are implicitly allowed and were probably not enjoined by "for Good, not Evil" as that clause would simply not have applied.

But I am not a lawyer.


I find it amusing that he only licensed it to IBM and minions for small-e evil, not big-E Evil.


JSMin's license is simply MIT + this added clause:

  The Software shall be used for Good, not Evil.
Google Code takes a hard stance against license proliferation, and only allows the ones on their minimized list, period.

I think Hipp took a better approach with Sqlite -- the code is in the public domain, and instead of a license the code comes with headers containing this simple admonition/blessing:

  May you do good and not evil
  May you find forgiveness for yourself and forgive others
  May you share freely, never taking more than you give.


Richard Hipp actually said that he wished he hadn't released SQLite into the public domain. Apparently it becomes a headache when the code is used in countries that don't have the same implementation of the public domain as the US (around 16 minutes in: http://www.viddler.com/explore/rentzsch/videos/25/ ).

I think that if you want to appease legal departments, your best bet is a well known licence, written by lawyers (eg Apache 2.0).


Yes, Moral Rights are even more of a pain in the ass than the AGPL could ever hope to be.


This is not unique to Google. I've got a friend at MetaCarta who really wanted to use JSMin, but the legal department squashed it immediately because the phrase "This software shall be used for Good, not for Evil" could mean anything in a court of law.

Basically any corporate entity with a legal department worth its salt will say the same thing.

It's a shame, really, because JSMin and JSLint are nice pieces of software and the intent behind it is admirable, but the way our legal system works, that clause has prevented much good that could otherwise have been accomplished.


Just because a legal department says something doesn't make it true. This is not tested in a court of law, and law departments have varying standards and interpretations. Some even have guts. Some prefer themselves not to do evil.

But if you're Raytheon, Haliburton, the U.S. Military, or one of the mercenary step-children of Blackwater then yeah, maybe your legal department is wise to balk.


Legal departments get paid to keep you out of trouble, which means vague and untested wording is seen as a risk.


People have been sued for more stupid reasons.


Stuff like this is why we slap MIT_LICENSE on everything we release so we never hear about licensing again.

It's just a silly situation that arises from a silly change to the license.


Some people actually don't want their code to be used for evil. Glad MIT works for you though.


The point is that it's impossible to tell what is Evil and what is Good. It entirely depends on your point of reference.

We release about 40% of Shopify's code base as open source. There are numerous knockoffs both closed source and open source that use all of our open source ( and even our themes, templates, js and css! ) to make competing products. This sucks for us and is certainly evil from our perspective but it's silly to change a battle hardened OSI license to prevent people from doing that.


How is that evil from anyone's perspective? You released code under a license that said people could do certain things with it. So they did those certain things with it, and you think that's evil? Huh?

(Of course, if people are using the software in ways at odds with your license, you have legal recourse, in which case... why aren't you taking legal action?)


There are a ton of things you can do with our code that isn't actively marketing to our exact customer base. According to numbers we got recently more then 30% of all deployed commercial rails apps use ActiveMerchant which probably means tens of thousands. Only a handful are e-commerce systems.


Sure, but how is that "evil"?


Good and Evil are one in the same it just depends which side you are on. Sure there are some clear cut things like clubbing babies, obviously evil. but what if I run a internet scam site that uses all it's profits to run free medical clinics in the third world and saves hundreds of lives? Point being it's subjective, hence only you can decide what is good and evil for yourself and putting a clause like that in your license is meaningless.


Is your assessment about the subjectivity of good and evil objective?

"There is no such thing as right or wrong." [ ] Right [ ] Wrong


You're conflating the rather abstract and arguably subjective moral concepts of "right" and "wrong" with "true" and "false."


Hah, this made me laugh and think for a moment. Personally, I'm not sure that right and wrong are subjective, but I'm also quite careful about saying there's an objective right and wrong. Objective right and wrong can certainly lead away from "live and let live", and who arbitrates this objective morality when people disagree?

So, funny phrasing and thought provoking way of putting it. After some reflection, I think I'd press you to define right and wrong before answering if you hit me up with that.


Now you've got me wanting to put a clause in my copylefted work that says "This work may be used for Good or Evil, but only by people who acknowledge the difference."


There is a difference if we agree on our frame of reference, ie: what religion / culture / time and place we are drawing our definitions of good and evil from. But given that a piece of open source software is put out there for everyone from any point and time here on forward it's nearly a given that at some point a user is going to evaluate their actions in a different frame of reference and do something that you view as evil and they view as good.


But this license doesn't prevent that from happening, anyway. Anyone truly evil would just ignore that clause.


It's not that. The problem for someone who wants to use it is that they're entering into a contract with a licensor which commits them to an unknown (and possibly unknowable) compliance regime that they can never be sure they will satisfy.

You could have a license that said 'good for all uses except military ones' - you might or not want to deal with the requirements it imposes, but at least they're very clear cut.

But concepts of good an evil are hopelessly subjective. Besides all the examples already used here, suppose JSMin was employed for some scientific application involving the study of evolution. Well, I think that would be good since I'm a fan of Darwin, but if I were a fundamentalist Christian or Muslim I might consider that absolutely pernicious on the grounds that evolution denies the guidance of God in natural affairs (which some people do believe). Not only do I have to worry whether the author of JSMin might believe this, but anyone else who believes that and see JSMin being employed for this end might take moral offense and file for an injunction to prevent its use. such a suit would probably be thrown out immediately, but who wants to worry about such hassles when they are so easily avoidable?


It might be impossible for code to not be usable for evil. If you are programming an online shop, you kill physical shops (evil). If you program a game, you are stealing people's time (evil). If you program a social network, you tempt people to expose too much of themselves on the net (evil). There are always two sides to things.


This headline is misleading taken out of context, and is not the headline of the linked blog post (I'm the author). JSMin isn't "banned software", it's just not allowed on Google Code.


Modified headline to reflect that it is "banned" on Google code and not in general. JSMin is indeed very good.


Saying that JSMin is banned still implies JSmin itself ws explicitly banned, which is not correct.

It would be better to say 'non Open Source' as that's the reason why JSmin, Microsoft Windows and other apps for which you can get source code but aren't OSS aren't allowed on Google Code.


Much better, thanks.


I'm not sure that Good and Evil have legal definitions. Also people doing evil often seem to believe they're doing good, so could claim full compliance.


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.

It probably does make the software non-free (e.g. according to the DSFG); more importantly, such a clause is utterly idiotic. Rather than bitching about Google Code, the JSMin author would be better served to get rid of the arbitrary, subjective and probably unenforceable clause from the license. The original JSMin is only 200 lines of C, so the simple solution would just be a from-scratch rewrite.


Why can't JSMin simply remove that from their license and save a lot of people a lotta headache?


Maybe he prefers that JSMin code not show up in Hellfire missiles?


But who defines 'evil'? A hellfire missile kills, and maybe your stance is that killing is evil full stop (this is purely hypothetical - I have no idea what your views actually are) but maybe someone else thinks that firing missiles at an invasive force to their country is 'Good' and the killing is in this case justified.


There's an interview with Gen. Mikhail Kalashnikov, designer of the AK-47, where he's asked, is he ashamed of creating something that killed so many people? He replies, he created it to defend his country and his people from Fascists and he was proud of having done so.


Who says it wont? If the hellfire missiles is used to kill terrorists plotting to nuke the world I would say they were used for good!

The license statement is just ridiculous and doesn't mean anything at all, yet it gives legal departments everywhere a big problem to deal with.


As for the terrorist thing, it's a terrorist from your point of view. Eg. Israel bombing an UN school full of children was not seen as a terrorism, .... [Disclosure: I'm neither Israelite neither Islamic, neither at the side of UN, so neither from Iraqi.] Let's not talk about this "shit" in HN, sorry for going offtopic.

As for the license statement, it is there beacuase he wants to. Have you ever thought that he may want that giant corporates don't use his code without permission first.

A clear example of this it's the main story of this discussion and the response by tlrobinson.

EDIT: The startups don't have this problem. Big corporations do.


The example was a contrived one to illustrate my point. While I understand that the license statement is there because he doesn't want "giant corporates" to use it without permission, those kinds of licenses are in general hurtful. We only take this lightly because we trust that the author is a good person. The author could however easily take any corporation, startup or not, to court because just as you say – good is a point of view. It is unlikely that any judge would take it seriously but because there's (probably) no precedent it can still be a very large hassle for a small company, forcing them to hire lawyers and avert them from their core business.

These kinds of "licenses" are more likely hurtful to startups than large corporations.


The startups don't have this problem. Big corporations do.

What makes you say that this is not a problem for startups? Is it because you think startups are too small to profitably take to court and thus can safely ignore software licenses, or because you think that somehow companies below a certain size are incapable of evil?


Neither of them, all of them. Small companies, such as startups, are more concerned about creation: the team is strictly small, and it's fast responsive. Big companies have more bureaucratic practices and processes, and no one wants responsibility, there's more talk than getting things done.

"Corporation, n. An ingenious device for obtaining individual profit without individual responsibility." - Ambrose Bierce


I wouldn't want to work with a company unconcerned about anything but creating things. Building cool stuff is awesome, but a company ignoring licensing issues isn't going to get very far. Regardless of that, I'm also an open source developer, and I don't take kindly to companies -- small or large -- who think OSS licensing restrictions don't matter.


> "Corporation, n. An ingenious device for obtaining individual profit without individual responsibility." - Ambrose Bierce

That quote is good for a laugh, but a lot of people actually believe that without thinking it through entirely. Corporations exist to limit legal liability to the corporation itself: So if a group of 10 people get together to do something, they can form a corporation, and the people won't lose their personal possessions if something goes wrong on the corporate level. Meanwhile, anyone who does business with the corporation is informed it's a corporation - in order to keep the legal protections of a corporation, the corporation must explicitly identify itself with markings of "Inc", "Co", "Corp", "Incorporated", or so on. When an officer of the corporation signs a document, he signs it as, "His Name, Pres." instead of just his name - indicating that he's signing in his officer role, not personally. People who do business with the corporation understand that if something goes wrong, they can sue the corporation, but not the individuals who invested in it and its employees, unless the people did something wrong as individuals as well.

Some people think this is a bad thing, but they ignore what happens if you didn't have them. If corporation limited liability wasn't available, established people would be muc more hesitant to go into a dangerous line of business for fear of losing what they already have. So you wouldn't have the most talented and established businessmen managing and investing in dangerous work like long distance shipping, mining, drilling, etc. Fields that are particularly dangerous would be populated only by people with nothing to lose - a scary proposition.

Actually, personally, I think the ideal is to make corporate limited liability weaker at the same time as generally having courts hold people liable less often. Currently, if you slip on ice in front of a business, you've got a decent chance of winning a lawsuit which is crazy. Spilling hot coffee. Etc. Reducing liability and generally admitting that "bad stuff happens and isn't always someone's fault" while simultaneously holding individuals more accountable when they actually do wrong would probably be the best legal mix. But, if you want lots of liability and broad judicial jurisdiction, you absolutely need to have limited liability in order to allow the most experienced people to get involved in dangerous and important fields without risking everything they already have.


As a practical matter I agree, but I think part of the general cynicism about corporations is that the Bierce definition so often seems appropriate. Even when a corporation is egregiously at fault in some matter, it's extremely rare to have the corporate charter revoked and the assets sold off. Sure, the shareholders could just go and form another corporation to do the exact same thing, but it would be massive inconvenient and thus serve as a deterrent from gross malfeasance.

As an example of such, consider this recent datum: http://www.editorsweblog.org/newsrooms_and_journalism/2009/1...

I feel sure there must be some pragmatic medium between corporate fecklessness and the opposite case of unlimited liability.


As many others have pointed out, "good" and "evil" are completely subjective. And judging from your naitivity, I am quite sure that even you and I would have differing interpretations. I believe a Hellfire missile can, in fact, be used for "good". The clause is obviously worthless.


If that was the goal then they could simply add a provision that the code could not be used in any military projects or projects by military subcontractors. That would also be a lot easier to uphold in court than trying to define 'evil'.


I don't see anything wrong with this. The license terms are very ambiguous. Honestly, what is "evil", and if you can define it, you deserve a phd in philosophy.

Point being, if you release something under a license that is is too obscure and free, you will run into these problems, as Google has. I mean, they operate in China, after all. (not that I have anything against China. The citizens of the United States of America could learn from China).


The point isn't whether it's right or wrong. It's that Google made a rule (no JSMin/JSLint on Google Code), then (unintentionally) broke it themselves with Etherpad and a few other projects, and must now deal with the consequences.

To their credit, they are actually dealing with the consequences and not setting a double standard, which I find admirable. But I still think the situation is worth highlighting and worth discussing.


If some creators want to be whimsical in their license text, of course that's their prerogative.

But it does create a bit of a mess for people who take certain principles in their work as seriously as these programmers care about their craft and personal expression.

License text is code, of a sort, and overall it's a good thing that large organizations care about the precise meaning of the legal agreements they enter into.

Similarly, it's a good thing that the 'Open Source Definition' says licenses can't discriminate against fields of endeavor (including those some would label 'evil') and still be considered 'open source'.

So this little license flourish throws a couple of monkeywrenches into the gears for well-meaning folks just trying to get good stuff done.

Perhaps it succeeds as a thought-provoking bit of performance art, but it's lousy as a license term for enabling sharing and building.


It's a pretty stupid line to put in a license. What the hell does it even mean? Without defining "evil" in the context of the license, it could mean anything -- who gets to decide what constitutes "evil"? The original author? In that case, it's like making the license immediately revocable for any reason at any point in the future.

It's understandable that Google, or just about anyone else, would reject a license with that sort of vague language in it.

There's a time and place for whimsy, but a software license isn't it.


How childish of him. Attorneys will quibble over anything, he needs to either remove the offending text from the license, and use the FREE Google Code, or host it himself and quit complaining about Google's legal policies. He is going to either lose lots of software where his code is used, or make it a lot harder on the community.


It's not his call. He forked a derivative of Douglas Crawford's JSmin project, and that was a requirement in Crawford's license.


The whole thing is silly, because JSmin is ~200 lines of code. It would be trivial to rewrite from scratch and avoid the braindamaged license.


I think the right way to deal with this is to find a way to use our closure tool to replace jsmin's functionality in a dfsg/osi approved way.

Not before the new year though (I was the dude who said no way to jsmin on google code)


That takes care of JSMin, but what about JSLint?


github ftw




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: