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