JSHint is now freeware after license update to MIT Expat – WP Tavern

The world of open source tools has expanded to welcome JSHint, as the maintainers of the project have finally completed the work needed to adopt the MIT Expat license. Previously, the JavaScript linter code was partially released under the JSON license, with a seemingly innocuous additional clause that stated: “The software should be used for good, not evil”. This clause prevented it from being recognized by the FSF as a free software license and likewise was not recognized as open source by the Open Source Initiative.

In an essay titled Watching the Ship Sink, JSHint co-maintainer Mike Pennisi describes how licensing hurt the project. Although it captured the distinction of being the most popular JavaScript linter in 2015, the tool has been brutally overtaken in the past five years by its contemporary, ESLint, largely due to the effects of having non-free licenses.

credit: Mike Pennisi

“Legally aware objectors do not betray their own base motives; they refuse to enter into an ambiguous contract,” Pennisi said. “In other words: they don’t say, ‘I am a criminal,’ they say, ‘I don’t understand what you want.’ This consideration disqualified JSHint from inclusion in all sorts of contexts.

Licensing issues prevented developers of Debian and Fedora GNU/Linux distributions from including JSHint. Pennisi even dives into a bit of WordPress history, when he detailed how programming platforms that “repackaged” JSHint also reconsidered because of its extra clause.

“There was a time when popular content management system WordPress repackaged JSHint in this way,” he said. “Once they learned about the JSON license, they replaced JSHint within weeks.” Pennisi referenced a ticket for WordPress 4.9 in which JSHint was removed from the core CodeMirror implementation, as well as from the WordPress build tools.

“When a project like JSHint loses users, it also loses contributors,” Pennisi said. “It slows down adding new features and fixing bugs. Speed ​​is important for these things, and people view delays very negatively. The best example of this comes from JSHint’s deferred support for asynchronous functions.

JSHint had become what Pennisi described as a “weirdly cluttered JavaScript linter”. Unfortunately, the process of going open source after seven years wasn’t as simple as submitting a pull request for a license change. In a series of essays, he uncovers the grueling process of asking permission from all 200 contributors to the project, only to end up receiving a denial and some who were unavailable for contact. In the end, the JSHint team was forced to rewrite the source code, but only for the parts that had been provided by the five people who hadn’t authorized the license change.

At the beginning of August, JSHint was 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 compelling read that details the struggle to overcome the challenges of the project’s original license. The main takeaway from this story is that software creators should seriously consider licensing ramifications from the start, even if a large user community seems unimaginable at first. Open source licenses take a project further than its creator could ever have taken it alone.

“For many people, licensing is an esoteric part of software development,” Pennisi said. “It’s a relatable view: legal frameworks are intimidating, and most considerations can be resolved by simply defaulting to well-known free/open-source licenses.

“The problem is that not all software is distributed under well-known free/open-source licenses. I hope the details of the JSHint disintegration will help people understand why licensing is important.