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)的讨论也已经开始。 (责任编辑:IT) |