作为同时拥有 Sproutcore 应用程序和 Ember 应用程序且即将发布产品的人,我将回答您的问题(为了清楚起见,重新排序)。以下所有内容都是我在没有内部知识的情况下观察到的。其中一些是猜测,所以我在这个答案上启用了维基模式,以便更多知情的人可以更正细节。
分裂的历史是什么?
这是我拼凑起来的:
SproutCore 由 Charles Jolley 的公司 Sproutit 于 2007 年创建,作为其 Mailroom 产品的基础。Jolley 后来加入 Apple,Sproutcore 用于构建 Mobile Me 的原始 Web 应用程序。我们的任务是重新打造 Mail 和 iCal 等 Mac 应用程序的体验,如今 Sproutcore 上的 iCloud 仍在继续这一努力。
Jolley 离开了 Apple,在旧金山成立了一家名为 Strobe 的公司,其愿景部分是利用 Sproutcore。 Strobe 团队认为 Sproutcore 不能很好地适应许多 Web 2.0 用例,并且对于开发人员来说过于孤注一掷,因此他们开始致力于 Sproutcore 2。Sproutcore 2 的目标是模块化,以及一种更加 HTML 感知的方法,世界各地的 Web 开发人员都可以更容易地使用它。 Backbone 的早期吸引力是本次分析的一部分。
在努力推动 Sproutcore 代码库实现这一愿景之后,Strobe 团队决定从 Sproutcore 2(内部代号 Amber)重新开始。 Charles 编写了核心运行循环和键值观察器代码。 Yehuda Katz 和 Tom Dale 是该项目的主要 Strobe 开发人员。当时的愿景是 Strobe 和社区最终将大多数特性和功能从 Sproutcore 1.x 移植到 Sproutcore 2。
Strobe 的业务努力并未产生预期结果,该公司权衡了各种选择,最终决定由 Facebook 收购 Strobe 人才。在此之前,包括 Katz 和 Dale 在内的一些 Strobe 员工分流成立了一家名为 Tilde 的新公司。
Tilde 决定继续开发 Sproutcore 2,但更改项目名称(先更改为 Amber.js,然后更改为 Ember.js)和项目目标。他们放弃了与 Sproutcore 向后兼容的长期目标。他们放弃了对任何类型的视图小部件库的支持,并专注于 HTML/CSS 用例,将数据绑定与 Handlebars 模板语言紧密集成。
自从 Strobe 解散后,Sproutcore 1.x 的管理权就从 Jolley 转到了 Tyler Keating,社区重新集中精力清理 Sproutcore 1.x,当 Sproutcore 2 的想法出现时,Sproutcore 1.x 一度陷入了尴尬的境地。迫在眉睫。
这两种努力之间的有效差异是什么?
这些项目的相似之处在于它们具有非常相似的对象模型。它们也有相似的属性、观察者和绑定系统。
Sproutcore 包括一个视图小部件库,如工具栏、列表视图、网格视图、按钮和主题系统,并重点通过 Javascript 定义视图层和库管理的绝对定位。它对于在网络上创建桌面风格的应用程序非常强大。
Ember 的占地面积较小。它与车把紧密集成。对于许多项目来说,它是 Backbone 的替代品。它旨在为客户端应用程序提供标准应用程序架构并消除样板代码。
尽管已经考虑过采用相同的核心,但这些差异可能会导致框架出现分歧。在这种情况下,Sproutcore 将使用 Ember 的“metal”库,也许还有其他核心库。
Sproutcore 的未来是什么?现在又将走向何方?
该线程包含最近贡献者聚会的分钟记录。
https://groups.google.com/group/sproutcore/browse_thread/thread/aacf00a6047a866e# https://groups.google.com/group/sproutcore/browse_thread/thread/aacf00a6047a866e#
短期路线图的重点是巩固营销材料、演示和代码库。该团队最近发布了芽核展示 http://showcase.sproutcore.com/。人们普遍同意用基于 Javascript(node.js) 的解决方案取代 Abbot(Sproutcore 的 Ruby 构建工具),该解决方案目前正在积极开发中。人们还希望减少苹果等公司的“大型”代码合并,并提高发布频率。 Sproutcore 1.8 最近发布了。
Ember 会完全替代 sproutcore 吗?
不见得。 Ember 核心团队已经明确表示,他们无意亲自开发那些缺失的功能。社区成员可能会将这些项目开发为单独的项目——flame.js https://github.com/flamejs/flame.js是迄今为止最雄心勃勃的尝试。 Ember 的设计选择使其更容易与 jQuery UI 等项目集成,因此可能需要也可能不需要完全替换。