“Legally-conscious objectors aren’t betraying their own dastardly motivations; they’re refusing to enter into an ambiguous contract,” Pennisi said. “Put differently: they’re not saying, ‘I’m an evildoer,’ they’re saying, ‘I don’t understand what you want.’ This consideration disqualified JSHint from inclusion in all sorts of contexts.”
Licensing concerns prevented developers from the Debian and Fedora GNU/Linux distributions from including JSHint. Pennisi even dips into a bit of WordPress history, when he detailed how programming platforms that “repackaged” JSHint also reconsidered due to its additional clause.
“There was a time when the popular content management system WordPress repackaged JSHint in this way,” he said. “Once they learned of the JSON license, they replaced JSHint in a matter of weeks.” Pennisi referenced a ticket for WordPress 4.9 wherein JSHint was removed from core’s implementation of CodeMirror, as well as WordPress’ build tools.
“When a project like JSHint loses users, it also loses contributors,” Pennisi said. “This slows the addition of new features and the correction of bugs. Timeliness is important for these things, and people perceive delays very negatively. The best example of this comes from JSHint’s delayed support for async functions.”
At the beginning of August, JSHint updated to use the MIT Expat license in version 2.12.0 and is now GPL-compatible. Pennisi’s cautionary tale of what he called “the liberation of JSHint” is a fascinating read that details the struggle of overcoming the challenges of the project’s original license. The key takeaway from this story is that software creators should strongly consider the ramifications of licensing up front, even if a large community of users seems unimaginable at first. Open source licensing takes a project further than its creator could ever have brought it alone.
“For many people, licensing is an esoteric part of software development,” Pennisi said. “It’s a relatable opinion: the legal frameworks are intimidating, and most considerations can be addressed by simply defaulting to well-known free/open-source licenses.
“The trouble is that not all software is distributed under well-known free/open-source licenses. My hope is that the particulars of JSHint’s decay help folks understand why licensing matters.”