Подтвердить что ты не робот

Почему node.js v4.4.5 рекомендуется для v6.2.0 для большинства пользователей?

Я использовал node.js для проекта разработки несколько лет назад, и это приложение несколько "законсервировано" на данный момент - ему нужно оставаться в сети, он должен оставаться в безопасности, но он не должен много внимания. В настоящее время он работает на node.js v0.10.32, но теперь я хотел бы инвестировать в "окончательную" миграцию в версию Long Term Support (LTS), поэтому в обозримом будущем ее будет легче поддерживать.

На первый взгляд, домашняя страница node.js делает вид, что v4.4.5 - это, по-видимому, единственный доступный выпуск LTS:

введите описание изображения здесь

Однако, если я нажму ссылку LTS schedule, он расскажет другую историю. Насколько я могу судить, версия 6 из node.js также считается выпуском LTS, причем эта поддержка заканчивается на весь год позже, чем версия 4.

Учитывая, что:

  • v6.2.0 - версия с версией
  • v6 предполагается получить техническое обслуживание LTS до 2019-04-01
  • теоретически никаких изменений в v6.x не должно нарушаться назад

Почему мне нужно обновлять v4 вместо v6? Кажется, что v4 покупает мне еще один год патчей безопасности, но никаких дополнительных гарантий совместимости нет?

4b9b3361

Ответ 1

С благодарностью jasnell и TheAlphaNerd, которые терпеливо ответили на мои абербические вопросы по поводу GitHub, здесь я понимаю, как обрабатываются релизы node.js "долгосрочная поддержка":

  • Все выпуски, основанные на четкой основной отрасли, - это то, что другие проекты могут назвать "долгосрочной поддержкой". Им обещано, по крайней мере, 30 месяцев поддержки от первого "разреза", доступного (например, упакованных выпусков v6.0.0).

  • Однако поддерживающие node.js видят "LTS" как большую часть фазы выпуска, чем тип версии. Несмотря на то, что они намерены выпускать небольшие/патч-релизы, когда основная ветвь находится в активном улучшении (см. Ниже "CURRENT" ), чтобы быть стабильной и обратной совместимостью, в реальном мире они могут ошибаться.

Поэтому они делят развитие на три разных этапа:

  • CURRENT: новые функции (и исправления ошибок и исправления безопасности)
  • ACTIVE LTS: исправления ошибок (и исправления безопасности)
  • ТЕХНИЧЕСКОЕ ОБСЛУЖИВАНИЕ: только патчи безопасности

Нечетные основные версии получают только первую фазу, прежде чем оставаться позади. Основные версии с четными номерами - те, о которых нас больше всего беспокоят, - пройдите все три этапа.

Фаза CURRENT начинается с первого публичного выпуска и запускает синхронизацию часов в 30-месячном окне поддержки. Они могут добавлять важные новые функции, которые теоретически должны быть совместимы с обратной связью, но на практике могут возникнуть некоторые проблемы (добавляется новая ошибка, меняется на плохо определенное поведение, фиксируется старая ошибка, с которой вы плохо работали). )

Затем в какой-то момент команда решает перенести основные усилия по разработке на недолговечную нечетную основную ветку (предположительно, когда им необходимо преднамеренно нарушить обратную совместимость). В этот момент подразделение с четными номерами переходит к ACTIVE LTS, и они становятся намного более осторожными с изменениями, которые они делают: в основном только исправления ошибок. Поэтому, если вы действительно хотите стабильности, настало время получить "на борту" с определенным выпуском.

В конце концов, он еще больше продвигается к фазе ОБСЛУЖИВАНИЯ, где код затрагивается только в ответ на наиболее важные ошибки (подумайте: исправления безопасности). Но к тому времени уже есть новый релиз в LTS-фазе.


Таким образом, выбор на главной странице сейчас находится между двумя четными ветвями, "v4.4.5 LTS" и "v6.2.0 current". Если новая ветвь была нечетной, то это не было бы хорошим кандидатом для развертывания производства, где требуется долгосрочная поддержка.

Мои фактические параметры немного сложнее:

Текущая таблица состояния версии  node.js

Я мог бы просто остаться на v0.10, который получит критические исправления до октября. Или поднять до v0.12, чтобы получить их до конца года. Но ни один из них не набирает меня многого, и поэтому я их исключу.

Я могу развернуть v4.4.5, который будет по-прежнему получать общие исправления ошибок прямо сейчас, и еще долго будет исправлять проблемы безопасности. Это должно дать мне самую стабильную установку. Однако цикл поддержки уже на полпути, и, когда он закончится, я упустил эту возможность сейчас, чтобы догнать некоторые из основных изменений, которые уже произошли в версиях v5 и v6.

Я склоняюсь к развертыванию v6.2.0, предполагая, что все мои зависимости поддерживают его прямо сейчас. Это не только покупает мне более долгий срок жизни "оставшегося жизненного цикла", но и меня полностью устраивает любые изменения, которые были внесены между v0.10 и теперь. (Он также дает мне доступ к любым полезным новым функциям, но в этом случае у меня нет возможности воспользоваться этим.) Я беру на себя риск, что, когда я обновляю любые гипотетические версии v6.2.1 или v6.3.0 или помимо этого, это может случайно вызвать некоторые неприятные сюрпризы.

В моем случае я бы скорее рассмотрел основные преднамеренные изменения, которые уже ввели v5 и v6, а затем, надеюсь, все будет установлено (или, по крайней мере, лишь незначительная боль) с самого начала до апреля 2019 года.