Pourquoi node.js v4.4.5 est-il recommandé sur la v6.2.0 «pour la plupart des utilisateurs»?

J’ai utilisé node.js pour un projet de développement il y a quelques années, et cette application est en quelque sorte “bloquée” pour le moment – elle doit restr en ligne, elle doit restr sécurisée, mais cela ne devrait pas nécessiter beaucoup d’attention. Il est actuellement en cours d’exécution sur node.js v0.10.32, mais je voudrais maintenant investir dans une migration “finale” vers une version LTS (Long Term Support) afin de la maintenir plus facilement dans un avenir prévisible.

À première vue, la page d’accueil de node.js donne l’impression que la v4.4.5 est évidemment la seule version disponible de LTS:

entrer la description de l'image ici

Cependant, si je clique sur ce lien de calendrier LTS , cela raconte une histoire différente. Pour autant que je sache, la version 6 de node.js devrait également être une version LTS, avec un support d’une année complète plus tard que la version 4.

Étant donné que:

  • v6.2.0 est une version versionnée
  • La v6 est censée recevoir la maintenance LTS jusqu’en 2019-04-01
  • théoriquement, aucun changement dans v6.x ne devrait briser la compatibilité

Pourquoi devrais-je prendre la peine de passer à la v4 au lieu de la v6? Il semblerait que la v4 m’achète une année de moins de correctifs de sécurité, mais aucune garantie de compatibilité supplémentaire?

Avec mes remerciements à Jasnell et TheAlphaNerd qui ont patiemment répondu à mes questions acerbes sur GitHub, voici ma compréhension de la manière dont les versions de “support à long terme” de node.js sont gérées:

  • Toutes les versions basées sur une twig majeure à numéros pairs sont ce que d’autres projets peuvent appeler une version de “support à long terme”. On leur promet au moins 30 mois de support à partir de la première “coupure” mise à disposition (par exemple, une version packagée de la version 6.0.0).

  • Cependant, les responsables de node.js voient “LTS” comme une phase de publication plutôt qu’un type de version. Alors qu’ils ont l’intention que les versions mineures / correctives soient réalisées lorsqu’une twig majeure est en train de s’améliorer (voir “ACTUELLEMENT” ci-dessous) pour être stables et rétrocompatibles, dans le monde réel, elles peuvent commettre des erreurs.

Ils divisent donc le développement en trois phases distinctes :

  1. ACTUEL: nouvelles fonctionnalités (et corrections de bogues et correctifs de sécurité)
  2. LTS ACTIF: corrections de bogues (et correctifs de sécurité)
  3. MAINTENANCE: seuls les correctifs de sécurité

Les versions majeures aux numéros impairs n’obtiennent que la première phase avant d’être laissées pour compte. Les versions majeures, même numérotées – celles qui nous intéressent le plus ici – passent par les trois phases .

La phase ACTUELLE commence avec la première version publique et démarre le chronométrage sur la fenêtre de support de 30 mois. Ils peuvent append de nouvelles fonctionnalités importantes, qui devraient en théorie être rétrocompatibles, mais en pratique, ils peuvent poser des problèmes (ajout d’un nouveau bogue, modification du comportement mal défini, correction d’un bogue ancien, etc.). )

Puis, à un moment donné, l’équipe décide de déplacer l’effort de développement principal vers une twig majeure à nombre impair de courte durée (probablement quand elle doit intentionnellement rompre la compatibilité avec les versions antérieures). À ce stade, la twig de numéro pair se déplace vers ACTIVE LTS et elle prend beaucoup plus de précautions avec les modifications qu’elle apporte: principalement des corrections de bogues. Donc, si vous voulez vraiment de la stabilité, c’est le moment de vous “embarquer” avec une version particulière.

Finalement, il passe encore plus loin à la phase MAINTENANCE, où le code n’est touché qu’en réponse aux bogues les plus critiques (pensez aux correctifs de sécurité). Mais à ce moment-là, il y a probablement une nouvelle version de LTS “phase”.


Donc, le choix sur la page d’accueil se situe actuellement entre deux twigs paires, “v4.4.5 LTS” et “v6.2.0 current”. Si la twig la plus récente était impaire, elle ne serait pas un bon candidat pour un déploiement de production où un soutien à long terme est souhaité.

Mes options réelles sont un peu plus complexes même:

Diagramme d'état de la version actuelle de node.js

Je pourrais simplement restr sur la v0.10 qui obtiendra des corrections critiques jusqu’en octobre. Ou cogner à v0.12 pour les obtenir jusqu’à la fin de l’année. Mais aucun de ceux-là ne me gagne beaucoup, alors je les exclurai.

Je peux déployer la v4.4.5 qui obtiendra toujours des correctifs de bogues généraux et obtiendra des correctifs de sécurité pour un bon bout de temps. Cela devrait me donner l’installation la plus stable. Le cycle de support se termine déjà à mi-chemin – et quand il sera épuisé, je n’ai pas encore saisi cette occasion pour rattraper certains des changements majeurs survenus dans les versions 5 et 6.

Je me tourne vers le déploiement de la version 6.2.0, en supposant que toutes mes dépendances le prennent en charge dès maintenant. Cela me permet non seulement d’acquérir une durée de vie restante d’un an, mais aussi de me familiariser avec les changements introduits entre la version 10.10 et maintenant. (Cela me permet également d’accéder à toutes les nouvelles fonctionnalités utiles – mais dans ce cas, je n’ai pas la chance d’en tirer parti.) Le risque que je prends est que lorsque je mets à jour des versions v6.2.1 ou v6.3.0 ou au-delà de cela, cela pourrait provoquer accidentellement de mauvaises sursockets.

Dans mon cas, je préfère traiter maintenant des changements intentionnels majeurs déjà introduits par v5 et v6, puis, espérons-le, être tous réglés (ou du moins seulement un petit problème) jusqu’en avril 2019.