有时你需要引入向后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或什么的。

只是我的0.02美元.现代发展的环境(具体地说.净)提供的报告以开发的某些Api被宣布陈旧/已过时,将被删除,在未来版本。Microsoft C/C++编译器 #pragma弃用.

如果没有这种支持的环境中,依靠 版本控制 提供兼容的反馈意见。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top