如何宣布后不兼容的变化开放源码软件的项目?
-
05-09-2019 - |
题
有时你需要引入向后incompatibile变化,当时的改善远远超过缺点。它可以很容易地转换到旧的行为,但必须为用户意识到这样的变化。
因此,问题是: 如何宣布未来的向后兼容改变以牙线(开放源)项目, ,使用户可以为他们准备,要么改变自己使用,或配置程序可以使用旧的行为。
因为它是开放源码软件的项目,包装,通过各种分布独立,并可自动升级,而无需用户的干预。然后向后兼容的改变可能会混乱somebodys工作流程(第三方脚本)。
渠道,目前审议(和使用):
- 项目的邮件列表
- 项目的主页
- 释放笔记(第一警告,然后公布)
- 维护者的博客
编辑1: 这个(后不兼容的)变化发生在一些 主要的 释放。
所有的改变都是增加保障措施(拒绝命令而可以彻底混淆新手用户),或改变违约,更理智的价值观。
编辑2: 在过渡期间的默认结构(这意味着要改变为默认的拒绝/否认)改变 警告, ,说明如何把一个警告,这也会保护对落后incompatibile变化默认行为。
但如果这是自动化系统,该系统可能无法帮助...
该项目在的问题是 Git, 分布式版本控制系统;
看看 提供早期预警的用户 在 gitster的日记 (Junio C滨野博客)
解决方案
- 变化主要的版本号
- 宣布它通过所有渠道在你处置
- 添加突出的宣布在readme
- 加入代码之间进行转换的旧的和新的如果DB或其他变化的需要
- 添加码,检测使用的折旧方法、数据储存等,并提醒用户之前进行破坏性的变化
- 要求相关的常见问题的类型问题上的主要Q/一个网站,所以,当有人查询的答案是立即和明显的使用一个简单的搜索
但主要的版本数量是首要目标-人们预期1.x2。x过渡引起的问题,并更加谨慎的时候升级。
-亚当
其他提示
你已经得到了很好的回答关于获得了这个词。但是迁移我自己的思维方式是最大的问题对我来说,尤其是当过时的职能都在我的肌肉记忆。忘却是难于学习。
得到警告的未来incompatibilites 当我实际上使用的命令都会改变的 特别有帮助,特别是与变化中的缺省值。是这样的:
$ git foo
Note: git foo currently defaults to HEAD. Starting with
version 2.0, git foo will instead default to master.
我可以去RSS(如果存在),Twitter(如果存在的话)、邮件列表(邮件至少3次更新是在闭幕),网页(使它非常的对比,因此很容易看出)和博客,当然。释放注意到几乎没有读,因此把它作为最后一点信息。
(I公布此作为第一个答复,但没有出现)
所有上述加。
如果你有一个改变其中:
的确切法的一个非破坏性的命令将改变成为一个破坏性的命令
我看不出有任何选择,但作出的改变,而不是 更多 破坏性渲染的老命令完全无效,这样,如果一个用户的升级和尝试(或很可能是一个脚本,试图)的旧风格的命令终止与描述性的错误消息,在stderr。使用stderr对警告信息的命令具有微妙的(或者不那么微妙的)变化,是非破坏性也是一个很好的想法。定义的破坏性是有更复杂的上一个资源库
使用stderr警告简单的折旧方法常常是好的,但有些人会抱怨它打破了他们(重写)脚本。在这些情况下,沉默的否决释放(所有非侵入性形式的否决),其次是口头(stderr警告)释放后或许(见下文),与一非功能性的,但本释放,随后再由总删除。最后这一非功能释放,将严重依赖于该项目的问题,因为它可能是更多的麻烦比它的价值,尤其是那些用户都表现良好,并保持最新的被弃用的功能。
由于具体的改变,你参照的是删除的建ins这应该是美好的,我可能不会做一个释放与建立程序中非功能的模式,但我不知道该项目以及足够肯定地说。
注意 代码 而不是脚本水平的变化能够在许多现代语言要留在方法存根的属性/注释的,这将完全隐藏他们从智能感以及拒绝为编制止他们。这使得他们的存在(与一个简单的例外,如果使用)的一个好得多的方法,找出你不能使用他们比一个运行时MissingMethodException或什么的。