第一次向開源專案貢獻程式碼的歷程
前言
這篇文章並沒有什麼高深的技術,只是自己簡單的一個歷程,以及對github的體驗,相信部落格園有很多大牛或者即將成為大牛的人,呼籲大家多多開源,共同進步。開始正文。
從我的使用角度來看,github主要有兩個功能,一個是程式碼管理,另一個則是協同開發,之前一直用的是前一個功能,將程式碼寫完之後,及時儲存,及時提交,我一直用的是windows桌面版,覺得github真心好用、方便而且操作不難,不過前幾天github也當機過。。。
在去年下半年了做了一些SDN開源控制器ryu的工作,自己修改了ryu拓撲發現的邏輯,書寫了原始碼,關於這個修改的詳細介紹可以參見我的部落格,這篇文章也得到了中國最大的sdn網路平臺,sdnlab的認可和收錄。向開源社群貢獻的第一個程式碼便由此展開。
過程
貢獻程式碼的起因
之前做了一些關於ryu的工作,書寫了一些應用,在某次需要建立交大網路拓撲的時候,發現了ryu的拓撲發現能力有較大的侷限性(最後經過比較,發現虛擬交換機CPqD的效能比OpenvSwitch也有一定差距),所以修改了ryu拓撲發現原理,之後放在了自己的github中,發表了一些部落格,但是閱讀和程式碼使用人數十分有限。
前幾天SDN方面的一個牛人,在github上看到了我的工作,提了問題,並鼓勵我將這部分程式碼貢獻給ryu,所以激發了我第一次向開源工程貢獻程式碼的想法。
貢獻程式碼的過程
整個過程可以按照:書寫程式碼->提交merge請求->編譯檢錯->透過->。。。,因為目前只進行到了透過這一步,後面的待續,當然這整個過程都可以透過命令列來實現,這裡主要說的是客戶端。
在1月30號做完了手頭的論文相關的工作之後,修改和完善了之前的程式碼,便開始提交,簡述提交的過程:
前文提過,我用的是github Windows上的客戶端,如下圖,之前已經fork過了ryu專案,並且clone到了本地,所以直接在本地修改程式碼。
修改之後,github客戶端的changes會有提示,然後commit,同步到遠端。
之後在guthub網頁,自己的branch下,點選New pull request,進行合併,點選view pull request檢視詳細過程。
之後就會發現持續幾分鐘的編譯過程,主要包括python程式碼正確性檢測,以及最嚴格的PE8標準,由於之前的程式碼實在linux和Windows下都有編譯的,所以格式有很多問題,包括空格tab鍵混用,空行白有空格,註釋的#後面沒有空格,以及類與類之間的空行數這些問題,來回折騰了好幾遍,終於得到了如下圖所示的編譯透過。
在檢查透過之後,在發部落格前不久看了下github網站上自己commit的狀態,發現了一個問題,如下圖,即“This branch has conflicts that must be resolved”。
為解決這個問題找了些資料,最終發現是因為ryu的upstream(也就是ryu的最初建立者)commit了一些程式碼(不論是別人的pull requeest,還是merge等),證據如下圖,可以看出osrg,也就是ryu的最初建立維護者,進行了新的merge,而且和自己修改的檔案產生了衝突。
解決辦法:git fetch或者git clone獲取最新版本。
等待稽核
目前編譯透過,等待進一步的進展。
總結
開源讓開發變得簡單,開源讓我們不再重複造輪子,開源大法好。
相關文章
- NSA 向 Coreboot 專案貢獻程式碼boot
- 【開源社】您會為開源專案貢獻程式碼嗎?
- 如何給開源專案做貢獻
- 如何向開源專案做貢獻(以 incubator-dubbo 為例)BAT
- 如何給 GNU 專案貢獻程式碼
- 如何向 Mozilla 開源社群做貢獻
- 貢獻Dubbo生態,阿里開源Nacos專案阿里
- 一年內每天向開源貢獻程式碼所發生的事情
- 如何向開源軟體貢獻自己的力量
- CNCF:中國已成為全球第二大開源貢獻國 CNCF專案的程式碼貢獻接近100萬
- 5 個提升你開源專案貢獻者基數的方法
- 以Dubbo為例,聊聊如何為開源專案做貢獻
- 為開源社群做貢獻
- 貢獻過Github開源專案的可領$231,親測有效!Github
- 靈析團隊 package 陸續開源,向社群貢獻力量Package
- 向 Node.js 核心貢獻程式碼的六個步驟Node.js
- 貢獻開源專案沒那麼簡單,你要負責到底
- 為什麼要貢獻開源
- 龍芯愛好者向Linux 3.4核心貢獻程式碼並參加開源軟體大賽Linux
- 如何向開源專案(Apache-InLong)提交程式碼Apache
- 零起點的開源社群貢獻指南
- 成人網站的“歷史貢獻”網站
- AI Devin第一次成為自己程式碼庫的最大貢獻者AIdev
- 如何給 swoft 貢獻程式碼
- 如何為PHP貢獻程式碼PHP
- 如何為 PHP 貢獻程式碼PHP
- 如何為開源軟體做出貢獻
- 我給Apache頂級專案貢獻了點原始碼。Apache原始碼
- 學習如何向Linux核心貢獻程式碼,接受Eudyptula挑戰Linux
- 開源貢獻者翻譯組 LCTT 九歲啦
- 實踐心得:從讀論文到復現到為開源貢獻程式碼
- 談談我第一次如何為 Laravel 貢獻原始碼Laravel原始碼
- 專案總結以及團隊貢獻分
- 個人/團隊/公司開源,Joyqi 談貢獻開源的「不同姿勢」
- [轉]Git清除貢獻者資訊和歷史提交記錄,將開源專案拉取二次開發時可用到Git
- 如何研究開源專案的程式碼?
- [譯] 為 GitHub 專案做出貢獻的初學者指南Github
- 小記:為開源專案增加一個新功能的開發歷程