我见过许多开源项目被贴上“没有生产准备”的标签,因为它们还没有达到一个主要版本,比如使用Sver1.0.0。
达到这个里程碑有什么意义?是否有一个标准,必须满足一个软件被认为是一个主要版本?或者是由软件的作者任意决定的?
发布于 2022-08-24 12:56:36
如果项目使用语义版本控制,则1.0.0发布意味着公共API是稳定的。
没有稳定的公共API并不一定意味着该软件的质量不足以用于生产。质量取决于用于构建软件的实践。有些项目的0.x.y版本具有良好的质量,但任何更新都可能对公共接口造成破坏性的更改,即使是补丁版本的更新也可能导致破坏更改,因此用户在应用任何更新时都需要谨慎。
“破坏更改”和“向后兼容性”的概念是相当明确定义的术语,因此它并不完全是任意的。然而,软件包的创建者最终将决定何时他们可以使用他们的公共API稳定,从而发布一个1.0.0版本的库。
当然,所有这些只适用于严格使用语义版本控制的项目。如果SemVer的所有规则和准则都没有得到应用,那么谁也不知道版本控制意味着什么。
发布于 2022-08-25 09:03:00
语义版本控制与否:主要版本号>0是作者声明该软件适合于生产使用。或者,负面的:0的主要版本是作者明确的声明,他们认为它还不够成熟。
这两种说法都可能是错误的,我的直觉是,错误的1s比0多,或者至少1是“错误的”,因为商业软件是为了赚钱而写的,而你不可能真的使用0版本。相反,开放源码软件通常在一个主要版本0下成熟到一个状态,如果它是商业化的话,它将允许一个以上的主要版本跳转。概述可以找到这里。
顺便说一句,商业版或非商业版:与某些版本x.0 (无论x的值如何)相比,您可能对某些版本x.42 (包括x == 0)感到更舒服。一个重大的版本更改通常表示一些主要的重构/重组/特性添加,这不可避免地会引入新的bug。小数0并不表示软件是无错误的,但错误尚未检测到,这使您成为松露猪。一个较小的x.42版本表示,在您开始使用x.0之前,已经消除了x.0中存在的许多错误。
发布于 2022-08-26 14:28:56
版本1发布的意义在于发布版本1的人决定它是什么。它不可能是任何其他东西。是的,有约定。是的,semver是一件(过分夸大和执行不力)的事情。在作者看来,1.0版本通常表明了某种程度的普遍使用准备。但不一定是那样的。
有时候,1.0版意味着“我们的功能已经完成,我们所知道的所有重要bug都是固定的,我们已经准备好了发布新闻稿和香槟。”
有时候,1.0版意味着“我们的功能还没有完成,还有一大堆的bug,但是市场营销说是时候发布了,所以我们开始吧!”(这并不是大多数开源项目的动机,但它取决于项目)。
有时候,1.0版意味着“我们已经在0.x上呆了10年了,人们都很高兴,我想我们也一样。”
有时,1.0版本意味着自公开发布以来的第一个真正重大的更改(就好像该项目遵循的是在0.x没有约定的情况下完成的)。
有时候,1.0版本意味着“好吧,我们从0.1计算到0.9,我的计算器说0.1和0.10是相同的数字,所以我猜1.0是下一个”。Apple II最初的28个未发布的苹果DOS内部版本是0.1到2.8版本。版本2.8被重命名为3.0,当它被发送给私有beta用户时;然后在beta测试中发现的一些bug得到了修复,这导致了第一个公开发行版是Version3.1。
总之,如果认为0.x版本比任何其他版本都更适合生产,而不了解项目及其遵循的约定,那是愚蠢的。一个0.x可能是一个but或一个移动的目标,但最好是通过阅读changelogs,或者由作者做出明确的声明,比如“这是alpha软件”或"API可能会发生变化“。版本7可能表示稳定性,但也可能表明作者对版本号很满意(如果他们是semver的坚定拥护者,这意味着他们已经至少破坏了6次了!)
https://softwareengineering.stackexchange.com/questions/440591
复制相似问题