Мы наконец-то выпустили 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