This is the second essay in a four-part series about relicensing the JSHint
In a previous essay, I explained
what made the JSHint project’s bizarre license so toxic for JSHint and its
users. However, a fully free and well-maintained alternative (namely
ESLint) has been available for many years. A wider
perspective may make the plight of the JSHint project less compelling.
“Geez, just use another project,” you might be thinking.
It’s true that I could have deprecated the project. That would amount to
hanging a “CONDEMNED” sign on the door of an old factory. People could still
wander in and mess with the equipment–they’d just be on their own when things
inevitably went haywire.
There are a few reasons why I stuck with the relicensing despite its growing
Changing between similar tools isn’t necessarily easy, and not everyone can
jump ship. There are plenty of people who have made technical investments in
JSHint and who lack the time to migrate to some other tool. Deprecating JSHint
would be abandoning those folks. To be sure, both the MIT Expat and the JSON
license explicitly deny “warranty of any kind,” but I still felt a certain
obligation to all the people who had come to rely on the project.
Maybe it’s because JSHint is itself the victim of such a failed relationship.
Long ago, its creator decided to focus on issues of code correctness, and he
endorsed JSCS as the tool for folks who wanted
to enforce more subjective “stylistic” rules. This worked for a time, but JSCS
eventually merged with the ESLint
The merge was undoubtedly beneficial for the users and maintainers of both of
those projects. Unfortunately for JSHint, it also hollowed out our endorsement
Like a mule
It’s tempting to posture as the selfless open source maintainer, long suffering
in the service of “the community.” That framing overstates my selflessness and
understates the challenge. If I was focused only on relicensing, then the
decline in relevance would have been discouraging enough. The disappointment
was more pronounced because all the while, I was also responding to bug
reports, handling support requests, and implementing new features. Frankly, an
unspoken commitment to strangers wasn’t strong enough to sustain the effort.
When I first contributed to
JSHint, I was still internalizing
the ethics of free software. I may have even written my first patch on Windows.
I don’t know; it was a confusing phase. My involvement in JSHint grew in
parallel to my commitment to free software. Those two trends are inherently
oppositional, and I increasingly felt regret about the way I was spending my
Ultimately, it was stubbornness that kept me going. I wanted to move on, but
that would mean all of my work had been in service of yet another non-free
system. I didn’t want the result of my effort to be a project I couldn’t