Мы наконец-то выпустили JSCS версии 3.0, и надо сказать, что помимо энтузиазма, мы испытываем еще и некоторую грусть. Над новой мажорной версией мы работали много и долго, это было довольно интересно и местами захватывающе. Грустно от того, что это будет последней версией JSCS.
С помощью вас, JavaScript разработчиков, которые помогали JSCS, проект смог достичь успеха. Около 5 тысяч звезд на гитхабе и более 27 тысяч скачиваний npm пакета в день. Тем не менее, мы приняли решение не выпускать новых мажорных версий и впоследствии прекратить работу над проектом.
История JSCS 3.0
Такое решение было принять очень сложно. По длинному списку коммитов видно, как много мы работали над JSCS 3.0. Но чего вы там не увидите — так это работы над новым проектом CST, который лег в основу JSCS 3.0.
Мы однажды упоминали CST в анонсе JSCS 2.2.0. В какой-то момент JSCS, который, как и многие другие проекты, использовал esprima, столкнулся с невозможностью производить сложные изменения в коде. Тогда мы и придумали CST (Concrete Syntax Tree), цель которого — решить современные проблемы инструментов для стилевой и логической проверки кода. С помощью CST уже сейчас можно удалять неиспользуемые переменные, мертвый код…. исправить все, что линтер может исправить в ваших самых диких мечтах :-)
Таким образом, мы написали собственный Scope Analyzer. Переписали каждое правило в JSCS, фиксили, фиксили, боролись за производительность и снова фиксили… Так зачем же мы решили остановиться на третьей версии как на последней?
Стоимость поддержки
Проекты вроде JSCS требуют огромного вложения энергии и времени. Ревью пулл-реквестов, исправление багов, написание документации. Как и поддержка веб-сайта проекта. Как и ответы (бывало, что и по ночам) на вопросы пользователей в Gitter.
Команда JSCS работала в свободное время, обычно вечерами после основной работы или в выходные. Но с уменьшением обратной связи от сообщества проект стал слишком тяжёл, чтобы его можно было продолжать на чистом энтузиазме.
Присоединение к ESLint
Как мы увидели, ESLint и JSCS уже решают разными способами одну и ту же проблему. А сообщество с большей радостью будет использовать один линтер, а не разрываться между двумя разными. И мы решили помочь сообществу.
Вместо того, чтобы продолжать соревноваться с ESLint, мы решили присоединиться к ESLint и привнести в него свой опыт и инструменты, которые мы разработали за время развития JSCS.
Поэтому сегодня мы рады поделиться с вами новостью о том, что большая часть команды разработки JSCS присоединяется к команде ESLint. Мы продолжим поддерживать JSCS три следующих месяца: исправлять баги, но без новых фич. Репозиторий JSCS никуда не денется, и вы всегда можете форкнуть и использовать код по своему усмотрению. Мы также продолжим работать над CST: мы верим, что это будущее JS-линтеров. Мы надеемся, что сможем помочь ESLint разработать качественный и функциональный механизм автоматического исправления ошибок стиля и логики.
И тем не менее
Мы будем рады, если вы поможете нам протестировать CST в деле и обновите свой JSCS до версии 3. Нам очень интересно, как CST себя покажет в разных проектах.
В будущем рекомендуем вам переходить на ESLint. Мы работаем с командой ESLint над инструментами и документацией, которые сделают переход менее болезненным. В идеале переход вообще будет незаметным :-)
Благодарности
Мы очень благодарны всем, кто помогал нам с JSCS. Только благодаря вам JSCS смог стать таким популярным. И теперь мы приглашаем вас присоединиться к нам в работе над ESLint.
Команда разработчиков JSCS
Автор: mdevils