第一次向開源專案貢獻程式碼的歷程
前言
這篇文章並沒有什麼高深的技術,只是自己簡單的一個歷程,以及對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
- CNCF:中國已成為全球第二大開源貢獻國 CNCF專案的程式碼貢獻接近100萬
- 貢獻Dubbo生態,阿里開源Nacos專案阿里
- 貢獻過Github開源專案的可領$231,親測有效!Github
- 以Dubbo為例,聊聊如何為開源專案做貢獻
- 如何向開源專案(Apache-InLong)提交程式碼Apache
- AI Devin第一次成為自己程式碼庫的最大貢獻者AIdev
- 如何給 swoft 貢獻程式碼
- 為什麼要貢獻開源
- 我給Apache頂級專案貢獻了點原始碼。Apache原始碼
- 如何為開源軟體做出貢獻
- 實踐心得:從讀論文到復現到為開源貢獻程式碼
- 談談我第一次如何為 Laravel 貢獻原始碼Laravel原始碼
- 小記:為開源專案增加一個新功能的開發歷程
- [轉]Git清除貢獻者資訊和歷史提交記錄,將開源專案拉取二次開發時可用到Git
- HttpClient.PatchAsJsonAsync - dotnet/runtime 專案貢獻小記HTTPclientJSON
- [譯] 為 GitHub 專案做出貢獻的初學者指南Github
- 學習原始碼的第八個月,我成了Spring的開源貢獻者原始碼Spring
- 個人/團隊/公司開源,Joyqi 談貢獻開源的「不同姿勢」
- 終於等到你!阿里正式向 Apache Flink 貢獻 Blink 原始碼阿里Apache原始碼
- TDengine 上榜 BenchCouncil 全球第一個開源貢獻榜
- 開源貢獻者翻譯組 LCTT 九歲啦
- 戰碼先鋒直播預告丨參與文件貢獻,開啟OpenHarmony社群貢獻之旅
- 從 re:Invent 看 AWS 對開源和社群的新貢獻
- 開源者的自我修養|為 ShardingSphere 貢獻了千萬行程式碼的程式設計師,後來當了 CEO行程程式設計師
- Bitter.NotifyOpenPaltform : HTTP 非同步訊息接收排程中心--開源貢獻 之 一:簡介ORMHTTP非同步
- 向微軟官方貢獻 @types 包後引發的思考微軟
- 個人 Laravel 論壇專案 (程式碼開源)Laravel
- Measure階段是如何為六西格瑪專案做貢獻的?
- 參與開源之夏 x OpenTiny 跨端跨框架 UI 元件庫貢獻,可以贏取獎金?!這份《OpenTiny 開源貢獻指南》請收好?!跨端框架UI元件
- 聊聊原始碼貢獻這件大事原始碼
- 開源 2 年、打磨 13 年、300 萬行程式碼的開源專案行程
- 為何《貢獻者許可協議》不利於開源社群?協議
- 邀請學生加入 Google Summer of Code,為開源做出貢獻!Go
- iOS專案元件化歷程iOS元件化
- 2019 年第 9 周沸點看點:我為開源做貢獻(文末招聘專場)
- 關鍵點檢測專案程式碼開源了!