開源的六大謊言

| 作者:Fernando Doglio

| 轉載自:InfoQ

| 編輯:王玥敏

| 設計:王福政

| 翻譯:王者

開源是我在 IT 行業中遇到的最有趣的事情之一。它本質上是一種運動,將人們聚集在一起做一個產品。他們通常免費做這些事情,特別是在項目的開始階段,然後負責維護,讓其他人可以免費使用。

我傾向於認爲,如果有更多的行業像軟件行業一樣採用開源模式,那麼事情會變得容易得多。不過話說回來,我們要討論的不是這個。事實上,開源運動並不像人們想象的那麼完美,因爲參與開源的是人,而人是不完美的。

在開源的發展過程中,人們對它產生了很多誤解。這些誤解有很多是來自開源項目的用戶(即他們只是開源項目的用戶,而非貢獻者),或者是來自那些在錯誤的時機參與開源項目的人,從而破壞了原本精彩的開源體驗。

我寫這篇文章的目的是討論 IT 行業中有關開源的一些最常見的誤解,作爲新進者的你就可以自己決定是否要加入這個運動。

本文最初發佈於 Medium(《The Biggest Lie in Open Source》),經作者授權,由 InfoQ 翻譯並分享。

1

成本是免費的,那麼使用也必須免費

誰都知道這個,對吧?開源是免費的。我們可以免費從 GitHub 下載開發庫,作爲開發者,我們也可以在那裏免費發佈項目。

所以,只要我們有電腦,就可以寫代碼,並免費與整個行業分享。

錯了。

我們傾向於將成本與資源 (通常是物理資源) 聯繫在一起,但除了電腦,我們還需要什麼資源來生產和維護開源軟件呢?

時間。

沒錯,你的時間就是一種資源。事實上,這是你擁有的最有價值的資源之一,而你卻在考慮免費把它送給別人?你在開源項目上花費的時間可能是你的僱主沒有給你補償的那部分 (除非你是在爲他們開發這些項目)。所以,如果你的時間沒有換來收入,那你換來了什麼?你和愛人相處的時間?你用來放鬆的時間?幾個小時的睡眠?鍛鍊的時間?

時間是寶貴的,參與開源項目的每個人的時間也都是寶貴的。他們願意犧牲自己的時間開發項目給你用,但這並不意味着你有權要求你想要的任何東西。我看到有人要求貢獻者提供 24 小時支持,或者因爲他們自己的(私人)項目需要某些功能就要求貢獻者接受他們的要求。這樣的例子不勝枚舉。

根據項目的不同,既有一個人的團隊,也有由委員會領導的大型團隊,他們花費了時間和資源(是的,有時他們需要在這些項目上花錢),讓其他用戶可以免費使用他們開發的庫或框架。當你以後想要抱怨開源項目時,請先想一想項目維護者付出的成本吧。

2

開源不會帶來收入

開源軟件是免費的,因此,它的維護者和作者不能靠它謀生。

錯了。

乍一看,開源軟件對用戶來說是免費的,但要斷定這不能作爲一個有效的收入來源還爲時過早。

就像任何數字產品一樣,賺錢完全取決於你的商業模式和營銷策略。如果你對如何基於開源項目賺錢感興趣,下面是一些建議,供你參考。

提供專業服務

這是最常見的一種方式。之前說過,人們傾向於認爲,既然你已經開發了一個項目並向全世界發佈了,那麼你就要 24 小時提供支持。這絕對是一個完全不同的工作領域,既然如此,爲什麼不收費呢?

事實上,你還可以收取培訓費用,甚至爲那些想要使用你的免費產品的公司提供支持。這些就是我們所說的專業服務(爲使用你產品的公司提供服務)。

有一些大型的開源項目就是這樣做的。例如,RedHat、IBM、Hortonworks 和 Percona。

提供相關內容

你看到過(甚至是讀過)多少本有關 React 或 PHP 的書?這些書都不是免費的,不是嗎?

如果你成功地構建了一個人們喜歡和使用的開源項目,那麼你就可以通過給他們提供相關的學習內容來賺錢。這與專業服務模式非常相似,但你需要親自參與(從而可以收取更高的費用)。有了這些東西,你就可以爲非公司用戶(比如想要使用你的代碼的開發者)構建更便宜的替代品。

即使你不是項目的作者,你也可以藉助他們的項目來獲益。你正在圍繞一個開源項目 (只是它們不是你自己的項目) 構建產品。

我們說的是撰寫與開源項目有關的書,爲 Udemy 等平臺創建視頻課程,甚至是撰寫有關這些開源項目的贊助性博文。爲什麼不呢?有時候,開源項目作者也願意付錢讓你爲他們的項目寫書或文章。

捐贈

你可以從捐款者那裏賺到錢。不要害怕向別人要錢。只要做得對,這絕對是一個有效的收入來源。

如果你已經構建了一個正在被大型社區使用的項目,你會對結果感到驚訝。比如 Git 這個項目,它確實收到了來自對它感興趣的人的捐贈。

