放棄你的代碼,而不是你的時間
![](https://linuxstory.org/wp-content/uploads/2024/06/070812nzvnszsdnnsp7plq-800x400.jpg)
作為軟體開發人員,我認為我們可以認同開源代碼 注1 已經改變了世界。它的公共性質去除了壁壘,可以讓軟體可以變的最好。但問題是,太多有價值的項目由於領導者的精力耗盡而停滯不前:
「我沒有時間和精力去投入開源了。我在開源上沒有得到任何收入,所以我在那上面花的時間,我可以用在『生活上的事』,或者寫作上……正因為如此,我決定現在結束我所有的開源工作。」
—— Ryan Bigg,幾個 Ruby 和 Elixir 項目的前任維護者
「這也是一個巨大的機會成本,由於我無法同時學習或者完成很多事情,FubuMVC 佔用了我很多的時間,這是它現在必須停下來的主要原因。」
—— 前 FubuMVC 項目負責人 Jeremy Miller
「當我們決定要孩子的時候,我可能會放棄開源,我預計最終解決我問題的方案將是:核武器。」
我們需要的是一種新的行業規範,即項目領導者將總是能獲得(其付出的)時間上的補償。我們還需要拋棄的想法是, 任何提交問題或合併請求的開發人員都自動會得到維護者的注意。
我們先來回顧一下開源代碼在市場上的作用。它是一個積木。它是實用軟體,是企業為了在別處獲利而必須承擔的成本。如果用戶能夠理解該代碼的用途並且發現它比替代方案(閉源專用、定製的內部解決方案等)更有價值,那麼圍繞該軟體的社區就會不斷增長。它可以更好,更便宜,或兩者兼而有之。
如果一個組織需要改進該代碼,他們可以自由地聘請任何他們想要的開發人員。通常情況下為了他們的利益會將改進貢獻給社區,因為由於代碼合併的複雜性,這是他們能夠輕鬆地從其他用戶獲得未來改進的唯一方式。這種「引力」傾向於把社區聚集在一起。
但是它也會加重項目維護者的負擔,因為他們必須對這些改進做出反應。他們得到了什麼回報?最好的情況是,這些社區貢獻可能是他們將來可以使用的東西,但現在不是。最壞的情況下,這只不過是一個帶著利他主義面具的自私請求罷了。
有一類開源項目避免了這個陷阱。Linux、MySQL、Android、Chromium 和 .NET Core 除了有名,有什麼共同點么?他們都對一個或多個大型企業具有戰略性重要意義,因為它們滿足了這些利益。聰明的公司商品化他們的商品,沒有什麼比開源軟體便宜的商品了。紅帽需要那些使用 Linux 的公司來銷售企業級 Linux,Oracle 使用 MySQL 作為銷售 MySQL Enterprise 的引子,谷歌希望世界上每個人都擁有電話和瀏覽器,而微軟則試圖將開發者鎖定在平台上然後將它們拉入 Azure 雲。這些項目全部由各自公司直接資助。
但是那些其他的項目呢,那些不是大玩家核心戰略的項目呢?
如果你是其中一個項目的負責人,請向社區成員收取年費。開放的源碼,封閉的社區。給用戶的信息應該是「盡你所願地使用代碼,但如果你想影響項目的未來,請為我們的時間支付。」將非付費用戶鎖定在論壇和問題跟蹤之外,並忽略他們的電子郵件。不支付的人應該覺得他們錯過了派對。
還要向貢獻者收取合併非普通的合併請求的時間花費。如果一個特定的提交不會立即給你帶來好處,請為你的時間收取全價。要有原則並記住 YAGNI。
這會導致一個極小的社區和更多的分支么?絕對。但是,如果你堅持不懈地構建自己的願景,並為其他人創造價值,他們會儘快為要做的貢獻而支付。合併貢獻的意願是稀缺資源。如果沒有它,用戶必須反覆地將它們的變化與你發布的每個新版本進行協調。
如果你想在代碼庫中保持高水平的概念完整性,那麼限制社區是特別重要的。有自由貢獻政策的無領導者項目沒有必要收費。
為了實現更大的願景,而不是單獨為自己的業務支付成本,而是可能使其他人受益,去眾籌吧。有許多成功的故事:
眾籌有局限性。它不適合大型項目。但是,開源代碼也是實用軟體,它不需要雄心勃勃、冒險的破局者。它已經一點點地滲透到每個行業。
這些觀點代表著一條可持續發展的道路,也可以解決開源的多樣性問題,這可能源於其歷史上無償的性質。但最重要的是,我們要記住,我們一生中只留下那麼多的按鍵次數,而且我們總有一天會後悔那些我們浪費的東西。
- 注 1 :當我說「開源」時,我的意思是代碼許可以某種方式來構建專有的東西。這通常意味著一個寬鬆許可證(MIT 或 Apache 或 BSD),但並非總是如此。Linux 是當今科技行業的核心,但是是以 GPL 授權的。
感謝 Jason Haley、Don McNamara、Bryan Hogan 和 Nadia Eghbal 閱讀了這篇文章的草稿。
via: http://wgross.net/essays/give-away-your-code-but-never-your-time
作者:William Gross 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive