微软已经开源 .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:
还有一个很清晰的仪表盘可以查看 Monthly Pulse
但是要回答那个问题还需要更多的数据,幸运的是,GitHub 还提供一个非常不错的 API,完美的结合了 Octokit.net library 和 LINQPad,这样可以轻松的获取想要的数据。这里有个示例 LINQPad 脚本。
但是,即使知道每个月的 "# of Issues" 或者 "Merged Pull Requests" 也没有用,因为不能知道是谁创建了 issue 和提交了 PR。但是 GitHub 还有一个功能,可以识别不同的用户。请看 Roslyn Issue #670,可以清楚的识别用户是项目所有者还是协作者,没有任何说明的就是社区参与人员。
数据已经到手,结果就在数据里面:
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 是一比较新的项目,平常比较少用,而且在编译器找错误也是比较困难的。
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" 并不是必要的。
最常使用的 issue 标签 TOP 20
这是根据结果的一些观察:
列表里面的 CodeGen 很高,但也不意外,因为 RyuJIT - 下一代 .NET JIT 编译器才发布了两年。
3 个项目都包括大量的 "Up for Grabs" issues,详情请看 Roslyn, CoreCLR 和 CoreFX
Performance 和 Optimisation 一直都被重视,总而言之 Performance is a Feature!!
引用来自“龙哥九号”的评论
在c++面前,c#就一垃圾货。引用来自“ArthurWang”的评论
在c面前,c++就是一垃圾货。引用来自“LAJS”的评论
在汇编面前 c就是一垃圾引用来自“LAJS”的评论
在 0 1面前 汇编就是一垃圾引用来自“护士的小黄瓜”的评论
在电流面前 所有语言都是垃圾 没电你编个程看看引用来自“龙哥九号”的评论
在c++面前,c#就一垃圾货。引用来自“ArthurWang”的评论
在c面前,c++就是一垃圾货。引用来自“LAJS”的评论
在汇编面前 c就是一垃圾引用来自“LAJS”的评论
在 0 1面前 汇编就是一垃圾引用来自“LAJS”的评论
在电流面前 所有语言都是垃圾 没电你编个程看看引用来自“龙哥九号”的评论
在c++面前,c#就一垃圾货。引用来自“ArthurWang”的评论
在c面前,c++就是一垃圾货。引用来自“LAJS”的评论
在汇编面前 c就是一垃圾引用来自“LAJS”的评论
在 0 1面前 汇编就是一垃圾引用来自“LAJS”的评论
在电流面前 所有语言都是垃圾 没电你编个程看看引用来自“龙哥九号”的评论
在c++面前,c#就一垃圾货。引用来自“ArthurWang”的评论
在c面前,c++就是一垃圾货。引用来自“LAJS”的评论
在汇编面前 c就是一垃圾引用来自“LAJS”的评论
在 0 1面前 汇编就是一垃圾引用来自“龙哥九号”的评论
在c++面前,c#就一垃圾货。引用来自“ArthurWang”的评论
在c面前,c++就是一垃圾货。引用来自“LAJS”的评论
在汇编面前 c就是一垃圾引用来自“龙哥九号”的评论
在c++面前,c#就一垃圾货。引用来自“ArthurWang”的评论
在c面前,c++就是一垃圾货。引用来自“醉丶千秋”的评论
开源中国真是对.net一点都不友好。引用来自“ios之王”的评论
.NET跨平台开源,微软黑科技,狂霸服务器端,C#是唯一可以开发移动端的语言,极其优雅,是巨大的机会!微软猛虎归山,王者归座,什么java,php,Ruby,ios,android,都等着被霸王虐杀吧!c#出了那么久,结果还是没人用,真那么牛逼,为何qq 360 Google浏览器…等各软件商,包括各种类库,都是c或c++的?并且你wpf这么牛逼,结果人家还是用c++的dui?
引用来自“龙哥九号”的评论
在c++面前,c#就一垃圾货。内置HTTP服务器和SQLite数据库的标准PHP解释器都跑在Android上提供物联网服务和本地WebView人机交互了,.NET要加油哦!
http://static.oschina.net/uploads/space/2016/0103/190210_Ltey_561214.png
http://sourceforge.net/projects/anmpp/files/binary/