'Don't-be-evil' Google spurns no-evil software

One open-source software programmer's joke--'The Software shall be used for Good, not Evil'--is a serious matter at Google.

Stephen Shankland principal writer
Stephen Shankland has been a reporter at CNET since 1998 and writes about processors, digital photography, AI, quantum computing, computer science, materials science, supercomputers, drones, browsers, 3D printing, USB, and new computing technology in general. He has a soft spot in his heart for standards groups and I/O interfaces. His first big scoop was about radioactive cat poop.
Expertise processors, semiconductors, web browsers, quantum computing, supercomputers, AI, 3D printing, drones, computer science, physics, programming, materials science, USB, UWB, Android, digital photography, science Credentials
  • I've been covering the technology industry for 24 years and was a science writer for five years before that. I've got deep expertise in microprocessors, digital photography, computer hardware and software, internet standards, web technology, and other dee
Stephen Shankland
4 min read

Google, the company that made "don't be evil" its corporate motto, is shunning use of an open-source license variation that precludes use of software for evil purposes.

The matter illustrates the tensions between the sometimes free-wheeling ways of open-source programming world and the buttoned-down corporate realms where open-source software is no longer unusual. This particular issue bubbled up at Google Code, a site that hosts open-source projects from Google and others.

When he wrote JSMin, Douglas Crockford added this line to the open-source MIT License.
When he wrote JSMin, Douglas Crockford added this line to the open-source MIT License. Douglas Crockford

Google only permits software governed by a limited list of widely used open-source licenses to be hosted at Google Code; one that's permitted is the MIT License. Douglas Crockford picked a variation of the MIT license for his JSMin program to shrink JavaScript programs so that Web browsers can download them faster, and Ryan Grove carried that license over for his variation called JSMin-PHP rewritten in the PHP language.

JSMin-PHP had been hosted at Google Code until earlier in December, when it came to the attention of Chris DiBona, Google's open-source honcho, that the software's license had an extra requirement added to the regular MIT License:

"The Software shall be used for Good, not Evil."

"As Google (and some others) interpret it, this additional requirement constitutes a vague use restriction and thus makes the license non-free. Chris [DiBona] explained that if I were to remove that line from the license and 'return to a proper open source license that we support,' then jsmin-php could stay on Google Code. Otherwise, he said, 'we can't host you,'" Grove said on his blog. "Of course, I can't change the license, because it's not my license. It's Douglas's license...All derivative works and copies of jsmin.c either include this license or are in violation of it."

Consequently, Grove moved JSMin-PHP to the GitHub collaborative programming site. "If you currently have a project on Google Code that is derived from or includes jsmin.c, you might want to consider migrating to a new host with less restrictive policies," Grove added.

How did this all come about? According to a July speech by Crockford, who works for Yahoo and describes himself as a heretic, the license was an artifact of the George Bush administration's war on "evildoers." He uses the licenses for all the projects he's created, he said.

"This was late in 2002, we'd just started the war on terror, and we were going after the evildoers with the president and the vice president, and I felt like I need to do my part," he joked. "So I added one more line to my license, which was that 'the software shall be used for good, not evil.'"

"About once a year I'll get a letter from a crank who says, 'I should have a right to use it for evil! I'm not going to use it until you change your license.' Or they'll write to me and say: 'How do I know if it's evil or not? I don't think it's evil, but someone else might think it's evil, so I'm not going to use it,'" Crockford said. His conclusion: "My license works, I'm stopping the evildoers."

He's willing to grant an exception, though, he said.

"Also about once a year, I get a letter from a lawyer, every year a different lawyer, at a company--I don't want to embarrass the company by saying their name, so I'll just say their initials: IBM--saying that they want to use something I wrote," he said. "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... 'I give permission for IBM, its customers, partners, and minions, to use JSLint for evil.'"

These days, though, lawyers are a real force in the programming world, and I can see how the line, however jokingly it might have been added, might cause corporate indigestion. Perhaps Crockford has no intention of enforcing the license, but perhaps some contributor to a project farther down the path of derivative works might have a more humorless interpretation.

After all, there have been efforts to add political elements into open-source and free-software licensing--for example, one variation of the GNU General Public License that prohibited military use of the software. And deeply held philosophical and ethical beliefs are certainly no stranger to the open-source and free-software realm.

Even if a company, project, or individual does conclude the license isn't onerous, that extra line adds a lot of busywork to the collective and never-ending task of evaluating software. I'm all for humor, principled positions, and honest debate, but I prefer it to take place where it won't hobble some other software project's prospects.

I know I sound stuffy (or perhaps "risk-averse" and "disconnected from the community," as Aaron Boodman would have it), but I hate to see good work fall by the wayside for what seems to me a reason that's secondary at best.

Updated 1:38 p.m. PST to clarify the nature of JSMin-PHP.