BT

您是否属于早期采用者或者创新人士?InfoQ正在努力为您设计更多新功能。了解更多

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

| 作者 臧秀涛 关注 0 他的粉丝 发布于 2014年11月14日. 估计阅读时间: 5 分钟 | ArchSummit社交架构图谱:Facebook、Snapchat、Tumblr等背后的核心技术

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#是最优秀的语言,很多人就语言的优劣展开了讨论。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

我能也弱弱地说一句吗? by wang xinkai

我也觉得C#是很优秀的语言,后来又用了java和node.js, 虽然node 很神奇,但我还是很想念c#的linq 和entity framework. 可能最终go能超越所有这一切吧,但性能绝对不是唯一因素。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT