写点什么

Roslyn 开源第一年:试炼与凯旋

2015 年 4 月 13 日

Roslyn 是微软创建的一个.NET 编译器平台,提供了开源 C#和 Visual Basic 编译器及丰富的代码分析 API,旨在使开发人员可以使用 Visual Studio 所使用的 API 构建代码分析工具。该项目于2014 年4 月3 日开源。近日,在其一周岁生日来临之际,VB 项目团队经理Kasey Uhlenhuth撰文回顾了Roslyn 的开源之路。

据Uhlenhuth 介绍,早在2009 年重新设计C#和VB 编译器的时候,他们就考虑到了开源。但直到2014 年,在看到F#,、ASP.NET、TypeScript 开源取得成功后,他们才真正迈出了这一步。

开源之后,他们获得了许多来自社区的支持和帮助。社区反馈在C# 6.0 的一些设计决策中发挥了重要的作用。比如,主构造函数 null 条件操作符语法字符串插值均受到了社区反馈的影响。而且,社区还推动了许多与 Roslyn 相关的项目:

  • C# Pad 是一个交互式 Shell,允许在浏览器中执行 C#;
  • CodeConnect.io 可以实现设计时调用堆栈可视化,包括重构和搜索特性;
  • DuoCode 可以将 C# 6.0 交叉编译为 JavaScript 代码;
  • LINQPad.CodeAnalysis 是一个库,可以增强 LINQPad 的功能,使它更容易与 Roslyn 搭配使用;
  • Mono/Roslyn 是.NET Framework 的跨平台开源实现;
  • OzCode v2.0 使用 Roslyn 提供令人愉快的调试体验;
  • Scrawl 是一个面向现代 Web 开发人员的轻量级编辑器;
  • scriptcs 是一个开源项目,允许开发人员将 C#当作脚本语言使用,并提供一个命令行 C# REPL;
  • Try Roslyn 演示了 Roslyn 的用法及如何重现一个编译 Bug;
  • WebEssentials Markdown 编辑器也基于 Roslyn。

期间,他们还采取了一项重大举措,就是将Roslyn 源代码从CodePlex 迁移到GitHub 。这不只是代码位置的变化,更重要的是开源模型和工作流程的变化。在迁移之前,他们采用的是一种“有限开源”模型。也就是说,问题跟踪和代码审核系统都是内部的,社区贡献的代码需要他们手动复制粘贴然后合并,而无法直接合并。在迁移之后,他们采用了“完全开源”模型,使用GitHub 的问题跟踪和代码审核系统,通过pull 请求提交代码,并制定了代码贡献流程。这一举措增加了社区的透明度,仅用三分之一的时间就几乎实现了社区参与度的成倍增长:

Roslyn 的用户数也稳步增加,下图是 pull 请求数和问题记录数的增长趋势:

另外,Uhlenhuth 还提供了一些有关项目团队响应率的统计,旨在表明,与开发全新功能相比,他们优先接受代码,如下图所示:

从 1 月份到现在,他们又开源了 Scripting “表达式求值器Expression Evaluators” Visual Studio 语言服务等平台组件。现在,他们正在简化 F5 构建。将来,他们还有许多细节工作要做,比如,将一些历史问题从 CodePlex 迁移到 GitHub,找出一种在 GitHub 上标记问题的理想方法,将提交映射到不同产品版本的方法等等。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流。

2015 年 4 月 13 日 08:431642
用户头像

发布了 1008 篇内容, 共 308.1 次阅读, 收获喜欢 272 次。

关注

评论

发布
暂无评论
发现更多内容

第二周作业

新世界

架构

架构师训练营第二周作业

王铭铭

领域驱动设计(DDD)学习笔记

Chank

DDD

架构师训练营第二周学习总结

不谈

极客大学架构师训练营

架构师训练营第二周总结

王铭铭

依赖倒置及Cache重构设计

架构5班杨娟Jessie

极客大学架构师训练营

2020/6/16 架构学习心得

架构5班杨娟Jessie

极客大学架构师训练营

对进入面向对象世界的思考

云飞

UML 面向对象设计原则

Java高频BAT面试题汇总:SSM框架+Redis+高并发+MySQL+JVM带解析

周老师

Java spring 程序员 面试 IT

架构师训练营第二次作业0616

Geek_10

全网唯一秃头数据集:20 万张人像,网罗各类秃头

神经星星

人工智能 程序员 人脸识别 科技互联网

架构师训练营第二周学习总结

James-Pang

极客大学架构师训练营

架构师训练营-第二周作业

Linuxer

极客大学架构师训练营

ElasticSearch原理解析

Chank

elasticsearch

架构师训练营 week2

devfan

设计模式

教程序员使用Jekyll搭建漂亮的个人博客

小傅哥

小傅哥 Jekyll GitHub Pages 个人博客

架构师训练营Week2

Frank Zeng

极客大学架构师训练营第一天总结

Ethan

Week2学习总结

Frank Zeng

架构训练营-第二节

刘志刚

面向对象设计学习总结

周冬辉

第二周总结

andy

第二周总结

王锟

极客大学架构师训练营第一天作业

Ethan

架构师培训 -02 面向对象基本设计原则

刘敏

架构师训练营第二周课后作业三

不谈

极客大学架构师训练营

编程的本质

陈皮

Architecture Programing

架构师训练营week2 学习小结

李锦

杜克大学提出 AI 算法,拯救渣画质马赛克秒变高清

神经星星

人工智能 算法 分辨率 GAN

架构师week2 作业

李锦

极客大学架构师训练营

基于docker部署的Java应用jmx无法远程访问的问题

qihuajun

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

Roslyn开源第一年:试炼与凯旋-InfoQ