构建一个 Ruby Gem 第八章 责任

发布一个 Ruby gem 的感觉是很棒的! 这种把你的工作成果公布并且让他人收益的行为是非常让人兴奋的. 然后, 伴随着这股力量的, 是责任.

不再被维护的 gem 不是很难找. 无论是因为作者自己没兴趣了或者干脆放弃了, 这样的事情就是发生了.

这种公布你自己的成果的兴奋感很快就会过去, 然后你将会对这个开源项目负起责任.
如果一个潜在的用户在 github 或者 Rubygems page 上看到这个项目, 他们会天真的以为这个项目是活跃的并且可信任的除非你特意告诉他们不是这样的.

Remove It

如果你不再维护一个 gem, 帮社区一个忙, 做下面的事情:

  1. 从 Rubygems 移除它
  2. 从 Github 上移除它, 或者, 至少在 README 的正前方注明

期望我们的兴趣和工作随着时间的推移而改变是合理的. 很多次, 我们基于我们当前的需求构建 gems. 当这些需求改变了, 我们可能不再需要这个 gem 了, 那么这个项目就会慢慢死去.

仅仅是因为我们, 作为最初的开发者, 不再觉得这个 gem 是有用的, 不意味着其他人也这样觉得. 如果我们觉得我们的 gem 仍然对社区有价值, 另一个选项是尝试去发现另一个维护者.

寻找另一个维护者

如果我们相信我们的 gem 的价值超越了我们自己使用的范围(看看 Github 的 start 数量和 Rubygems 的下载量), 我们可以在 README 上加上一个提示, 说明我们正在寻找一个或多个新的维护者. 如果有其他人觉得我们的工作有足够的价值, 他们通常会过来拯救的. 如果没有人这样觉得, 那项目就会慢慢死去. 至少当我们把项目从前面提到的资源中删除, 它也不会在社区中引起反响.

总结

当我第一次宣布我正在写这本书时, 有一些人表示担忧, 觉得这会导致很多试验型的 gem 被创建, 它们对社区没有价值. 我的目标是同时降低构建你自己的 gems 和为他人做贡献的门槛, 不是想通过任何形式去分裂社区.
我们可以确保的一种方法是, 社区, 作为一个完整无缺的整体, 努力去发现并给已经存在的项目做贡献当需要某个功能时. 已有的项目并不总是适合你的需求. 如果它们不是, 考虑给它们加功能而不是从头开始. 重新创造轮子是没用的. 快速的搜索一下 Google, Github 和 Ruby Toolbox 会给你一个良好的意识是否有一个带有特定功能的 gem 已经存在了.

无论何时开源软件被创建和维护, 一份责任就出现了. 没有正式的规则. 我能给的最好的建议就是做正确的事. 这不一定就是最流行的选择, 但是大多数人有正确的是非观.
软件项目, 特别是开源的, 会因有品质的领导和决策中受益.
在下一章, 我们会看看如果包含 Web 引擎, 测试帮助和核心扩展在一个 gem 中.

推荐阅读更多精彩内容