由Microsoft首席C#架构师Mads Torgersen发布罗斯林计划Roslyn是分配给C#和Visual Basic.NET的开源编译器的代码名称。 该项目始于微软公司生命的最后十年中最黑暗的黑暗-结束时是一个开源项目,一个跨平台,面向C#的公共通用引擎(以及VB,我将在本文的其余部分中理所当然地)。
当我在2005年(即.NET 2.0发布之前)加入Microsoft时,有关该项目的第一次讨论(后来称为Roslyn)已经在进行中。 有人谈论将C#重写为C#。 这是编程语言的正常做法-语言成熟度的证明。 但是有一个更实际和重要的动机:我们,C#的创建者,不是我们自己用C#编程,而是用C ++编程! 如果您每天都使用C#编程,那么您会改变主意:使用正在开发的工具的强大功能(折衷)。
用户像旧版本一样依赖于新编译器的行为。 为C#编写新的编译器是试图查找bug与bug的对应关系。
重写编译器已经被积极使用了几年,难点在于用户就像旧编译器一样依赖于新编译器的行为。 为C#编写新的编译器是试图查找bug与bug的对应关系。 我不仅在谈论已知的错误,而且还谈论未知的错误以及开发人员经常在不知不觉中发现和使用的不良行为形式。
多年来,这个问题的规模甚至使我们无法启动该项目。
尽管Microsoft语言小组的开发人员从用C#编写的新C#编译器中获得了很多好处,但最终用户的价值却不那么明显:新编译器将如何使他们受益? 也许唯一关心C#编译器是用C#编写的人都是编译器开发人员自己。
同时,另一个问题越来越多地表现出来:在C#代码上运行的不同工具之间的重复劳动。 除了编译器之外,另一个团队致力于在Visual Studio中对IDE进行C#的IDE支持,并且他们还不得不编写大量代码(当时也使用C ++),以便理解C#的语法和语义。
同时,来自Microsoft和其他公司的工具(例如StyleCop,CodeRush等)的数量正在增长:它们都应实现有意义的C#代码处理。 这些程序中的每一个都有其自身略有不同的错误,不同的理解水平,各种折衷和让步。 他们所有人都将花费大量精力来对代码达成共识。
我们决定了一个重要的建议:确保世界上只有一个代码库–所有使用C#代码的工具的一个库!
这项提议的价值来自可用工具数量的增加,尤其是现有工具质量的提高。 语言正确性和性能的所有要求都分配给单个代码库。 只需付出足够的努力,即可打造出一流的品质和出色的多功能性。 我们将为该语言创建一个真正的引擎! 统一,开放的API,用于C#代码。 我们将对“编译器”的概念重新定义。
当然,一旦为更广泛的C#社区创建了API,就不用说它应该是用C#实现的.NET API。 因此,用C#编写C#的长期梦想几乎就像是一个随机的副作用。
因此,罗斯林(Roslyn)的想法是开放的:分享C#的内部工作方式,供全世界以编程方式使用。 对于微软仍然相当封闭的企业文化而言,这本身就是一个大胆的主张。
我们将免费分享知识产权吗? 我们会授权与我们竞争的工具吗?
在公司讨论中,我们赢得了有关加强生态系统和使用地球上最好的工具创建语言的论据。 与短期货币化和Microsoft资产保护相比,这是C#和.NET的长期增长。 因此,甚至不提开源代码,对Roslyn的赌注对微软来说是一个大胆的举措。
当然,开发这样的东西并不容易。 罗斯林的前景非常雄心勃勃,充满了技术问题,我们花了五十年的时间来应对一切。 但这是另一个故事。
对于大多数最初的开发,罗斯林仍然是一个封闭的项目。
从2009年对该项目进行认真工作的一开始,我们就有想法让编译器打开,但是Microsoft尚未准备好。
自1970年代以来,微软一直具有封闭开发和源代码专利保护的文化。 尽管变化正在进行中,但是它们比我们的团队希望的慢。
实际上,一段时间以来,公司似乎正朝着完全相反的方向发展。
Windows 8项目极大地影响了整个公司。 得益于新的编程模型,他的触角深入到了工具和语言的开发团队中,所有内容都被秘密保密,不仅是在公司内部,甚至在公司内部。 例如,我们当时正在开发的异步功能已与Windows 8编程模型进行了协调和混合,即使在公司内部,我也不敢发布有关其设计的注释,因为担心会意外泄漏有关Windows 8的信息和我头上的问题。 ! 这为创新创造了可怕的气氛,当然,这也不允许我们依赖开源的C#编译器。
但是,最终,当Windows 8独树一帜时,该公司开始转型并找到了新的方向,新的领导层和完全不同的理念-我们今天所熟知的Microsoft。 开源现在正在Microsoft内部迅速传播。
F#在2010年以开放许可证和其自己的组织
F#Software Foundation发行 。 在他周围形成了一个杰出的社区,这很快就引起了我们所有人的嫉妒。 我们的团队顽固地坚持要获得罗斯林的免费许可证-最终,公司基础设施允许这样做。
到2012年,微软成立了Microsoft Open Tech组织,专门致力于开源项目。 罗斯林(Roslyn)进入她的阵营,并正式成为开源项目。 罗斯林对此非常成熟:所有开发资源都是内部的并且是众所周知的,并且项目本身没有遭受可能导致许可冲突的大量依赖关系。
2014年4月,在旧金山的Build Developers Conference上,Anders Halesberg将
Roslyn作为一个开源项目进行了介绍 ,并且源代码本身于4月3日在Apache 2.0许可下的CodePlex(以前的Microsoft存储库平台)上发布。

同时,
.NET Foundation被宣布为.NET项目(包括Roslyn)的基础。
此版本已成为真正的新鲜空气! 我们开始从CodePlex中获得开放性的好处,然后消除了Microsoft开源的其余程序障碍,因此今天,开源已经成为我们许多团队工作方式的自然组成部分。
我们不再将GitHub视为发布源代码的地方-这只是我们工作的地方。
在其他方面,该公司还意识到没有必要努力控制一切。 很明显,没有足够的理由让CodePlex存在-Roslyn和其他项目一起迁移到了GitHub,这是事实上的开源项目的主要站点。 不仅代码本身,而且其创建过程都在GitHub中进行:我们不再将GitHub视为发布源代码的场所-这只是我们工作的地方。

C#语言设计和编译器实现现在是完全开放的过程,并且需要第三方的大量参与。 它们创建包括整个语言功能。 C#的价值不仅发生在编写函数和修复错误方面,而且还得益于与社区的即时每日反馈循环,从而使我们对课程的理解和纠正更加容易。
这是一段漫长而疯狂的旅程,对我而言,它象征着微软在过去十年中发生的巨大变化。 罗斯林·纳格(Roslyn Nugget)出生于黑暗中,但在开放性思想的熏陶下长大-如今,由于开放源代码的强大功能,其用途有上百万种。
了解Roslyn和C#语言设计:罗斯林在github上GitHub上的C#