技术社区的力量在用户选择JavaScript框架时发挥着至关重要的作用。在今天的文章中,我们将一同了解支撑AngularJS、Backbone.JS以及Ember.JS等项目的背后推手。
想要弄清楚到底哪种JavaScript UI框架能够切实满足项目及组织的实际需求?面对十大人气方案,我们还有很多需要认真考虑的因素。
在过去几年里,我们亲眼目睹了UX库及框架的迅猛发展——其中大部分属于开源技术成果。目前市场上存在大量用于比较各类框架完整性的方法,但人们往往忽视了几大至关重要的决定性因素——这些开源项目背后的技术社区与生态系统。技术社区与生态系统的规模、实力与发展走势将最终决定开源项目的未来命运。总而言之,这些统计结果应该成为指导决策的关键性依据。
今年早些时候,我曾经有幸参与了一次调查,其主题为“2012年以来发展势头最迅猛的开源项目”。最终的排行结果令我震惊,榜单上几乎挤满了各类JavaScript项目。这激发了我的好奇心,因此我决定深入了解特定JavaScript库/框架项目,看看这些专注于帮助开发人员创建出丰富且高扩展性用户界面的项目到底为何拥有如此广阔的发展空间。我在分析中使用的开源社区元数据来自Ohloh.net以及GitHub,其中包括各项目的***评分(用于帮助用户及时掌握感兴趣的资源库的***动态)以及个别项目所吸引到的拥护者人数。
哪些项目榜上有名
在本次调查分析中,我关注的主要是十大开源项目背后的技术社区。顺带一提,这十大开源项目涵盖了UI库、框架以及包括服务器端运行时间在内的全堆栈框架。此次分析的对象全部为当下的热门UI项目,例如AngularJS、Ember.JS、SproutCore、Backbone.JS、Knockout.js、Spine、CanJS、Meteor-JS、Derby以及Yahoo Mojito。
我的目标是描绘出一幅关于各项目相关技术社区的发展图谱,尤其是在规模与发展速度方面,并将此与个别项目的普及范围及成功程度加以比照。当然,我还在密切关注各个项目所对应的生态系统,希望找到生态系统状况与项目普及范围及成功程度之间的联系。
每月贡献者数量
探寻各个项目每月贡献者的具体数量及增长幅度有助于了解该项目的发展态势,并足以了解业务对该项目的关注程度外加关键性发展临界点。下面的图表中囊括了十大项目的每月贡献者参与情况,数字代表的是各个月份提交代码的贡献者数量。
每月项目贡献者:Ember项目的代码贡献者数量如火箭般节节攀升。细心的朋友可能已经注意到,贡献者爆炸式增长的历史转折点出现在2011年12月,当时该项目刚刚脱离SproutCore并独立出来。谷歌的AngularJS的贡献者数量同样走势喜人。
如大家所见,SproutCore曾经在发展初期领跑每月贡献者数量榜。然而随着2011年12月SproutCore的分裂与Ember的诞生,技术团队中的大部分开发人员都选择了Ember作为自己的新起点。如今Ember与AngularJS一道成为2013年中贡献者数量最多的项目,且二者在全局技术社区的发展态势方面同样表现优异。需要注意的是,今年春季Backbone与Meteor的每月贡献者数量出现显著下滑,而此时正是AngularJS与Ember极速上升的时段。
历史贡献者数量
下面我们来看项目整个发展历程中的总体贡献者数量,这能帮助我们从另一个视角找到合理的结论。值得强调的是,历史贡献者数量往往反映出项目的具体管理风格。很多项目由小型团队进行严格管理,其它项目则采取完全开放的政策、接受技术业界所带来的多样化元素。
项目发展历程中的总体贡献者数量:AngularJS与Ember拥有最庞大的全局技术社区,这充分反映了二者在近一段时间以来出色的每月贡献状况。
历史贡献者数量还能帮助我们理解项目在任何特定时段的相对发展趋势。规模庞大、制度完善的项目往往拥有可观的贡献者基础,他们帮助修复漏洞、制作说明文档并完成大量其它任务。贡献者总数往往与项目代码基础的规模密切相关。与其它技术社区指标相比,例如代码行数、总提交数量以及每月提交数量,历史贡献者数量更能说明问题。
项目生态系统
除了当前贡献者数量之外,项目技术社区的力量还体现在生态系统方面。生态系统的建立与扩展同项目本身存在着千丝万缕的联系。这意味着单靠核心技术社区,我们还无法一窥项目的真实全貌。只有将视角放在更加广阔的生态系统身上,大家才能够对单一项目的全面成效做出准确判断。
相关项目数量:开源项目的稳定性可以通过与之相关的周边项目数量来衡量。在这方面,Backbone.js与AngularJS是当之无愧的赢家。
值得注意的是,Backbone拥有庞大的生态系统,这从侧面显示了其在技术业界的普及程度及发展态势。为了进一步验证Backbone生态系统的发达程度,我在GitHub上过滤掉所有评价不足三颗星的内容、只保留三星及心目且与Backbone密切相关的项目——仍然找到了1627个结果。相比之下,AngularJS的三星及心目相关项目只有个,这意味着Backbone的生态系统规模仍然达到AngularJS的两倍以上。
全堆栈解决方案
由于全堆栈解决方案的审视角度与其它项目有所差别,因此我希望将这类项目单独划分并进行比较。全堆栈解决方案中既包含客户端框架也包含服务器端框架;由此可以假设,此类方案的相关代码数量更多、随着时间推移参与进来的技术人员规模也更为庞大。下面这份图表显示的正是这些项目在相对较早的发展时期内的参与情况。
全堆栈解决方案数量:Meteor与Mojito对于技术社区的吸引力似乎更强,至少从贡献者数量的角度来看是这样。
JavaScript的崛起
将时间与精力用于创建结构化JavaScript方案的开发人员数量正持续激增。以下图表显示的正是自2011年年初至令,参与代码贡献的开发人员数量。统计结果反映出如今UI框架在应用程序开发工作中的重要地位,同时也说明不同规模的企业对于差异化用例的方案需求正日益强烈。自今年一月份开始,参与代码贡献的开发者数量迎来显著增长,这很可能是受到了AngularJS与Ember团队的带动。
十大JavaScript项目的代码贡献者总数:如果大家抱有任何疑问,这份图表将用事实证明JavaScript正以改天换地之势席卷全球。另外,与2011年相比,今年各项目的平均贡献参与者数量普遍翻倍。
代码行与提交数量
大家可能希望进一步了解各大开源项目的代码基础规模——以及代码基础与代码贡献者数量之间的关联。通过比较,我们发现技术社区规模与总体提交数量几乎跟代码基础规模没啥关系。举例来说,AngularJS项目中每位贡献者平均带来413行代码,而Ember项目中每位贡献者平均只带来146行代码。
码行数与贡献者数量:每位贡献者提供的代码行数越多,就说明该项目的技术难度越低——某些人将此视为项目健康程度的一项考量指标。
不过大家也可以在技术社区规模(即历史贡献者总数)与历史提交数量之间找到关联,并以此为基础分析每位贡献者为项目带来的平均提交数量。统计结果可能会告诉我们哪些项目更易于做出贡献,这又会给项目的长期发展带来哪些影响。
预见未来
技术社区规模与发展速度对于项目的前景而言非常重要。尽管这些指标无法向我们昭示整条轨迹的来龙去脉,但我们仍然可以借此了解技术人员对特定社区的参与程度、从而帮助自身了解项目的可行性及可持续性。它们同时也能帮助大家找到项目生命周期中的各类增长拐点,从而找到参与项目并对其产生影响的***时机。
UI框架是我最熟悉也最喜爱的主题,这是因为我曾在Adobe公司用五年时间打理Flex框架的产品营销活动——现在该框架已经转型为Apache项目。基于前面提到的各项数据分析,我的结论是Ember与AngularJS是近来崛起的框架当中最值得关注的竞争选手。不过在另一方面,Backbone那庞大而活跃的技术社区则昭示了该项目作为UI方案的极高人气,相信它将拥有可持续且光明的未来。