Jenkins和Hudson 的歷史恩怨

img
Jenkins和Hudson的歷史淵源
Jenkins的前身是Hudson,採用JAVA編寫的持續整合開源工具。
Hudson由Sun公司在2004年啟動,第一個版本於2005年在java.net釋出。
2007年開始Hudson逐漸取代CruiseControl和其他的開源構建工具的江湖地位。
在2008年的JavaOne大會上在開發者解決方案中獲得杜克選擇大獎(Duke's Choice Award)。
在2010年11月期間,因為Oracle對Sun的收購帶來了Hudson的所有權問題。
主要的專案貢獻者和Oracle之間,儘管達成了很多協議,但有個關鍵問題就是商標名稱“Hudson”。
甲骨文在2010年12月宣告擁有該名稱並申請商標的權利。
因此,2011年1月11日,有人要求投票將專案名稱從“Hudson”改為“Jenkins”。
2011年1月29日,該建議得到社群投票的批准,建立了Jenkins專案。
2011年2月1日,甲骨文表示,他們打算繼續開發Hudson,並認為Jenkins只是一個分支,而不是重新命名。
因此,Jenkins和Hudson繼續作為兩個獨立的專案, 每個都認為對方是自己的分支 。
到2013年12月,GitHub上的Jenkins擁有567個專案成員和約1,100個公共倉庫,與此相對的Hudson有32個專案成員和17個公共倉庫。到現在兩者的差異更多,應該說Jenkins已經全面超越了Hudson。此外,大家可能是出於討厭Oracle的情緒,作為Java開發者天然地應該支援和使用Jenkins。
從上面兩個專案的logo,大家也可以看到兩個專案之間的親戚關係,都是兩個老頭。
左邊的是Jenkins,右邊是Hudson。後面Hudson被Oracle捐給了Eclipse基金會,所以右邊這老頭有個Eclipse的光環加持。
Jenkins和Hudson的受歡迎程度
下面討論一下起源相同的兩個CI工具,為什麼Jenkins更受大家歡迎。
由開發者主導、面向開發者

img
首先,曾經是Hudson開發人員中的99%都轉向了Jenkins的開發,其中包括最初的建立者川口清子(Kohsuke Kawaguchi)。他獨自寫了大部分程式碼,並且他的經驗是Hudson各種高階特性的關鍵來源。
Jenkins的開發社群更活躍。所以對很多人而言,從血統上看Hudson是後孃養的,Jenkins才是親生的!
治理和社群
Jenkins開發社群的管理是很開放的。 有一個獨立的董事會,其中包括來自Yahoo!, CloudBees,Cloudera和Apture等多家公司的長期以來的Hudson開發人員。每次會議後,他們定期舉行治理會議並發表意見,徵詢公眾意見。他們還將所有程式碼都捐贈給公共利益軟體組織(SPI),以確保社群持續開放。
穩定性
分手後,針對Jenkins的貢獻不斷持續增加,Jenkins制定了新的長期支援釋出線。社群定大約每三個月釋出一次穩定版本的補丁。
外掛的平臺
Jenkins支援超過1000個外掛。憑藉多樣而強大的外掛Jenkins成了整個開發生命週期中的一箇中心點。
到了2017年,兩者的發展差異更大了。Jenkins應該說是CI工具中公認的老大,而Hudson不僅不能與Jenkins比,跟其他CI工具比也沒什麼優勢,完全沉淪了。
Jenkins和Hudson的對比
slant網站對一系列CI工具做了一次對比,其中Jenkins和Hudson的情況如下。
1.基本面問題
工具 | Jenkins | Hudson |
---|---|---|
最好的CI工具 | 1 | 22 |
最好的JAVA CI工具 | 1 | 7 |
最好的自託管CI工具 | 3 | 4 |
2.其他支援
工具 | Jenkins | Hudson |
---|---|---|
對Window支援最好 | 1 | 無排名 |
最好的開源CI工具 | 1 | 無排名 |
對BitBucket的支援 | 2 | 無排名 |
對移動開發者支援最好的CI | 4 | 無排名 |
3.更多特徵
Jenkins | Hudson |
---|---|
免費且開源 | 與Jenkins共享了很多程式碼,安裝還是挺簡單的 |
關鍵的環境變數可以安全儲存 | |
支援多個SCM,包括SVN, Mercurial, Git。集成了GitHub和Bitbucket | |
高度可配置 | |
資源和教程很多 | |
安裝執行簡單 | |
分散式的構建也能高效執行 | |
可跨平臺部署 | |
很多高質量的外掛 | |
得獎無數 | |
龐大的社群 |