一年內每天向開源貢獻代碼所發生的事情
我對貢獻代碼的要求比較簡單:
每次貢獻必須有意義,必須有實際影響。我可以提交只有空格的修復,但是它們不應該被算作有影響的提交。
它必須是開源的。
早在2013年夏天我就開始了,略早于John Resig,他寫了關于每天提交代碼的博客,但是我的***次嘗試失敗了。正是他的文章鼓舞了我,告訴我不是一個人在戰斗。
我和John有著同樣的理由:我熱愛業余項目(side project),但是我不樂意為了完成它們而投入整個周末。有時候,我在周末投入一整夜,但是這幫助不大:去做業余項目的時間跨度太大了,我經常想不起來在做什么以及項目的下一個想法是什么。我總要用很長時間才能重新回到項目上。另外,我不想在周末的兩天里完全忙于業余項目,因為我想花些時間和朋友在一起,以緩解一直坐在電腦前面的緊張狀況。
我開始每天貢獻代碼的其它原因是,我認為這很可能將提高我的技能。
好的方面
改善我的業余時間管理
我的業余時間整個計劃發生了變化。往好了講,我開始計劃和管理我的業余時間了。在此之前,我沒有真正考慮過工作之外的時間。在完成白天工作之后,我突然(震驚,震驚!)有了一些業余時間卻不知道做什么。
技能提高
每天忙于代碼,我沒有看到每天的工作真正地提高了我的技能。由于我在學Erlang,用Scheme編寫了我的***個程序,我在簡歷里增加了新語言。我仍然在寫Erlang。
我還學到了,較大型開源項目是如何運作和組織的,以及開源對于公司意味著什么(我甚至可以說,對于每家公司意味著什么,但這需要另一篇博文了)。我不是說,開發不包含任何開源組件的產品就不賺錢,據我看來,每個項目都擁有大量的開源組件,盈利并在長期從更好的代碼上獲益,這是有可能的事情。
另外,我在數不勝數的知識點上提高了我的知識和技能,列舉一些:解析和詞法分析、分布式計算、架構、安全、項目(代碼規范)之間快速切換、理解代碼以及代碼review。我也提高了軟技能:溝通、團隊精神、解決沖突、指導和處理高難度/突發情況下的問題。
一份新的工作
剛開始時,我有很多自己的小型業余項目,十分有趣,但是到了某個階段,我感到不開心了,沒人fork,貌似沒人使用。我是唯一的開發者,我沒有伙伴可以討論解決方案或得到review的途徑,而這是提高代碼和技能的***途徑。
我決定向較大型的項目提交代碼,既然我從0.4版本就在使用node,是一名日常npm用戶,我就向npm提交了一個補丁。Isaac Schlueter審查了我的一個PR,真不錯,這讓我為npm提交了更多的代碼。
npm registry使用CouchDB做數據庫,但是我不知道如何使用。我開始把CouchDB文檔翻譯成德語,這樣我就學會了如何使用CouchDB和如何幫助項目。有一天,我想托管我自己的私有registry,當時我的硬盤里有CouchDB源代碼,我不確定為什么registry沒有引導。當通讀代碼時,我看到CouchDB有一個JavaScript MVC app,它不是官方發布的。這一天我開始向CouchDB貢獻代碼,而npm的PR有一堆,我不想再提交了:我不想讓花時間查看的審核人感到太難。我向CouchDB貢獻了更多的代碼,因為他們真是不錯的人們。
有時候,npm有一些與Node.js直接相關的bug和問題,因此我也向Node.js項目提交代碼。
加入所有這些項目,得到review,與其他很多不同的貢獻者協作,閱讀其他人寫的大量代碼,審核補丁,和用戶交流,解決他們的問題,實實在在地加強了我的技能。
在2014年,我足夠幸運,得到了一份工作,我因為致力于開源項目CouchDB而獲得了回報。
交新朋友
經過在開源技術社區的工作,我結識了大量新朋友。我遇到很多忙于同樣工作的協作者,還有人在使用我參與的項目。他們大多比我聰明,至少對于我參與的項目來說,我可以說,他們都是非常優秀、思維開放的人。
他們就是我在發送了最初PR之后、還提交了更多補丁的理由。我認為,任何人沒有興趣把業余時間(甚至工作時間)投入到一個充滿敵意的、糟糕的環境里。
壞的方面
每天貢獻代碼并真正堅持下來,不會一直都順利。我想,大部分讓人郁悶的事情都是那些對開源產品有著古怪期望的人們,他們免費用著人們在業余時間維護的產品。
npm里的這個issue是個例子,我過去和Domenic一起在余時間做了大量工作,Domenic也花了大量時間去維護npm:
結論
每天向開源軟件貢獻代碼的決定,改變了我生活的很多方面。我現在有償參與著開源,在很多項目中交了很多朋友,這提高了我的技能。
我樂于看到公司支持他們的員工向開源軟件貢獻代碼—他們99.99%都依靠開源軟件,比如,他們的開發工具,直接應用的產品,甚至兩者兼而有之。令人悲哀的是,對于大部分員工來說,在工作時間參與開源軟件是相當難的,不是每個人都有足夠的特權能夠每天花費業余時間里的1小時參與到開源軟件里。
像Kyle Simpson和Mathias Lafeldt這些人開始了類似的項目,貌似也改變了他們的生活,還有他們看待世界的方式,我對未來充滿著渴望。