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

Комментарии (13)


  1. galk_in
    15.04.2016 09:59
    +9

    Низкий поклон за ваши труды!


    1. mdevils
      15.04.2016 10:27

      Спасибо!


  1. k12th
    15.04.2016 11:00
    +5

    С одной стороны здоровая конкуренция это хорошо, с другой стороны два линтера — это довольно долго на больших проектах, да и правила частично пересекались. Надо думать, теперь развитие eslint пойдет вообще семимильными шагами.


    1. rumkin
      15.04.2016 12:07

      Конкуренция хороша на этапе формирования стандарта или в момент его стагнации.


      1. k12th
        15.04.2016 15:13

        Вы про xkcd://927? Но вроде речь не о стандартах…


        1. rumkin
          16.04.2016 11:16

          Использование единой методологии решения задачи по сути и есть стандарт. Он может быть кодифицирован в виде текста или программы, а может быть негласным. В сфере контроля качества программного обеспечения, по-моему, должна быть общая методология.


  1. pragmadash
    15.04.2016 13:00
    +2

    Это решение заслуживает бескрайнего уважения. Ни каждый может иметь такой уровень объективности, чтобы принимать такие тяжелые решения.


  1. renya
    15.04.2016 15:03
    +3

    Спасибо за ваш труд!
    PS: Все правильно сделали. ;)


  1. Rathil
    15.04.2016 16:23
    +1

    Конечно с одной стороны грустно, столько сил и времени в проект вложили и… Но с другой — вы сделаете ещё лучше один проект! И это круто!


  1. pterolex
    15.04.2016 17:38

    А я как раз недавно хотел попробовать JSCS вместо ESLint…


    1. k12th
      15.04.2016 18:39

      Это не «вместо», это «вместе»:) ESLint больше про хорошие практики, в JSCS много сугубо стилических правил типа «ставить пробелы внутри круглых скобок». Частично, однако, они пересекаются.


      1. pterolex
        15.04.2016 18:59

        В ESLint тоже много аналогичных стилистических правил. Собственно, поэтому мы на него в свое время перешли с JSHint.


  1. dimik
    18.04.2016 10:21

    обновите gulp-jscs, сейчас он не поддерживает 3.0