如何把開源作為一份職業(yè)
你知道嗎?80% 的維護者認為招募新的貢獻者是一個挑戰(zhàn),92% 的雇主認為很難雇用到開源人才。而另一方面,52% 的開發(fā)者希望為開源做出貢獻,33% 的人不知道從哪里開始,31% 的人認為自己不夠熟練。公共數(shù)據(jù)顯示,社會對具有開源技能的人有很大的需求。因此,讓我們看看如何才能夠把開源作為一份職業(yè),以填補這個供需之間的差距吧!
掌握一個技能
開源旅程的起點僅僅是你擅長的某個技能罷了。許多開發(fā)者會在空閑時間從事開源工作,他們在不熟練的領域投入精力,并把這些技能引入到技術領域里來。像機器學習(ML)、云原生和大數(shù)據(jù)分析這樣的技能是很受歡迎的,因為許多項目都圍繞著它們而進行。
開發(fā)者必須不斷嘗試,直到找到自己感興趣的東西為止。例如,當我開始在開源領域工作時,我選擇了移動用戶界面(UI)和 Web 開發(fā)(包括前端和后端)方面的工作。這個選擇并不簡單,我花了很多時間來弄清楚我想從事什么。因此,重要的是要遵循你的興趣,通過學習和建立項目來探索不同的領域。很多時候,理論教程可能不如建立實際項目更有幫助。掌握技能的唯一方法是將所學的東西應用到實際項目中。
如果你已經在某項技術和項目上投入了很長時間,那么你應該花時間好好分析一下。如果你對這個項目不感興趣,那么放棄它可能是更好的選擇。然而,這也可能是一把雙刃劍。有可能你會發(fā)現(xiàn)一些感興趣的東西,從而產生一個新的權衡。如果經過了充分的分析,你也知道了自己傾向于哪些技能組合,那么下一步就是建立自己的項目。
建立一個項目
無論項目的內容如何,只要它是活躍的,就會產生很大的價值。但請記住,一旦它開源了,你千萬不要被大家的反應所左右。并且記住,無論你是為一個應用程序建立一個 UI,還是僅僅記錄一個適當?shù)淖⑨尅①Y源或 URL 的列表,你的工作都可以對開源用戶有很大幫助。
在很大程度上,學習不同的工具有助于建立開源項目。因此,學習關于版本控制系統(tǒng)、Git、GitHub 和 GitLab(大多數(shù)項目都在它們上面)的一切是很重要的。由于互聯(lián)網上已經有足夠的教程,我只收集了一些可以在 ??navendu.me/osidays?
? 上找到的。你需要通過撰寫文檔和公開自己學到的內容,來“公開學習”才行。
打造一份職業(yè)
你可以通過三種方式在開源領域建立一份職業(yè)。
構建、擴展你自己的開源項目,并讓它盈利
如果你想要建立一個自己的項目,發(fā)現(xiàn)并解決問題是一個很好的經驗法則。記下別人可能面臨的問題,一個項目需求就這樣產生了。你的項目的市場規(guī)模只能通過試驗和錯誤來估計。對于既沒有太多資金的、也沒有太多經驗個人貢獻者來說,社交媒體、博客、帖子和會議上的講話,都會在很大程度上有助于接觸到用戶。這些平臺可以為你的開源項目帶來巨大的流量。
資金在幾乎所有的商業(yè)模式中都起著重要作用。Mozilla 基金會依靠自愿捐款來資助其項目。MariaDB 采用了延遲開放源代碼的商業(yè)模式。IBM 的許多開源項目遵循開放核心的商業(yè)模式,即項目的核心部分是開源的,而周圍的附加部分是閉源的和專有的。紅帽公司不出售代碼,而是出售專業(yè)服務,如支持、工具和圍繞項目的技術援助。這些商業(yè)模式的例子可以被采用,以此來建立一個項目,將它開源,并使其盈利。
“即使你不是維護者,也要做維護者的工作。”
在一個以開源商業(yè)模式建立項目的公司工作
成為貢獻者和維護者社區(qū)的一份子,參與會談和參加會議將有助于你為項目做出貢獻。你可以根據(jù)引導來完成第一次貢獻,但它不一定得是代碼。一個大的代碼庫可能看起來很嚇人,但關鍵是要從小的地方著手。找到一個問題并解決它,這將有助于你了解貢獻流程、代碼庫和項目設置等。
非代碼的貢獻也是有價值的。擅長寫作的人可以通過撰寫文檔,或者為社交媒體寫作來貢獻。擅長設計的人,可以設計一個模板、一個顏色方案,或者也可以致力于創(chuàng)造一個更好的用戶界面。與資深工程師相比,新人發(fā)現(xiàn)錯誤的概率很高。他們可以測試、確認并報告他們的用戶體驗,從而提升項目質量。另一個領域是新手引導,很多開源項目將導師和新手聯(lián)系起來,并幫助后者做出重要貢獻。還有一個選擇是成為組織者或社區(qū)管理員,這意味著你將承擔起項目經理的角色,確保功能完全按照預期交付,路線圖得到遵循,貢獻者得到照顧。大多數(shù)開源項目缺乏適當?shù)墓芾?,因為工程師們都不喜歡做這一類工作。
社會上有很多實習項目可以幫助你賺錢,比如谷歌的編程之夏(GSoC)和 Linux 基金會的導師制(在這里,被指導者有津貼,可以根據(jù)需要全職或兼職工作)。如果你能很好地發(fā)展你的技能,你可以在你實習的公司獲得一個全職的職位。例如,如果你在紅帽公司的一個項目中工作,你有機會被全職雇用,因為你在那里已經有了知名度。
正如 NumPy、SciPy 和 Anaconda 的作者 Travis Oliphant 所說,“建立一個開源項目,讓人們?yōu)樗龀鲐暙I,然后從他們當中招聘?!?—— 這也是我獲得全職工作的方式。
- 隨著時間的推移,你所做貢獻的質量和數(shù)量會不斷提升。最好長期參與一個項目,因為這樣可以發(fā)現(xiàn)更多的貢獻領域。投身進去做貢獻會讓人們注意到并認可你。
- 開源項目缺乏項目經理,因此成為項目經理將有助于你的職業(yè)生涯。
- 成為一個維護者,做一些工程師應該做的事情,如審閱代碼、設計系統(tǒng)、撰寫文檔和幫助他人做出貢獻。
- 好的貢獻的關鍵是“提前付出”,這意味著你需要通過分享經驗和智慧來幫助新人,并確保他們不犯錯誤。
獲得贊助以從事開源工作
作為個人,如果你正在為某個公司建立的項目而工作,你可以要求獲得資助。值得注意的是,只有當你的貢獻很大時,組織才會樂意贊助你。但是,如果你建立了自己的項目,并且有大量的用戶群,你可以向用戶要求資助。
作為一個組織,你可以通過像 Open Collective、Patreon 和 GitHub Sponsors 這樣的平臺來籌集資金,讓人們?yōu)槟愕捻椖烤杩?。?Linux 基金會和 Mozilla 基金會這樣的開源巨頭也提供資金來支持項目。GitHub 已經給 15 個印度貢獻者的項目提供了資助。
我曾經花了三個月時間建立了一個開源項目。這個項目后來被 《Product Hunt》 和 《JS Weekly》報道,還在上過 GitHub 趨勢榜排名第一的位置。正是這個項目讓我走上了開源事業(yè)的道路。