怎樣參與到全世界優秀的開源項目中?
本文首發於微信公從號「Tomcat那些事兒」,歡迎關注,共同成長。
在如今的軟體設計,架構及開發中,開源扮演著越來越重要的角色。
從SSM、ROR 到OpenJDK,Kafka, Tenserflow,甚至就連火遍全球,日行千里的比特幣 Bitcoin 也是開源產品。這種開源產品促進了更多的幣的出現與鏈的產生,當然還有習慣到忽視他是開源產品的 Linux。
- 人們平時訪問的各種網站的時候會無形中使用到開源,背後可能在使用Apache、Nginx這類的 Web Server,如果升級到https,那使用的SSL可能也是基於開源的產品,
- 每一次使用安卓手機的時候,我們都在使用開源產品
- 你毫不猶豫的,順手使用了SSM、ROR 的時候
- 為了整理多年的照片,為了按人物歸類,使用PaddlePaddle、Tensorflow的時候
- 你買了台電腦,上面預裝了 Linux
- 你在某些App中重要場景下通過眨眼認證「你就是你」的時候...
可以不誇張的說,開源產品一直影響著人們的「生產與生活」。
十年前,隨著Github的發布,使用Git 進行版本管理越來越流行。 同時我們也可以更方便的通過Github參與到開源項目中。
使用開源,同時可以將自己的代碼,想法回饋給開源社區...
所以十年間,無數優秀的開源項目通過Github進行項目託管,像 Ruby on Rails (ROR), 像Spring ,許多項目都由SVN遷移到Git。這個過程中,像SourceForge, Google Code了越來越沒落了。
當然,交給Github託管 ,這樣不僅使用到 Git 的特性,同時對於即使身處不同城市的開發者都可以參與其中。同時方便用戶的參與,提交Issue,發起 Pull Request。
這樣「眾人拾柴火焰高」,眾多人貢獻的項目,發展的更多,也發展的更好。而且,用戶在使用開源產品時,也大都會考慮該產品最近一次
更新是什麼時候。對於幾年不更新的產品,用起來是會有不小的些顧慮的。
什麼是開源
說了半天開源產品如何重要,開源怎樣影響我們的生活。開源到底是什麼?
對於開源,最基礎最直接的感受,一定是開放源碼,就是可以在任何時候,看到詳細的「源代碼」,畢竟「源碼面前,了無秘密」。
有了源碼,就可以了解其內部機制,使用過程中出現問題時,可以隨時上手自行分析解決,不必等待官方緩慢的動作。
當然,這只是第一層意義。開源,更重要的意義在於,圍繞產品的社區發展,可以將眾人的力量回饋給開源產品。眾人的參與,提出意見、想法與貢獻等這個良性的循環機制。
眾多的人都在使用產品,過程中遇到的問題,解決問題的代碼,可以再提交回產品中。一些用戶在真實的項目使用中,又由於不同的場景,可以提供不同的需求,甚至可以發現在不同環境中出現的各種問題。所以,是開源使得更多的人可以參與到產品開發中,貢獻力量。
這種「人人為我,我為人人」的勁頭,更大的促進了社區的發展。
比如影響世界的 Linux,也是在Linus 開源後吸引到全世界的高手參與其中。
怎樣參與開源項目
看了前面的內容,你可能會說對於這些開源的牛X項目,我真是「老虎吃天,不知從哪下口」,不知道從哪參與,我也沒法貢獻。
其實可以這樣考慮:
我們平時開發中要高頻使用的框架,組件的功能,如果發現具體的 Bug,就可以 fix 之後提交給官方。說不定你的改動就被合併到代碼中,影響世界上千萬開發者了。
除了代碼,項目文檔也是一個很重要的部分,我們接觸一個新的產品時,都是從其文檔開始「QuickStart」跟進從生手到進階。
所以,看到文檔中的錯誤內容,或者有些內容官方在每次產品發布後,文檔的變更遺漏了,這些都是我們可以參與其中的地方。
前面我們說開源項目對於世界的影響。而且隨著 Github的流行,參與到一個開源項目中也變的越來越容易。具體怎麼參與呢?
以我前面文章里提到的 Tomcat 管理與監控工具 psi-probe(一款功能強大的Tomcat 管理監控工具)為例。
第一步:fork
首先在 Github上找到要參與的項目,點擊右上方的 「Fork」。
此時,你會看到像我們常使用的掃描儀一樣,當前項目的「高清掃描版」不久就會出現在你的repo中。
不久, Fork 成功後,這個項目會顯示在你個人的 Repository 中。同時顯示從哪Fork出來的。可以方便的進行源的跟蹤。
Fork 之後,根據使用的情況,可以對其中你認為需要改進的地方提交代碼,參與項目。
第二步:修改代碼提交
記住,現在的這個項目,是「你」的項目。位於你的Repo中。所有的 git 操作,需要先以此這基準,git clone 到本地,進行操作,然後再commit 到「你」的倉庫中。
對於代碼的修改,可能需要熟悉具體的內部工作原理。也可以像我們前面介紹,對於其文檔進行參與貢獻。
所有的修改,變更都已經提交到 git ,同時 push 到遠程分支時,你的這些修改的代碼在 Github上你的倉庫里也就都能看到了。
第三步: 創建 Pull request
此時,在你倉庫中點擊「Pull Request」,會顯示對於「你這個項目」,別人發起的 Pull Request。我們現在是想向「源倉庫」提交代碼,所以再點擊右上方綠色的「New pull request」按鈕。
此時,可以選擇要將「你的倉庫」哪個分支,提交到「源倉庫」的哪個分支上。此時會顯示變更的文件內容,提交人等。點擊綠色的「Create pull request」按鈕,輸入信息,完成創建 PR。
到此為止,「源倉庫」的 Pull request 列表中,會顯示我們剛剛發起的PR,狀態是 Open,剛開始會進行一次「代碼檢查」與「持續集成」。
等待上述「代碼檢查」與「持續集成」完成,沒有問題時,圖標會變成綠色。此時,「源倉庫」的維護人,Commiter,就可以將你提交的內容合併到源分支中。
但是一般來說,需要我們描述本次提交變更的內容,主要實現什麼功能,可以同時再提交一些截圖之類的。
第四步(Optional): 增加描述等更詳細的信息
然後我們根據要求,再在PR中增加詳細描述,截圖等內容,再次等待 review。
等待 Commiter review 沒問題之後,會將本次內容,合併到源倉庫的指定分支中,此時PR中會顯示xxx merge commit 到什麼分支,同時PR的狀態是「Closed」。此時,本次參與已經完成。
我們也會出現在該倉庫的 「contributors」列表中。是不是很Cool?
總結下,參與一個開源項目的過程:
- fork 一個項目
- 提交修改與變更
- 向源庫發起 Pull Request
- 等待 Code Review,如果需要,再補充詳細的內容
- 等待代碼合併到源庫
- 完成提交
找到自己感興趣,同時有能力參與的項目,開啟你的開源旅程吧。
相關閱讀:
一款功能強大的Tomcat 管理監控工具
分享的意義
從源代碼構建Tomcat的方式
推薦閱讀:
※新手通過互聯網賺取外快的最佳項目:頭條號
※中文編程專欄月報:2018年1月
※HttpRunner 通過 skip 機制實現對測試用例的分組執行控制
※Compare.NET Objects對象比較組件
※FluentValidation驗證組件
TAG:ApacheTomcat | 開源項目 | GitHub |