這與項目的影響力和它背後的社區有關。如果它足夠大,那就有可能從中賺到錢。

還有很多其他方法可以讓你從開源工作中獲得收入(https://www.welcometothejungle.com/en/articles/btc-money-open-source),只要你開動腦筋。

參與開源項目纔算得上是開發者

我們都知道,只有爲開源做貢獻的開發者纔算得上是真正的開發者,對吧?

錯了。

能夠爲開源做貢獻(無論是以參與項目的形式,還是基於別人的項目創建 PR)是一種特權,而不是獲得一份開發者工作或被認爲是開發者的一種要求。

是的,開源項目的貢獻者確實能夠從他們的工作中受益,因爲他們的工作是公開的,而這反過來也能讓行業和潛在僱主看到他們的項目,並對他們的技能有一定程度的瞭解,但也有一些優秀的內部開發者無法從這樣的事情中受益。

或許他們也可以把時間用在開源項目上,但也許他們使用時間的方式與你不同,因此無法參與開源項目。

我在這裏要說的是,一些公司甚至是一些開發人員認爲,如果你參與了開源項目,你就會是個出色的開發者。否則,你就是一個沒了谷歌就寫不出簡單 if 語句的公司蛀蟲。

這是不對的,所以別再這麼做了,好嗎?

維護開源代碼很容易

關於這一點,我能說些什麼呢?維護任何類型的開源項目都不是一件容易的事。

當你在開發閉源項目時,你可能需要與四到五名其他開發者共享你的代碼。當你維護的是開源項目時,整個行業都可以對你的代碼進行評審,並公開指責你的不對。

有很多文章指出,開源的一個好處是迫使你寫出乾淨和可維護的代碼。

回到重點上來:維護有數百萬開發者正在使用的代碼是一項重大的責任。即使整個社區都在努力提供幫助,你又如何能夠確保他們可以達到與你相同的標準?如何確保等待你評審的 10 個 PR 已經考慮到了所有潛在的安全風險?

如果你想要維護好開源項目,這絕對是一項非常困難的任務,並且很快會讓你精疲力盡。2018 年,一名黑客獲取了一個開源代碼庫的控制權,並加入有害代碼來竊取個人信息。黑客之所以得逞,是因爲這個開源項目的所有者和維護者工作太累了,沒有辦法一直看着 PR,他們決定把這個項目交給其他人。

他們太累了,總得要有人接替。

開源項目很容易參與

開源項目有很多,所以對某些人來說,參與開源肯定很簡單,不是嗎?

錯了。

當你想要爲開源項目做貢獻,要找到一個需要幫助的項目,並以項目維護者能夠接受的方式提供幫助,這並不是件容易的事。一些項目公開聲明他們正在尋求幫助,甚至爲新進者提供了一些待解決的問題 (以 Node.js 爲例,它將這些待解決的問題標記爲 “需要幫助” 或“第一個問題”,這樣你就知道從哪裏開始)。

當然,有些項目不會這樣做——要麼是因爲他們不尋求外部的幫助,要麼是因爲他們沒有與希望參與開源項目的人打交道的經驗。

另外,如果你想要爲自己的開源項目尋求幫助,那就更加困難了。如果你在社交媒體上有很多粉絲,或許能夠找到人。否則的話,你就得依賴項目的受歡迎程度以及其他人對它的感興趣程度。

你可以隨意拷貝和使用開源代碼

畢竟開源代碼是免費的,不是嗎?

不,不完全是這樣。

所有人都認爲,如果代碼是免費的,那就可以用它做任何事情,包括複製代碼,換個名字重新發布,甚至把功勞佔爲己有。

這就是爲什麼要有許可協議這個東西。每個希望被採用並達到某種流行程度的開源項目都應該考慮選擇一種許可協議。

許可協議限定了人們使用、更改和重新分發開源代碼的方式,從而保護你和你的用戶免受可能發生的任何非法行爲的影響。

與普遍的看法相反,即使沒有許可協議,也並不意味着你可以用代碼做任何事情。如果你在 GitHub 上發現了一個公開項目,它在服務條款中已經有一些限制和暗示了,這些限制和暗示是經過項目作者同意的。因此,作爲一個用戶,如果你發現了一個沒有許可協議的項目,就要看一下它的作者是不是不打算與任何人共享代碼,如果是,你就不能使用它。

如果你是項目的作者,並且想要了解哪種許可適用於你的項目,請參考 “如何選擇許可”(https://choosealicense.com/licenses)。

對於所有的開源項目來說,指定許可協議應該是強制性的。如果你想要參與或使用開源項目,應該注意與所選許可相關的隱式限制。

總結

開發者對開源軟件有很多假設,因爲我們通常不會爲開源軟件付錢。但這些假設是錯誤的,並且影響到了項目本身以及項目作者和維護人員的生活。

原文鏈接:

https://medium.com/better-programming/the-biggest-lie-in-open-source-de38f71aa88c

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/10g7u7ZHqaTst3jIPNAbkw