2008 年 12 月 23 日,星期二

Merb 与 Rails 3 合并!

作者 David

圣诞节到了,我们有礼物要送给你。我们即将结束 Merb 与 Rails 之间的争吵,放出重磅消息:Merb 将与 Rails 3 合并!

我们都意识到,携手合作创造共同利益,比各自为战地复制一些相同的东西要有效得多。Merb 与 Rails 在设计和理念方面早已有许多共同之处,因此合并似乎是一种理所当然的选择。我们只需要坐下来聊一聊,解决这个问题,我们就是这样做的。

在实践中意味着 Merb 团队将努力将所有关键的 Merb 理念引入 Rails 3。Yehuda Katz 将直接加入Rails 内核团队,Matt Aimonetti 将建立一个新的布道团队,Carl Lerche 和 Daniel Neighman(hassox)将共同领导这项工作。我们已将合并内容永久发布在rubyonrails.org/merb的记录页面中。

会引入什么内容?
他们会从 Merb 中选取一些关键理念并引入 Rails 3,这些理念包括

  • Rails 内核:没错,Rails 是一个全栈框架,并将继续保持这种状态,但我们应该同时让用户能够不使用全套功能来运行它。Rails 3 将让你能够轻松地仅运行最少的功能,然后根据需要选择所需的内容(如果这是针对你的特殊情况而言)。不妨这样想:“rails myapp —core”(以及“rails myapp —flat”)。
  • 性能优化:Merb 重新编写了许多 Rails 片段以提高其速度。我们将把所有这些有益的内容都引入进来。我们还会在必要时调整架构以提高效益。简而言之,Rails 3 将获得 Merb 人员所特有的性能关注。
  • 框架不可知论:Rails 在栈内的每个问题上总会有一个默认答案。如果你不在乎测试框架,则会获得 test/unit。如果你不在乎哪个ORM,则会获得 Active Record。但有些人确实在乎,并希望使用其他内容。一些人希望使用 RSpec 进行测试,另一些人希望使用 Sequel 或 Data Mapper 作为ORM,另一些人更喜欢使用 Haml 进行模板化处理,还有一些人可能更喜欢使用 jQuery 进行 Ajax 处理。所有这些人应该觉得 Rails 在热情地欢迎他们。是的,我们将有一个默认方案,但我们不应该对替代方案有任何形式的歧视。
  • 严格的API:太多个插件在 Rails 更新时会出现故障,因为它们不清楚自己可以在何处安全地挂接到内部组件,而何时对自己进行热修复,并预计会出现故障。Merb 人员致力于采用公开的API并进行测试,以确保其不会出现故障。他们将引入这种理念,并为 Rails 3 提供经过测试和记录的API,以用于在升级时不会随意出现故障的扩展。

这不是一次大爆炸性的改写
然而,重要的是要理解,这不是对 Rails 的一次“大爆炸”式的改写。我们远未到可以抛弃一切重新开始的时候。这将会是对 Rails 的渐进式改进,将会仔细评估新举措对向后兼容性的影响和一般实用性的影响。

我确信 Rails 3 的某些部分将会不兼容,但我们会努力将它们控制在最低限度,并让将 Rails 2.x 应用程序转换为 Rails 3 变得非常容易。Merb 团队也会努力给现有的 Merb 用户一个可管理的升级到 Rails 3 的路径。我们正在努力实现许多想法,包括允许将现有的 Merb 控制器与新的 Rails 3 控制器一同挂载。我们会看到这一切将如何发展,但是它一定会发展。

同时,Merb 团队也没有仅仅抛弃现有的 Merb 用户基础和他们的应用程序。他们仍然会进行错误修复、安全修复,并致力于简化到 Rails 3 的升级路径。这一切都会以一种有条不紊的方式进行。

时间表
Rails 2.3 即将来临。我们希望在 1 月份完成并发布。这是一个充满了倾斜的美味佳肴的成功发布。但一旦完成,所有目光都会转向 Rails 3。

一个过于乐观的可能是,希望能在 2009 年拉斯维加斯的 RailsConf 准备一个至少是 Beta 版本。谁知道我们是否能够如愿以偿,但到那时我们肯定已经取得了大量的进展。

因此,所有这些变化实际上已经立即生效。我们已经开始协作,并且我们将公布公共举措,宣布 Rails 3 里程碑下的具体工作要素。

毫无芥蒂,和谐一片
这是一次相当时尚变化的事件。我们在不太长的时间内就从紧张的关系变成了走到一起。但是,我对于双方所有的幕后成员是如何紧密团结在一起而感到惊讶万分。我们谈得越多,就越意识到我们希望得到的是相同的东西。而我们关心某些不同事情的情况下,通常也是相辅相成的。

我真希望双方社区内部的所有人,都能像双方阵营的核心贡献者一样从容应对这一消息。只要让我们把以前发生的事情忘得一干二净,珍视我们现在能以团结一致的方式前进,而不是以相同想法的碎片前进。

Rails 3 将会非常棒。

另请阅读:Yehuda 就此事写的内容Carl LercheEzraMatt 的内容.