JavaScript框架的开发现状和生态环境
资深的前端专家Dave Gruber最近对十个热门的Javascript框架的发展现状做了深入的分析,包括Angular、Backbone、Ember等,分析的方面包括贡献者数量、生态环境、社区规模等等。
Dave在统计报告一开始,先阐述了做调查分析的背景:在过去的几年中,我们已经看到了UX库和框架的大量增长,而且其中的大部分都是开源的。有很多文章比较了这些框架的用途、方法以及完整性等方面的不同,但却常常忽视了围绕着这些开源项目的社区和生态系统的规模、强度和走势等度量标准。而这些统计信息应该在您的选择中起到关键性的作用。
今年的早些时候,我有机会对自2012年开始增长最快的开源项目做一个分析,并且我被名单列表中的JacaScript项目的数量震惊了。这使得我对特定的、专注于帮助开发者建立丰富、可扩展的用户界面的JavaScript 库/框架的项目做了更加深入的了解。我的分析用到了开源社区Ohloh.net中的元数据和GitHub中的集成数据,包括评星的数目(用来帮助用户追踪他们觉得有趣的资料库)以及个别项目吸引到的追随者的数量。
这次分析涵盖了UI库、框架和包括服务器端运行时的全套框架,挖掘到了前十名开源项目的社区。Dave分析的项目都是时下最热门的UI项目,包括AngularJS, Ember.js, SproutCore, Backbone.JS, Knockout.js, Spine, CanJS, Meteor-JS, Derby, 和Yahoo Mojito。
我的目标是描绘出这些项目的周边社区的状态,并着重找出规模和增长速度,并且努力将这些数据与个别项目的普及度和成功与否相关联。同时在假设生态系统会进一步反映一个项目的普及程度和成功与否的同时,关注各个项目周围的的生态系统。
探索一个项目每月贡献的数量和增长量能够观察出项目的走势并且可以凸显项目捕捉业界广泛兴趣的重要临界点。Dave统计了项目的每月贡献的参与,也表明了在某个给定月份中贡献代码的开发者数量。从结果上看,SproutCore是每月贡献参与量的早期领先者。然而当2011年12月SproutCore fork并创建了Ember项目后,许多团队中的开发者跟着一起变动,并跳槽到了Ember项目中。现在,Ember和Angular JS一起,已经在2013年的月代码贡献量上表现出了显著的增长,并从社区整体的增长角度来看成为了新兴的领先者。同时我们注意到,今年春天,在AngularJS和Ember加速增长的同时,Backbone和Meteor的活跃贡献量在显著下降。
除此之外,Dave认为,观察项目整个发展历程中的全时(all time)贡献者数量可以帮助我们理解一些不同的观点。一方面,它往往反映出一个项目的管理风格。很多项目由一小组人进行严格的管理,而其它一些项目则完全开放从而接受广泛和多元化的贡献。全时贡献者的数量也可以帮助我们理解项目在任何一个时间段中的相对发展趋势。大规模、制度完善的项目常常拥有较多数量的贡献者,来帮助修补漏洞、撰写说明文档以及其它相关任务。贡献者的总数往往和代码库的总体规模有关。当结合其它社区指标时,比如代码行数、总提交量和月提交量时,这一数据最有价值。
从结果上看,Angular JS和Ember展现出最大的社区,从而反映出它们近一段时间以来的每月贡献增长量。
除了当前的贡献者数量,项目社区的力量也体现在项目生态系统的建立与扩展之上。这就意味着我们不能完全单独依靠项目社区的核心指标来知道一个项目发展走势的全部内容。更加广阔的观察生态系统才能进一步描述出某个项目整体的成功。开源项目的鲁棒性可以通过与之相关的周边项目数量来衡量。在这方面,Backbone.js和AngularJS很明显是赢家。
值得注意的是,Backbone拥有可观的生态系统,显示了它在业界整体的发展趋势和使用量。为了进一步的验证Backbone的生态系统,我在Github上对搜索进行过滤,只保留了评星大于等于三星以及和Backbone相关的内容,并且得到了1627个项目的搜索结果。将此结果与AngularJS的三星之上的794个项目相比,可以知道Backbone的生态系统规模仍然是AngulatJS的两倍。
由于全套(full stacj)解决方案的审查角度和其他项目有区别,Dave对这类项目的增长进行了单独的观察。全套解决方案中既包括客户端框架也包括服务器端框架,可以假设,解决方案涉及到的代码量越多,随着时间推移参与其中的技术人员数量也就更多。
Meteor和Mojito似乎吸引了更强的社区,至少从贡献者的数量上衡量起来是这样的。
Dave发现,将时间投入到用JavaScript创建结构化方法的开发人员数量正在快速增长,反映出了UI框架在应用程序开发中的重要地位,并且不同规模的企业对于不同用例方案支持方法的需求也在持续增长。从今年一月份开始,代码贡献量出现了显著的增长,这很可能是受到了AngularJS和Ember团队的推动而导致的结果。
JavaScript正吞食占据这个世界。从2011年到2013年,开发者的平均数量翻了不止一倍。
你可能想知道每个项目的代码库的大小以及代码库数量和贡献者数量之间的联系。通过比较这些数据,Dave发现社区规模和总提交量和代码基础的大小几乎没有联系。举例说明,Angulat JS项目中每个贡献者平均贡献413行代码,而Ember表明每位贡献者平均贡献146行代码。每个贡献者提供的代码行数越多表明这个项目编写起来越简单。从而有人将其视为一个项目健康程度的一项衡量指标。
不过你可以找到社区规模(即总体贡献者数量)与总体提交量中的联系,并看到不同项目的平均贡献者提交量的变化非常不同。这可能表示一些项目更容易编写(做出贡献),从而影响到项目的长期发展。
Dave认为,社区规模和增长情况对于一个项目的发展趋势而言是非常重要的指标。尽管这些指标不能告诉我们项目的全部情况,但它们提供了重要的评价标准,从而被大量投资并且帮助我们基于社区的可行性和可持续性做出决定。它们同时也能帮助我们找到项目生命周期中的临界点,为我们提供了参与项目并产生影响的机会。
最后,Dave总结道:
丰富的UI框架是离我最熟悉也最喜爱的主题,因为我曾在Adobe公司工作五年来推动Flex框架的产品营销。现在这个项目已经转为了一个Apache项目。基于所有的数据分析,我的感受是Ember和AngularJS是新近涌现出的值得关注的JS框架。数据也表明,Backbone周围的生态系统表明了这个UI方案非常受欢迎并且十分可信,因此它一定会有一个持续并且光明的未来。