作为一个即将推出Sproutcore应用和Ember应用的人,我会尝试回答你的问题(为了更清晰地表达,我重新排列了问题顺序)。以下所有内容都是我从外部观察到的,没有内部知识。其中一部分是猜测,因此我在这个答案上启用了wiki模式,以便更有经验的人可以纠正细节。
“分裂”的历史是什么?
以下是我所搜集到的信息:
SproutCore是由Charles Jolley的公司Sproutit于2007年创建的,作为他们的Mailroom产品的基础。后来,Jolley加入了苹果公司,Sproutcore被用来构建Mobile Me的原始Web应用程序。任务是重新创建像Mail和iCal这样的Mac应用程序的体验,这项工作今天仍在Sproutcore上通过iCloud进行。
Jolley离开苹果公司,与他人在旧金山创立了一家名为Strobe的公司,其中一部分愿景是要利用Sproutcore。然而,Strobe团队认为Sproutcore在许多Web 2.0用例中并不够好,并且对于开发者来说过于全面,因此他们开始着手开发Sproutcore 2。Sproutcore 2的目标是模块化以及更加注重HTML的方法,这将更容易地被Web开发人员所接受。Backbone的早期使用也是这项分析的一部分。
经过努力将Sproutcore代码库向这个方向移动后,Strobe团队决定重新开始开发Sproutcore 2(内部代号为Amber)。Charles编写了核心Run Loop和关键值观察器代码。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包括一个视图小部件库,如工具栏、列表视图、网格视图、按钮和主题系统,重点是通过Javascript定义视图层,并由库管理绝对定位。它非常适用于在Web上创建桌面风格的应用程序。
Ember具有较小的占用空间。它与Handlebars紧密集成。对于许多项目来说,它是Backbone的替代品。它旨在为客户端应用程序提供一个标准的应用程序架构,并消除样板代码。
这些差异可能会导致框架发生分歧,尽管已经考虑采用相同的核心。在那种情况下,Sproutcore将使用Ember的"metal"库以及其他核心库)。
Sproutcore的未来是什么,现在它的发展方向是什么?
这个帖子记录了最近一次贡献者聚会的会议内容。
https://groups.google.com/group/sproutcore/browse_thread/thread/aacf00a6047a866e#
短期路线图是专注于巩固市场推广材料、演示和代码库。团队最近发布了
Sproutcore Showcase。有普遍一致的意见要用基于Javascript(node.js)的解决方案取代Ruby构建工具abbot,该方案目前正在积极开发中。还希望较少由苹果等公司进行的“大规模”代码合并,并更频繁地发布版本。Sproutcore 1.8 最近发布。
Ember是否会发展成Sproutcore的完全替代品?
不太可能。Ember核心团队已经明确表示他们没有个人开发这些缺失功能的意图。社区成员有可能将其作为单独的项目开发,
flame.js是迄今为止最雄心勃勃的尝试。Ember的设计选择使其更容易与类似jQuery UI的项目集成,因此可能需要或不需要进行完全替换。