JSCS, CST и новое начало

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

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

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

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

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

        • НЛО прилетело и опубликовало эту надпись здесь
            +3
            Спасибо за ваш труд!
            PS: Все правильно сделали. ;)
              +1
              Конечно с одной стороны грустно, столько сил и времени в проект вложили и… Но с другой — вы сделаете ещё лучше один проект! И это круто!
                0
                А я как раз недавно хотел попробовать JSCS вместо ESLint…
                  0
                  Это не «вместо», это «вместе»:) ESLint больше про хорошие практики, в JSCS много сугубо стилических правил типа «ставить пробелы внутри круглых скобок». Частично, однако, они пересекаются.
                    0
                    В ESLint тоже много аналогичных стилистических правил. Собственно, поэтому мы на него в свое время перешли с JSHint.
                  0
                  обновите gulp-jscs, сейчас он не поддерживает 3.0

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое