Pourquoi node.js v4.4.5 recommandé plus de 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 un peu "mis en veilleuse" pour le moment, elle a besoin de rester en ligne, il a besoin pour rester en sécurité, mais il n'a pas besoin de beaucoup d'attention. Il est actuellement en cours d'exécution sur node.js v0.10.32, mais maintenant, je voudrais investir dans une "finale" de la migration d'un Support à Long Terme (LTS) de libération de sorte qu'il sera plus facile à maintenir dans un avenir prévisible.
Au premier coup d'œil, le node.js la page d'accueil de la fait ressembler à v4.4.5 est de toute évidence la seule disponible version LTS:
Cependant, si je clique sur que LTS annexe lien, il raconte une histoire différente. Aussi loin que je peux dire, la version 6 de node.js est également prévu pour être une version LTS, avec ce soutien se terminant un an après complet que la version 4 sera.
Étant donné que:
- v6.2.0 est un de version version
- v6 est censé recevoir LTS de maintenance jusqu'à 2019-04-01
- théoriquement pas de changements dans la v6.x devrait casser la compatibilité descendante
Pourquoi je prendrais la peine de la mise à niveau de la v4 à la place de la v6? Semble v4 m'achète un de moins l'année de correctifs de sécurité, mais pas de compatibilité supplémentaires garanties?
- Ressemble à ce pourrait être au moins un peu lié à un bug, le projet est suivi concernant LTS messagerie: github.com/nodejs/LTS/issues/63
Vous devez vous connecter pour publier un commentaire.
Avec gratitude jasnell et TheAlphaNerd qui a patiemment répondu à mon commentaire acerbe des questions sur GitHub, voici ma compréhension de la façon dont node.js "long term support" rejets sont traités:
Toutes les versions basées sur une paire branche majeure sont quels sont les autres projets pourrait appeler un "support à long terme" version. Ils sont promis au moins 30 mois à partir de la première de "couper" mis à disposition (par exemple, un emballés v6.0.0 rejets).
Cependant, l'node.js les responsables voir "LTS" de plus en plus d'une version phase qu'une version type. Alors qu'ils ont l'intention pour les mineurs/patch versions mises à quand une branche importante est active amélioration (voir "COURANT" ci-dessous) phase pour être stable et compatible, dans le monde réel, ils peuvent faire des erreurs.
Donc ils divisent le développement dans trois phases distinctes:
Impaires versions majeures d'obtenir seule la première phase de avant d'être laissé derrière. Paires versions principales — ceux que nous sommes surtout préoccupés par ici — passer par tous les trois phases.
La phase ACTUELLE, qui commence avec la première version publique, et commence le compte à rebours, sur les 30 mois de l'appui de fenêtre. Ils peuvent ajouter de nouvelles fonctionnalités importantes, qui devrait en théorie être rétro-compatible, mais dans la pratique, des questions (nouveau bug est ajouté, les changements apportés à mal définis comportement, ils fixent un vieux bug vous avait travaillé autour de mal, etc.)
À un certain moment, l'équipe décide de déplacer le principal effort de développement pour une courte durée impaires branche importante (sans doute quand ils en ont besoin, intentionnellement, casser la compatibilité descendante). À ce moment, la paire de branche se déplace à l'ACTIF LTS et ils obtiennent beaucoup plus prudent avec les changements qu'ils apportent: principalement juste des corrections de bugs. Donc, si vous voulez vraiment de la stabilité, c'est le temps de faire "à la carte" avec une version en particulier.
Finalement, il se déplace encore à la phase de MAINTENANCE, d'où le code est touché seulement en réponse à la plupart des bogues critiques (pensez: correctifs de sécurité). Mais d'ici là, il y a probablement une nouvelle version LTS "phase" déjà.
De sorte que le choix sur la page d'accueil à droite est maintenant entre les deux paires de branches, "v4.4.5 LTS" et "v6.2.0 actuelle". Si la nouvelle branche impaire alors il serait pas être un bon candidat pour une production de déployer où le soutien à long terme est souhaitée.
Mes options sont un peu plus complexes encore:
Je pourrait tout simplement rester sur v0.10 qui vous permettra d'être critique de bugs jusqu'en octobre. Ou bosse jusqu'à v0.12 pour obtenir ceux jusqu'à la fin de l'année. Mais ni l'un de ces gains de me beaucoup, et je vais donc la règle de l'en sortir.
Je peux déployer v4.4.5 qui est encore en train de corrections de bugs généraux de droit, et de faire des corrections de sécurité pour un bon moment encore. Cela devrait me donner le plus stable installer. Le cycle est d'arriver à être à la moitié déjà, si — et quand il s'exécute, je vais avoir manqué cette occasion maintenant de rattraper certains des principaux changements qui ont déjà eu lieu en v5 et v6.
Je me penche vers le déploiement de v6.2.0, en supposant que toutes mes dépendances de soutien à l'instant. Ce n'est pas seulement m'achète un an à plus long terme de "lifecyle restants", mais aussi me met entièrement pris avec toutes les dernières modifications qui ont été introduites entre v0.10 et maintenant. (Il permet aussi de me l'accès à toutes les nouvelles fonctionnalités utiles — mais dans ce cas je n'ai pas de chance à prendre avantage de cela.) Le risque que je prends, c'est que quand je l'ai mise à jour vers un hypothétique v6.2.1 ou v6.3.0 ou au-delà de qui vient le long, il risquerait de donner des mauvaises surprises.
Dans mon cas, je préfère maintenant les principaux changements intentionnels que les v5 et v6 ont déjà mis en place, et ensuite on l'espère, être tous ensemble (ou du moins que la douleur mineure) à partir de maintenant, tout le chemin jusqu'en avril 2019.