如果 Angular 版本 4 使用语义版本控制,为什么它们与版本 2 兼容?
Why is Angular version 4 compatible with version 2 if they use semantic versioning?
根据 semantic versioning,主要版本不应该与其前身不兼容吗?
@JBNizet 给出的评论中的答案:
It's not fully compatible. There are breaking changes. Most of it stays compatible, though. Read the changelog. https://github.com/angular/angular/blob/master/CHANGELOG.md
Shouldn't major releases be incompatible with their predecessors, according to semantic versioning?
规范中根本没有这样说。它的意思是,如果您确实引入了重大更改,则必须修改主版本号。如果您认为有轻微的破损可能性,该措辞不会阻止您修改主版本号。事实上,如果相对于以前的次要版本和补丁级别版本有相当大的代码变动,那么通常会升级主要版本;为了允许通常发生的较慢的采用率,当客户厌恶风险时,推迟接受主要版本发布,直到他们有可用的资源来测试它。
即使是补丁发布也可能破坏某些人。软件历史上到处都是错误,有人认为这些错误在某个时间点是一个特性。开发人员根据自己和客户对错误的容忍度做出最佳判断。 Mission-critical 代码在某个地方打了一个补丁,经过全面记录、审查人员和测试人员审查,可能会发布一个补丁,但对同一产品中的主要组件进行完全重构,即使采用高开发标准,也可能尽管目标是不引入任何重大更改,但仍需要进行重大改进。 Non-mission-critical 代码只会得到一个补丁,即使是完整的 over-haul 实现也是如此。
根据 semantic versioning,主要版本不应该与其前身不兼容吗?
@JBNizet 给出的评论中的答案:
It's not fully compatible. There are breaking changes. Most of it stays compatible, though. Read the changelog. https://github.com/angular/angular/blob/master/CHANGELOG.md
Shouldn't major releases be incompatible with their predecessors, according to semantic versioning?
规范中根本没有这样说。它的意思是,如果您确实引入了重大更改,则必须修改主版本号。如果您认为有轻微的破损可能性,该措辞不会阻止您修改主版本号。事实上,如果相对于以前的次要版本和补丁级别版本有相当大的代码变动,那么通常会升级主要版本;为了允许通常发生的较慢的采用率,当客户厌恶风险时,推迟接受主要版本发布,直到他们有可用的资源来测试它。
即使是补丁发布也可能破坏某些人。软件历史上到处都是错误,有人认为这些错误在某个时间点是一个特性。开发人员根据自己和客户对错误的容忍度做出最佳判断。 Mission-critical 代码在某个地方打了一个补丁,经过全面记录、审查人员和测试人员审查,可能会发布一个补丁,但对同一产品中的主要组件进行完全重构,即使采用高开发标准,也可能尽管目标是不引入任何重大更改,但仍需要进行重大改进。 Non-mission-critical 代码只会得到一个补丁,即使是完整的 over-haul 实现也是如此。