Мир инструментов с открытым исходным кодом расширился, чтобы приветствовать JSHint, поскольку специалисты по сопровождению проекта, наконец, завершили необходимую работу для принятия лицензии MIT Expat. Ранее код JavaScript-линтера частично публиковался под лицензией JSON с дополнительным, казалось бы, безобидным пунктом, который гласил: «Программное обеспечение должно использоваться во благо, а не во зло». Этот пункт препятствовал тому, чтобы FSF признал его лицензией на свободное программное обеспечение, а также не признал его как открытый исходный код Open Source Initiative.
В эссе под названием «Наблюдая за кораблекрушением» соавтор JSHint Майк Пенниси описывает, как лицензия навредила проекту. Несмотря на то, что в 2015 году этот инструмент получил звание самого популярного линтера JavaScript, за последние пять лет его современник, ESLint, сильно опередил его, в основном из-за несвободного лицензирования.
«Юридически сознательные возражающие не выдают своих подлых побуждений; они отказываются заключать двусмысленный контракт », – сказал Пенниси. «Иными словами: они не говорят:« Я злодей », они говорят:« Я не понимаю, чего вы хотите ». Это соображение лишило JSHint возможности включения во все виды контекстов».
Проблемы с лицензированием не позволили разработчикам из дистрибутивов Debian и Fedora GNU / Linux включить JSHint. Пенниси даже немного углубился в историю WordPress, когда он подробно рассказал, как платформы программирования, которые «переупаковали» JSHint, также пересмотрели свое мнение из-за его дополнительного пункта.
«Было время, когда популярная система управления контентом WordPress переупаковывала JSHint таким образом», – сказал он. «Как только они узнали о лицензии JSON, они заменили JSHint в течение нескольких недель». Пенниси сослался на билет для WordPress 4.9, в котором JSHint был удален из основной реализации CodeMirror, а также из инструментов сборки WordPress.
«Когда такой проект, как JSHint, теряет пользователей, он также теряет участников», – сказал Пенниси. «Это замедляет добавление новых функций и исправление ошибок. Своевременность важна для этих вещей, и люди очень негативно относятся к задержкам. Лучшим примером этого является отложенная поддержка JSHint асинхронных функций ».
JSHint превратился в то, что Пенниси назвал «причудливо перегруженным JavaScript линтером». К сожалению, процесс перехода на открытый исходный код через семь лет оказался не таким простым, как подача запроса на изменение лицензии. В серии эссе он раскрывает изнурительный процесс запроса разрешения у всех более чем 200 участников проекта, но в конечном итоге получает один отказ, а некоторые из них не доступны для контакта. В конечном итоге команда JSHint была вынуждена переписать исходный код, но только для тех частей, которые были предоставлены пятью людьми, не разрешившими изменение лицензии.
В начале августа JSHint обновился, чтобы использовать лицензию MIT Expat в версии 2.12.0, и теперь он совместим с GPL. Поучительный рассказ Пенниси о том, что он назвал «освобождением JSHint», – это увлекательное чтение, в котором подробно описывается борьба за преодоление проблем, связанных с первоначальной лицензией на проект. Ключевой вывод из этой истории заключается в том, что создатели программного обеспечения должны заранее тщательно продумать последствия лицензирования, даже если большое сообщество пользователей поначалу кажется невообразимым. Лицензирование с открытым исходным кодом продвигает проект дальше, чем его создатель мог бы реализовать в одиночку.
«Для многих людей лицензирование – это тайная часть разработки программного обеспечения, – сказал Пенниси. «Это относительное мнение: правовая база устрашает, и большинство соображений можно решить, просто отказавшись от хорошо известных бесплатных / открытых лицензий.
«Проблема в том, что не все программное обеспечение распространяется под хорошо известными лицензиями с открытым исходным кодом. Я надеюсь, что подробности упадка JSHint помогут людям понять, почему лицензирование имеет значение ».