微软宣布将开源.NET核心运行时,并将支持Linux和Mac OS

2014年11月12日,ASP.NET之父、微软云计算与企业级产品工程部执行副总裁Scott Guthrie,在Connect全球开发者在线会议上宣布,微软将开源全部.NET核心运行时,并将.NET 扩展为可在 Linux 和 Mac OS 平台上运行。.NET核心运行时将基于MIT开源许可协议发布,其中将包括执行.NET代码所需的一切项目——CLR、JIT编译器、垃圾收集器(GC)和核心.NET基础类库。此外,微软还发布了Visual Studio Community 2013,这是Visual Studio的一个新的免费版本。

微软开发平台事业部副总裁S. Somasegar表示:“目前全球有数十亿台设备,开发者需要针对各种设备和平台的工具。通过 Visual Studio 和 .NET,我们致力于提供全面的端到端解决方案,让开发者能够在多种设备和平台上开发及管理应用。”

至此,包括ASP.NET、.NET编译器、.NET核心运行时环境、框架和库在内的全部.NET服务器端框架将全部走向开源(部分源代码可能会在接下来的几个月内逐步发布)。通过这项举措,微软将紧密与开源社区合作,共同改进.NET。

.NET Core Framework团队的高级程序经理Immo Landwerth,也在.NET框架的官方博客上宣布了.NET Core开源的消息。.NET Core是一个模块化的开发栈,它是未来的所有.NET平台的基础。

Immo Landweth提到,之所以要开源.NET Core,有两大原因:

  1. 作为跨平台的.NET的基础。
  2. 构建并受益于一个更为强大的生态系统。

比如.NET和Mono两者是完全独立的,很多代码是平台无关的,所以很多工作都是重复劳动。合作构建一个单一的软件栈是最理想的。

Immo Landweth还提到,其团队使用敏捷开发已经有两年左右:尽早发布,让客户提供反馈,让他们取得了很大的成功。所以将代码开源出来,也可以尽快获得反馈,有助于提升项目质量。

.NET Core的代码发布在了GitHub上。Immo Landweth介绍了他们的原则:我们不想让社区来我们所在的地方;而是社区在哪里,我们就去哪里。他之前也做过一个实验,将一个个人项目从CodePlex移到了GitHub上,在CodePlex上两年,只有一个pull请求,而在GitHub上仅仅5天,就有了3个pull请求,还找到了两个贡献者。其中一个还给加上了单元测试。

Immo Landweth的团队也意识到,任何开源项目要取得成功,构建一个社区是关键。在此之前,他们也做过一些开源项目,不过是不定期更新。这样存在一些问题,比如不同参与方看到的代码可能是不一致的,很难公开讨论。另外内部的一些历史记录可能也未能记录下来。因此,开发团队决定,以GitHub仓库作为主要的代码存储系统。所有代码修改都直接体现出来。而且还不止于此,团队的代码审查也公开进行,内部的设计文档和讨论也将分享出来。让公众透明地看到决策过程。

在接受外部贡献方面,有两个原则:

  1. 路线图。所有项目都专注于各自的特点领域。为保持其专注性和动向,大部分工作都要符合产品的路线图。
  2. 质量。外部人员所提交代码的质量应该达到微软员工的同等水平,包括正确的设计、架构、足够的测试覆盖,并遵循编码风格。

.NET Core项目归.NET基金会管理。Immo Landweth还提到,他们将与Mono项目的Miguel de Icaza密切合作,创建一份共享的代码库,使其成为.NET Core的一个跨平台实现。

目前放在GitHub上的只是类库的一个子集,更多库、CoreCLR相关的工作还在进行之中。

Miguel de Icaza也撰文介绍了微软开源.NET 和Mono的关系。.NET基于MIT这一非常宽松的许可协议开源,此外微软还提供了一份专利承诺,都有助于.NET得到应用,同时避免开源、Unix和自由软件社区曾出现过的持续数年的问题。他的团队可以利用微软的开源实现,来解决Mono代码库不完整或者存在错误的地方。

微软开源.NET一事在社区引发了强烈反响,Hack News上相关的讨论已经有800多条。很多钟爱C#语言的Unix/Linux用户对此非常欢迎。也有人认为,到了这个时代,在存在替代选择的情况下,开发者已经没有理由为操作系统付费。他们可以选择云服务。微软此举只是吸引更多开发者使用其Azure服务。有趣的是,开发者社区总少不了语言优劣的争论,不少人认为C#是最优秀的语言,很多人就语言的优劣展开了讨论。

你可能感兴趣的:(微软宣布将开源.NET核心运行时,并将支持Linux和Mac OS)