Oracle宣布在大約一年后關(guān)閉Kenai.com和Java.net社區(qū);他們已經(jīng)建議項目管理員索取項目數(shù)據(jù),包括代碼、Bug跟蹤信息、郵件歷史、維基頁面和論壇內(nèi)容,以便能夠繼續(xù)在其他地方運作項目。這一舉措同市場上的其他類似決定一致,如像Codehaus和Google Code這樣的網(wǎng)站之前就已經(jīng)宣布關(guān)閉。
關(guān)閉Kenai本身并不讓人意外,因為2015年9月Oracle就已經(jīng)宣布。只是那份公告指出,項目將會遷移到Java.net社區(qū),實際上只是兩個平臺的合并。這就是說,最近的決定有嚴(yán)重的后果,如果項目管理員沒有及時采取措施,那么許多項目可能會消失。
事實上,不單是這個案例會讓人產(chǎn)生疑問,為什么與其他類似社區(qū)相比GitHub如此受歡迎。Kenai和GitHub項目都是在2008年開始運作,雖然GitHub早幾個月,但那種差別不足以解釋先動優(yōu)勢。另一方面,Kenai提供的功能比其他任何平臺提供的功能都廣泛,這就是說,肯定有其他因素起了作用。
GitHub和其他平臺(如Kenai或Java.net項目)最顯著的不同是他們背后的主要推動力:后者是為開源社區(qū)提供支持的項目,而前者是一個全面的商業(yè)計劃。自創(chuàng)立以來,GitHub已經(jīng)募集了3.5億美元來支持他們的發(fā)展(1億美元來自Andreessen Horowitz,2.5億美元來自紅杉資本);相比之下,Kenai項目在啟動8年之后仍然處于Beta狀態(tài)。
不過,最重要的區(qū)別可能是一個更不明顯的因素。Kenai項目由Sun開發(fā),與NetBeans緊密集成,主要是一個面向Java開發(fā)人員的平臺;另一方面,GitHub使用Ruby和Erlang開發(fā),起初主要是吸引了Ruby開發(fā)人員。對于托管在Kenai.com上的項目,本文作者沒有找到任何有關(guān)語言使用情況隨時間變化的官方數(shù)據(jù),不過,Java是最流行的語言也在意料之中。相比之下,在GitHub前5年的時間里,Ruby是最流行的語言。Java和Ruby在技術(shù)上的差別可能在流行度差異上發(fā)揮了一部分作用。
對于每個開源項目,用戶都有兩種類型:希望讀取或修改它的用戶,他們需要訪問源代碼;只希望使用它的用戶,他們需要訪問一個可分發(fā)的形式。在Java中,使用庫的標(biāo)準(zhǔn)方式是通過像Maven或Gradle這樣的包管理器,它會從類似Maven Central這樣的工件庫中下載預(yù)先編譯好的Jar文件。就是說,訪問源代碼不足以讓開發(fā)人員可以輕松地使用一個用Java編寫的開源項目,即Kenai.com本身無法完全提供一個可供公眾使用的開源項目。
另一方面,Ruby將Bundler作為事實上的標(biāo)準(zhǔn)包管理器。雖然可以被編譯為多種目標(biāo)體系結(jié)構(gòu),包括JVM,但Ruby主要是作為一種解釋型語言使用,就是說,不需要使用預(yù)先編譯好的對象。這讓Bundler可以直接從存儲源代碼的庫中使用Ruby項目,就是說,GitHub既可以作為源代碼庫,也可以作為一種分發(fā)機制,供開發(fā)人員使用托管在那里的Ruby項目。
使用Ruby編寫的開源項目,不需要第二個系統(tǒng),就是說,這些項目的使用要容易許多,這可能會鼓勵更多的人分享他們的Ruby項目。這種綜合效應(yīng)可能在很大程度上促成了Ruby最初的流行;由于Ruby是GitHub前5年里最流行的語言,所以語言的流行或許也促成了平臺的流行。這意味著,作為一個平臺,公共版本庫要取得成功,就要著眼于其中分享的代碼的整個生命周期。
即使還有其他方案,關(guān)閉Kenai.com和Java.net社區(qū)對于Java社區(qū)而言未必是個壞消息。像Junit 5這樣的新項目已經(jīng)成功在GitHub上分享,有關(guān)將當(dāng)前所有的JSR內(nèi)容遷移到其他平臺(如GitHub或Bitbucket)的討論也已經(jīng)開始。
查看英文原文:Oracle to Close Java.net and Kenai.com Forges