5W1H聊開源之Why——為什麼要參與開源?
中國開源的發展速度發展加快,個人和組織對於為開源作貢獻有著前所未有的激情。據《
》,約四成受訪者以自己開發開源專案、為他人提交專案程式碼、作為成員開發維護專案、捐助開源專案等不同形式參與到開源專案中;在《
》中,參與過開源專案的比例為32%,且呈增長趨勢,我國開源生態正迅速形成。
建立和維護那些被廣泛使用的開源專案每年可能需要耗費數千小時,為什麼開發者會願意花費時間和精力編寫這些免費公開的程式碼?為什麼企業會願意讓他們的員工編寫程式碼,開源讓其他公司甚至是競爭對手都可以使用?個體參與開源會得到什麼?
個人為什麼要開源?
1.提升程式碼質量
參與開源專案是提升個人程式碼質量的好方法。一方面開源會激發程式設計師的“恥感”,一旦清楚這些程式碼是要公開給別人看的,就會自覺將程式碼寫得更加整潔、乾淨,加更多註釋。另一方面,如果專案有一定的影響力,其他關注、參與的程式設計師也會給予更多建議,這樣可以博採眾長,無形之中約束自己的程式碼規範,改進自己的程式碼質量。
開源運動旗手 Eric S. Raymond 就曾說過:“只要經過足夠多雙眼睛的審查,所有的 bug 都將失去藏身之地。這就是 Linus 定律。”
2.展示個人程式碼
一個小時的面試可能只能展示你掌握的某些底層基礎或者前沿知識,但如果有開源專案傍身,就可以從你長期的程式碼中看出程式碼質量如何。而且參與開源專案還能展示出你對技術的熱愛,向面試官展示你引以為傲的開源專案,這將是個不錯的加分項。而深度參與知名開源專案的開發者,從來不缺工作,參與開源的經驗不僅能幫助他們獲得更廣闊的職業機會,而且能拓深職業發展空間。正如
jQuery 的創始人 John Resig 曾說過的那樣:“不管在任何時候,只要涉及到招聘,相比普通的簡歷而言我更看重的是應聘者在
GitHub 上開源共享的東西。”
3.建立個人品牌
正如上述兩條,程式碼質量提升和簡歷的加分項都會指向同一個成就:打造個人影響力,建立個人品牌。最為典型的就是Git的發明者Linus,儘管他的自述是“只是為了好玩”,但從他的名聲大噪來看,倒是有些“凡爾賽”了。現今活躍的很多技術大牛往往是在大公司工作過的頂級工程師,憑藉開源貢獻在軟體社群當中積累起人氣與聲望,擺脫公司標籤,成功打造個人品牌。
企業為什麼要參與開源?
1、改進程式碼和功能
大多數的組織和個人首先參與的是他們正在使用的開源專案,主要目的是想讓專案/軟體變得更完善,更便於自己使用;或者直接打造自己所需的工具並將其開源,也就是常說的“造輪子”。
這部分改進的功能當然可以自己使用不提交,但繼續分享才是讓利益最大化的方式,因為如果不貢獻自己的程式碼,就有可能面臨新版本這些功能不再工作的風險。
2.獲取競爭、招聘優勢
在程式設計師的世界中,開源雖說不上是多麼崇高的事,但整體形象確實是正面的。開源意味著企業願意與其他企業和個人共建生態,這個企業的大體上來說,是有擁抱開放的這樣的傾向的。所以參與開源有助於提高組織和企業的聲譽,且更能吸引志同道合的求職者共同發展。此外,這種行為也有助於提高組織和企業的聲譽,提升品牌形象,特別是在開發者之間的口碑,帶來的好處就是利於招聘和留住人才。
3.開源商業模式直接獲利
開源不牴觸商業,開源的目的是分享共享,但不是做慈善事業。具體盈利模式有技術支援、培訓、高階功能、雲服務等方式收費。不同的軟體、不同的領域有不同的盈利模式,但所有模式的基礎都是使用者數。只有使用者數量達到了一定的規模,才有成其商業化模式的可能。
商業開源是透過更多人的參與,減少軟體的缺陷,豐富軟體的功能,同時也避免了少數人在軟體裡留一些不正當的後門。企業透過開源的商業模式可以直接獲得經濟利潤,開源軟體最終還會反哺商業,讓商業公司為使用者提供更好的產品。
贈人玫瑰,手有餘香。開源最美妙地方就是不必花時間解決同樣的問題,當你遇到的大問題已經有人做了開源專案時,一定感覺如釋重負。同樣,當看到你的開源專案為其他人解決了問題時,巨大的成就感也是一種巨大的激勵。
所以參與開源的原因或好處,除了上述具體因素,也有各種心理原因,也包含其他諸如降低開發成本、促進行業標準、支援開源價值觀甚至純粹的享受開源樂趣或回饋開源專案等因素。參與開源的“動機”當然可以“不純粹”,也不講究“默默無聞,無私奉獻”,參與即貢獻,開源領域的發展與每一位開發者都息息相關,進一步有進一步的歡喜。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978795/viewspace-2780271/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 5W1H聊開源之What——開源是什麼?
- 5W1H聊開源之Who和How——誰、如何參與開源?
- 趣說開源|為什麼要參與到開源社群中?
- 5W1H聊開源之What——開源協議有哪些?協議
- 5W1H聊開源之Who——誰“發明”了開源?
- 為什麼要貢獻開源
- 企業開源指南:參與開源社群
- 開源與烹飪有什麼相似之處?
- 從開源的歷史與今天,聊聊為什麼要期待HDC.Cloud 2021Cloud
- 什麼情況!華為開源JDK!JDK
- 開源+SEO=什麼?
- 參與開源專案很難嗎?
- 開源無疆|京東雲參加2019開源年會,助力開源
- 開源與標準:為什麼對待專利如何不同?
- 為什麼我變成了開源主義者
- Reviewbot 開源 | 為什麼我們要打造自己的程式碼審查服務?View
- 如何去參與一個開源專案
- 你願意成為開源的見證者嗎?歡迎參與2018開源調查報告
- 為什麼電源層可以作為訊號參考平面
- 為什麼Databricks Delta Lake表格式開源很重要?
- 什麼是前端開發?為什麼要學前端開發?前端
- 開源是什麼意思?開源軟體優缺點有哪些?
- 一個普通工程師,開源專案前要考慮什麼?工程師
- 開源堡壘機是什麼?開源堡壘機的優缺點是什麼?
- HTTPDNS開源 Android SDK,賦能更多開發者參與共建httpdDNSAndroid
- 為什麼開源?curl作者:讓世界變得更美好
- 為什麼初創公司應該將程式碼開源
- 為什麼開源資料庫改變許可證?資料庫
- 為什麼說開源的COLA既是架構也是框架?架構框架
- Jtti:為什麼大部分Linux系統是開源的?JttiLinux
- 開源軟體成為“兵家必爭之地”到底是為什麼?
- 我參與 Seata 開源專案的一些感悟
- 尋找在 GitHub 上參與開源專案的方法Github
- "開源"是什麼?為啥這麼火?一定免費嗎?
- 參與到開源的發展建設中開源的建設也需要日拱一卒
- 為什麼OilStates案對於開源界是個好訊息
- 如何參與翻譯開源專案技術文件?來 Breword
- 為什麼要虛擬化,為什麼要容器,為什麼要Docker,為什麼要K8S?DockerK8S