為開源社群做貢獻

2022-04-02 17:22:53 字數 1938 閱讀 6809

在過去的一年多時間裡,我很幸運地為兩個開源專案貢獻了幾千行**。在node-webkit的提交記錄中,我有34個commits,在chromium中,用了六個月的時間也提交了30+個commits,可以說對如何加入開源社群有一點點的自己的看法了。寫這篇部落格的目的是為了記錄下我的經驗,希望可以鼓勵更多像我一樣希望為開源專案做貢獻的學生參與到自己喜歡的開源社群中。說真的,花時間參與乙個優秀的開源專案,將你大學期間自學的一些東西應用於實踐中,還能接觸到你在大學課堂上幾乎不可能學到的知識,比起為了拿多那麼點分數而努力完成作業值多了。

我為什麼會花費這麼多精力在這個事情上?

第一點:「大學裡時間太多,為了不像周圍其他同學一樣虛度,做一些有意義的事情,就開始參與 chromium 了。」 這句話是我發郵件感謝方覺在我第一次提交**時指導我解決問題的時候他回覆我的。參與開源社群就是乙個很有意義的事情。當你作為乙個開源專案成長的見證者和貢獻者,當其他人談到這個專案的時候,難道不會小心臟稍微激動一下嗎?補充一下背景:node-webkit,目前在github上有7000+的star的乙個c++專案,我在它只有幾百個star就接觸到,並且貢獻了上千行**。

第二點:幫人家解決問題是一種能力,也是一種樂趣。在node-webkit的issue list中,有人說這個問題:@zhchbin能解決,還專門發郵件給我讓我幫忙看看,然後還說要給我100美刀作為bounty的時候,我很開心。並不是因為解決問題了能夠得到他說的100美刀,而是人家信任你,覺得你有能力去幫助他們解決問題。在chromium的issue list中,每當我看到人家給我的**提交回覆乙個thanks/awesome的時候,我也會暗喜的,畢竟這些人都是google的軟體工程師,他們在認可你做出的努力。

第三點:學到的總會比付出的翻倍。在做開源專案的過程中,每解決乙個問題就會學習到該問題相關領域的知識,比如在這段時間內我接觸到了win32 api/gtk+/x11等。還可以體驗到如何與其他人協同工作。chromium上的reviewer總能給我一些啟發,他可以在**的層次上直接教你正確的寫**方式以及如何寫出其他人也看得懂的**!在這段期間,我知道了測試**的重要性,知道了**風格的重要性。

還有不少點,這裡就先不廢話了。

我聽過不少人想要為開源專案做貢獻,卻總是被開源專案的門檻嚇跑了。的確,我覺得我真正弄懂node-webkit**的時候是我決定轉去chromium社群的時候,那個時候我已經為node-webkit寫了兩個多月(iirc)。而就算我有為node-webkit寫過**的經驗,在進入chromium社群的時候也是遇到了很大的困難。接下來,我就寫一下,在我看來,應該怎麼樣子加入乙個開源社群,以為chromium貢獻**為例子。

第二:閱讀相關文件,了解chromium的整體架構。這裡說的相關文件是比較坑爹的,文件那麼多。其實要耐心,文件你肯定一開始是看不懂的,比如這篇入門必看文件之:chrome的多程序架構。

第四:**搜尋工具: 這個工具太好用,也太重要了!當你在看人家的**時,可以利用這個工具找到具體的**實現,而且通常情況下要好好閱讀相關**的注釋。

第五:分享一點我解決問題的思路,基於對**的熟悉程度才能解決的問題這個我沒法怎麼分享經驗。這裡想說的其實是如何在如此龐大的專案中定位到需要修改的**的地方。在遇到程式crash的時候(經常是空指標的情況),我們其實可以利用gdb(在linux上),vs2010中attach to process的功能(在windows上)得到程式奔潰的時候的呼叫棧,然後利用上面的**搜尋工具就可以找到相應的**了。接下來,就是認真讀懂相關的**,用你的聰明才智想出乙個合理的解決方法。如果遇到的問題是chrome://settings/類似url頁面(這些頁面都是採用html/css/js實現的,webui)中的,那就可以用f12調出開發工具,找到頁面元素的id值,然後還是在上面的搜尋工具中查詢相關的**。

第n:相信自己。上面講的那些東西,無非是為了引出最後這個點。如果你真的感興趣,相信自己,堅持,加油。

「這個事情如果不是我去完成,那麼還有誰會去做呢?「

: 在第一次提交**到chromium上的時候認識的,當時多虧了他的指導啊,感謝。

開源專案貢獻

一 github的開源專案 github 是目前世界上最大的開源專案的託管交流平台。貢獻開源專案的流程也是 github 全力支援的,也一樣是遵循 github flow,雖然跟前面團隊合作流程會有一點差別。在團隊內部,大家都是有寫許可權的。但是網上的開源專案參與者眾多。如果你一上去就跟專案的擁有者...

開源貢獻 計算 沒有時間為開源做出貢獻的8種方法

開源貢獻 計算 做出貢獻的第一步是弄清楚您到底在做什麼。您是否有自己的專案要進行?是否有您要幫助的特定專案?你只想做點什麼嗎?弄清楚自己在做什麼,將幫助您決定生活中的優先事項。編寫新功能可能需要花費大量的設計,編碼和測試時間。幾分鐘,然後離開,然後從您停下來的地方繼續工作,這並不總是那麼容易。如果您...

ONAP開源社群

5g是下一代移動通訊技術,其應用範圍將包含無人駕駛汽車 智慧型工廠 城市 教育行業等社會生活和生產的各個領域,改變社會這一特性並不是誇大其詞。在大環境下,5g會給通訊技術工作帶來怎樣的挑戰呢?如何實現網路自動化,讓5g變成一張可以同時動態支援多種不同服務的網路,成為影響5g穩定發展的關鍵因素。為什麼...