.NET 开源一年以后……

微软已经开源 .NET framework 的核心部分一年多了,之前 Scott Hanselman 做了一个 非常好的源代码分析工具,基于微软的 Power BI 实现。本文也是通过这个分析工具得出的结论,.NET 框架核心部分开源一年多了:

自从微软开源之后,究竟社区参与了多少?

这里会以 3 个 .NET 生态系统中最主要的三个部分来说明,这些项目也是 .NET 基金会最活跃/最多 star 和最多 Fork 的项目:

  • Roslyn – .NET 编译平台 (“Roslyn”) 提供开源 C# 和 Visual Basic 的编译器,支持富代码分析 APIs。
  • CoreCLR
    – .NET Core 运行时,名为 CoreCLR,包括一个基础库
    mscorlib。CoreCLR 包括垃圾收集器,JIT 编译器,基础 .NET 数据类型和大量低级别类。
  • CoreFX –  .NET Core 函数库,包括集合,文件系统,工作台,XML,异步等等。

现有数据

GitHub 自身也有一些内置图表,以下就是整一年中的 Commits per Month:

Commits Per Month

还有一个很清晰的仪表盘可以查看 Monthly Pulse

github stats - monthly pulse

但是要回答那个问题还需要更多的数据,幸运的是,GitHub 还提供一个非常不错的 API,完美的结合了 Octokit.net library 和 LINQPad,这样可以轻松的获取想要的数据。这里有个示例 LINQPad 脚本。

但是,即使知道每个月的 “# of Issues” 或者 “Merged Pull Requests” 也没有用,因为不能知道是谁创建了 issue 和提交了 PR。但是 GitHub 还有一个功能,可以识别不同的用户。请看 Roslyn Issue #670,可以清楚的识别用户是项目所有者还是协作者,没有任何说明的就是社区参与人员。

owner collaborator or community

结果

数据已经到手,结果就在数据里面:

总 Issues 数 – By Submitter

Project Owner Collaborator Community Total
Roslyn 481 1867 1596 3944
CoreCLR 86 298 487 871
CoreFX 334 911 735 1980
Total 901 3076 2818 6795


这里可以看出,在某些情况下,拥有者和协作者贡献占主导地位。例如:Roslyn 几乎 60% 的 issues
是拥有者和协作者开启的。但是在另一些方面,社区表现会很活跃,特别是在 CoreCLR,这个项目社区成员开启的 issue
比较多。还有一部分原因是不同的项目,CoreCLR 是 .NET 最明显的部分,包括微软的一些网络框架,.NET
开发者日常开发经常用到,所以社区会有比较多的建议,改进和修复,而且 CoreCLR 是比较有历史的一个库。相对来说,Roslyn
是一比较新的项目,平常比较少用,而且在编译器找错误也是比较困难的。

总合并 Merged Pull Requests – By Submitter

Project Owner Collaborator Community Total
Roslyn 465 2093 118 2676
CoreCLR 378 567 201 1146
CoreFX 516 1409 464 2389
Total 1359 4069 783 6211

但是当我们看合并的 Pull Requests 数,社区成员无疑是参与比较少的,只有大概 12%。但这并不意外,因为不是所有的 pull request 都被接受。首先,项目会使用他自己的机制, “up for grabs“,所以 12% 已经很不错了。h

更新: “up for grabs” 并不是必要的。

每个月的 Issues 数 – By Submitter

Issues Per Month - By Submitter (Owner, Collaborator or Community)

每个月合并的 Pull Request – By Submitter

Merged Pull Requests Per Month - By Submitter (Owner, Collaborator or Community)

issue 标签 Top 20

最常使用的 issue 标签 TOP 20

Top 20 Issue Labels

这是根据结果的一些观察:

  • 列表里面的 CodeGen 很高,但也不意外,因为 RyuJIT – 下一代 .NET JIT 编译器才发布了两年。
  • 3 个项目都包括大量的 “Up for Grabs” issues,详情请看 Roslyn, CoreCLR 和 CoreFX
  • PerformanceOptimisation 一直都被重视,总而言之 Performance is a Feature!!

本文文字及图片出自 OSchina

余下全文(1/3)
分享这篇文章:

请关注我们:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注