2016年2月25日:
针对余跃师兄的建议,我将重点放在那些实际用rails做框架的项目上,今天我利用rubygems.org(托管所有gem的网站),通过它的API可以获取每个gem的信息(gem的owner、gem的托管地址等),其中有3291个gem的代码是托管在github上的(其中就包括rails),通过gem里的dependency信息(这里我只考虑了Devdep,即只考虑开发需要的dependency,没有考虑运行的dependency),可以构建github上的ruby项目网络(1563个节点,2910条边):
2016年2月24日:
这两天我利用GHTorrent最新数据(dump-2016-2-1),分析了Rails生态系统相关内容,得到了一些实验结果,希望可以和老师、师兄们一起讨论:
1. Rails生态系统的构建:
假定认为项目(repo)的name或者description含有“ruby on rails”,说明该repo和Rails相关,通过筛选得到69243个repo,其中9075个项目是从Rails fork出来的。
通过对这些项目的语言统计,如下图(项目数前20的语言),78.5%的项目语言是ruby,前几基本上是网络相关的语言,符合常识。
接下来,我对这些Rails生态系统里的项目进行了学习,发现大致可以分为以下几类:
(1)fork出去的项目,forked from Rails: 9075 (13.2%)
(2)Rails提供的demo,Rails demo(demo_app/first_app/sample_app): 29380(42.4%)
(3)课程学习,Course:1127(1.6%)
(4)为Rails服务的插件等,for Ruby on Rails: 11226 (16.2%)
(5)基于Rails构建的系统等,built with Ruby on Rails: 2184 (3.2%)
(6)其他类型,others:16188 (23.4%)
2、进一步挖掘:
基于上面形成的Rails生态系统,我试图了解,这些衍生出来的项目是否对Rails项目自身产生贡献,这其中的贡献汇聚是怎样的,我目前试图从开发者的角度进行切入,分析其他开发者(非Rails成员)从接触Rails建立Rails相关项目,到真正为Rails项目做贡献过程中蕴含的规律。目前探讨以下三个问题:
(1)其他开发者关注(watch)Rails与自己使用Rails(建立Rails相关项目)的关系?
目前Rails共有31332个关注,除去自己的成员,有6824(21.8%)个关注来自Rails生态系统里的项目owner,其中:
5711(83.7%)个开发者是在watch了Rails之后才建立Rails相关项目,平均时间是21.8个月;
1113(16.3%)个开发者是在watch了Rails之前就建立Rails相关项目,平均时间是11.0个月。
说明,大部分的开发者应该是先关注Rails这个项目,熟悉后才自己尝试建立项目,平均要花近2年的时间,少部分是自己先建立项目,然后再关注Rails(可能自己建的项目有问题,所以很快关注Rails,时间也短许多)。
(2)其他开发者在Rails中评论与自己建立Rails项目的关系?
Rails中comment(这里我先只考虑了issue comment)共有107812个,其中4237(4%)个来自Rails生态系统的项目owner,其中:
1429(34%)个开发者是在Rails评论之后才建立了Rails相关项目,平均时间是11.5个月;
2808(66%)个开发者是在Rails评论之前就建立了Rails相关项目,平均时间是11.6个月;
说明大部分的开发者可能是建立了Rails项目,熟悉之后才开始参与Rails项目中去,平均需要1年。
(3)其他开发者在Rails中提交issue与自己建立Rails项目的关系?
Rails共有24107个issue(包含pull-requests),2734(11.3%)个来自Rails生态系统项目的owner,其中:
852(31%)个开发者是在Rails提交了issue后才建立Rails项目,平均时间是10.5个月;
1891(69%)个开发者是在Rails提交了issue前就建立Rails项目,平均时间是10.0个月。
说明大部分的开发者也是先建立Rails项目进行学习,熟悉后才向Rails做贡献。
总结:
我初步的思路是,Rails生态系统里的项目owner,他们建立了Rails相关的项目(相当于是Rails的扩散),他们在使用或学习过程中,可能会反过来作用于Rails,向Rails做贡献(关注,评论,提交issue,提交代码等),这就形成了贡献的汇聚。
目前分析结果和常识差不多,即大部分的开发者(非Rails成员)应该是先关注Rails这个项目,一段时间后才自己建立Rails相关项目,再过一段时间才向Rails做贡献。
这只是我初步探索的一些实验结果,希望可以和老师、师兄们讨论下,再进行下一步。
2016年2月23日:
Ruby on Rails项目正在形成属于自己的Rails生态系统,它不仅拥有很多子项目,很多其他项目也基于Rails进行开发,例如Basecamp、github。除了github上形成的Rails网络,它在Stackoverflow上也拥有着大量的问答帖子信息。
目前的工作重点是,先尽快以Rails生态系统为研究对象,构造出其基本的生态网络,在此基础上结合已有的工作,争取尽快形成开题的完整思路。