为什么node.js v4.4.5推荐超过v6.2.0"对于大多数用户而言#34;?

时间:2016-05-30 19:39:13

标签: node.js version

几年前我使用node.js作为开发项目,而且这个应用程序有点"封存了#34;暂时 - 它需要保持在线,它需要保持安全,但它不应该需要太多关注。它目前正在node.js v0.10.32上运行,但我现在想投资一个" final"迁移到长期支持(LTS)版本,以便在可预见的未来更容易维护。

乍一看,node.js主页看起来像v4.4.5显然是唯一可用的LTS版本:

enter image description here

但是,如果我点击LTS schedule链接,它会说明一个不同的故事。据我所知,node.js的第6版也将被定为LTS版本,该支持将比版本4晚一年结束。

鉴于:

  • v6.2.0是版本化版本
  • 据称
  • v6接受LTS维护直至2019-04-01
  • theoretically v6.x中的任何更改都不应导致向后兼容性

为什么我要打扰升级到v4而不是v6?似乎v4只给我一年的安全补丁,但没有额外的兼容性保证?

1 个答案:

答案 0 :(得分:48)

感谢jasnellTheAlphaNerd在GitHub上耐心地回答了我的尖刻问题,这是我对node.js“长期支持”版本如何处理的理解:

  • 基于偶数主分支的所有版本其他项目可能称之为“长期支持”版本。他们承诺提供至少30个月的第一次“削减”支持(例如打包的v6.0.0版本)。

  • 但是,node.js维护者将“LTS”视为发布阶段而不是版本类型。虽然他们打算在主要分支正在积极改进(见下面的“当前”)阶段时进行次要/补丁发布,但是在现实世界中他们可能会犯错误。

因此他们将开发分为three distinct phases

  1. CURRENT:新功能(以及错误修复和安全补丁)
  2. ACTIVE LTS:错误修复(和安全补丁)
  3. 维护:仅限安全补丁
  4. 奇数主要版本在落后之前仅 偶数主要版本 - 我们最关注的版本 - 通过所有三个阶段

    CURRENT阶段从第一个公开发布开始,并在30个月的支持窗口开始计时。它们可能会添加重要的新功能,理论上它们应该是向后兼容的,但实际上可能会出现一些问题(添加了新的bug,对定义不明确的行为进行了更改,修复了一个很糟糕的旧bug,等等。 )

    然后在某个时刻,团队决定将主要的开发工作转移到一个短命的奇数主要分支(大概是当他们需要故意破坏向后兼容性时)。此时,偶数分支移动到ACTIVE LTS,他们对所做的更改更加谨慎:主要是修复错误。因此,如果您真的想要稳定性,那么现在是时候了解特定版本的“船上”。

    最终它进一步移动到MAINTENANCE阶段,仅在响应最严重的错误(想想:安全补丁)时才触及代码。但到那时,LTS“阶段”可能已经有了新版本。

    因此,现在主页上的选择是在两个偶数分支之间,“v4.4.5 LTS”和“v6.2.0 current”。如果较新的分支是奇数编号,那么它 不适合需要长期支持的生产部署。

    我的实际选择甚至更复杂:

    Current node.js version status chart

    我可以简单地留在v0.10上,直到十月才能获得关键修复。或者达到v0.12以获得那些直到年底。但是其中任何一个都不会让我受益匪浅,所以我会把它们排除在外。

    我可以部署v4.4.5,它现在仍然会得到一般的bug修复,并且会在很长一段时间内获得安全修复。这应该给我最稳定的安装。虽然支持周期已经过了一半 - 但是当它用完时我现在已经错过了这个机会来赶上v5和v6中已经发生的一些重大变化。

    我倾向于部署v6.2.0,假设我的所有依赖项现在都支持它。这不仅让我获得了一年的“生命周期剩余”,而且还让我完全了解了v0.10和现在之间引入的任何重大变化。 (这也让我可以访问任何有用的新功能 - 但在这种情况下我没有机会利用它。)我冒的风险是当我更新到任何假设的v6.2.1或v6.3.0或除此之外,它可能会意外地产生一些不好的意外。

    在我的情况下,我宁愿现在讨论v5和v6已经引入的主要故意变化,然后希望从现在一直到2019年4月全部设定(或者至少只是轻微的痛苦)。