發(fā)布一個 Ruby gem 的感覺是很棒的! 這種把你的工作成果公布并且讓他人收益的行為是非常讓人興奮的. 然后, 伴隨著這股力量的, 是責(zé)任.
不再被維護(hù)的 gem 不是很難找. 無論是因為作者自己沒興趣了或者干脆放棄了, 這樣的事情就是發(fā)生了.
這種公布你自己的成果的興奮感很快就會過去, 然后你將會對這個開源項目負(fù)起責(zé)任.
如果一個潛在的用戶在 github 或者 Rubygems page 上看到這個項目, 他們會天真的以為這個項目是活躍的并且可信任的除非你特意告訴他們不是這樣的.
Remove It
如果你不再維護(hù)一個 gem, 幫社區(qū)一個忙, 做下面的事情:
- 從 Rubygems 移除它
- 從 Github 上移除它, 或者, 至少在 README 的正前方注明
期望我們的興趣和工作隨著時間的推移而改變是合理的. 很多次, 我們基于我們當(dāng)前的需求構(gòu)建 gems. 當(dāng)這些需求改變了, 我們可能不再需要這個 gem 了, 那么這個項目就會慢慢死去.
僅僅是因為我們, 作為最初的開發(fā)者, 不再覺得這個 gem 是有用的, 不意味著其他人也這樣覺得. 如果我們覺得我們的 gem 仍然對社區(qū)有價值, 另一個選項是嘗試去發(fā)現(xiàn)另一個維護(hù)者.
尋找另一個維護(hù)者
如果我們相信我們的 gem 的價值超越了我們自己使用的范圍(看看 Github 的 start 數(shù)量和 Rubygems 的下載量), 我們可以在 README 上加上一個提示, 說明我們正在尋找一個或多個新的維護(hù)者. 如果有其他人覺得我們的工作有足夠的價值, 他們通常會過來拯救的. 如果沒有人這樣覺得, 那項目就會慢慢死去. 至少當(dāng)我們把項目從前面提到的資源中刪除, 它也不會在社區(qū)中引起反響.
總結(jié)
當(dāng)我第一次宣布我正在寫這本書時, 有一些人表示擔(dān)憂, 覺得這會導(dǎo)致很多試驗型的 gem 被創(chuàng)建, 它們對社區(qū)沒有價值. 我的目標(biāo)是同時降低構(gòu)建你自己的 gems 和為他人做貢獻(xiàn)的門檻, 不是想通過任何形式去分裂社區(qū).
我們可以確保的一種方法是, 社區(qū), 作為一個完整無缺的整體, 努力去發(fā)現(xiàn)并給已經(jīng)存在的項目做貢獻(xiàn)當(dāng)需要某個功能時. 已有的項目并不總是適合你的需求. 如果它們不是, 考慮給它們加功能而不是從頭開始. 重新創(chuàng)造輪子是沒用的. 快速的搜索一下 Google, Github 和 Ruby Toolbox 會給你一個良好的意識是否有一個帶有特定功能的 gem 已經(jīng)存在了.
無論何時開源軟件被創(chuàng)建和維護(hù), 一份責(zé)任就出現(xiàn)了. 沒有正式的規(guī)則. 我能給的最好的建議就是做正確的事. 這不一定就是最流行的選擇, 但是大多數(shù)人有正確的是非觀.
軟件項目, 特別是開源的, 會因有品質(zhì)的領(lǐng)導(dǎo)和決策中受益.
在下一章, 我們會看看如果包含 Web 引擎, 測試幫助和核心擴(kuò)展在一個 gem 中.