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

自从11月公布这一计划以来微软已将自己的关键技术都进行了开源,包括.NET Core、Roslyn、ASP.NET 5、MSbuild、WCF、OData等。按照微软ASP.NET 5 的路线图(详见 ASP.NET 5 Schedule and Roadmap),2015年9月2日已经发布了里程碑的跨平台版本,完成.NET Core 的跨平台开发,为 Mac 与 Linux 平台提供基于 .NET Core 的 dnx,实现完整的 .NET 跨平台开发工作流,并基于跨平台 .NET 开发一些应用案例,等到下个月初发布Beta 8的的时候就进入特性冻结阶段了。

微软实际上一共推出了三个以MIT方式授权的源代码集:

  • ReferenceSource
  • CoreFX
  • CoreCLR

上图中.NET Core 5 可以完整跨平台,.NET Framework 4.6 运行在Windows平台,对应Mono 4.2 版本运行在Linux,Mac平台。要理清楚.NET Core和 .NET 、Mono之间的关系, 这个在.NET Core的 https://github.com/dotnet/core 有详细的说明。简单的说就是.NET Core是.NET Framework的子集,包含了.NET 运行时库的核心功能,在跨平台和资源受限环境中使用,.NET Framework还以MIT协议开源了ReferenceSource , ReferenceSource 是和Windows平台的有较深的耦合关系,Mono团队将ReferenceSource项目中的代码整合进入Mono,将Mono项目中一些有bug或未完成的组件替换为.NET的对应代码,你可以在Trello网站上跟踪该项目的进展情况,Mono最新的4.2 版本已经基本上完成了代码整合工作。通过Mono和微软的.NET团队的合作,把.NET Core的代码融到Mono项目中,同时把Mono中的平台依赖代码贡献给.NET,现在可以实现完整的.NET堆栈的跨平台。也就说在.NET Core推出之后,.NET Framework与Mono将基于.NET Core重新构建。.NET Framework将成为.NET Core在Windows上的一个发行版,Mono将成为.NET Core的一个跨平台发行版。

开源是大势所趋,就在6年前,各大公司和厂商还在讨论是否应该开源,但现在大家讨论的则是如何更好地开源。随着互联网时代的发展和成熟,开源已经成为标配。从Github的.NET Core开源项目来看,目前已经有将近8273个star,老牌的Mono项目也才3769个Star,已经说明开发社区对微软开源的支持。

相比Java体系成熟的生态圈,目前.NET在社区生态系统建设上还需要一段比较长的时间来完善。生态系统不单单是开发者,还需要包括他背后的就职公司、他开发的产品面向的客户、开发者的合作伙伴等等,当然还有微软。开发者能够从.NET这个平台上更容易创业、具有多语言跨平台的、具备快速部署优势、适合迭代开发的,涵盖从服务端到客户端、移动端,物联网IOT,具有超级高效率的Visual Studio Community 2015。除此之外要让开发者有参与感,他在开发方面的经验和知识能够通过生态系统分享出去,影响其他人和公司,并且他的意见能够得到及时的反馈,那么这种参与感会吸引开发者。

最近几年,微软对于开源越来越支持,但是给开发社区的形象还没有转变过来。有篇文章《对微软技术的典型误解和偏见》写的非常贴切,对微软技术的误解与偏见在社区里是很微妙的,不少人对微软的开发技术栈有一些由来已久的偏见。微软已经做行业老大很多年,其在闭源方面的印象给开发者影响太深刻了,很难在短时间内扭转。需要持续的运营投入和影响。

其实微软过去在社区运营方面很有经验,包括各种线上线下的活动,还有MVP等奖励机制,在开源方面,微软可以继续从前的动作,我本人是微软连任10年的ASP.NET方向的MVP,运营一个微信公众号-dotNET跨平台,主要就是本土化将微软开源项目的介绍、进展、分析和案例要及时告知中国开发者。建议微软官方培养成功案例,榜样的力量是无穷的,开源之后的赢家在哪里?甜头在哪里?树立这样的榜样,开发社区都会看到。

开源的好处是,吸收整个技术社区的力量促进开源项目的发展和竞争力,提高开发者的参与感和信任度,有利于吸引开发者,构建良好的生态系统。.NET开源,开发者不必担心这个项目会半途而废,可以更关注项目本身的发展和特性,背后有.NET基金会,微软和Xamarin公司,他们都有明确的开发路线图,强大的技术团队支持。

在云计算、大数据、移动互联网和物联网的时代,开发者需要看到微软在承诺开源之后的迅速行动,开源社区和生态快速搭建起来,跨平台官方支持版本快速发布出来,抓住移动互联网的契机,把整个.NET新局面打开。

.NET开源进行时:消除误解、努力前行(本文首发于《程序员》2015第10A期的原始版本)的更多相关文章

  1. 二评北科团委:“斩首计划”进行时,其用心也毒

    近日,在同学们和热心群众的共同努力下,各高校相继悬崖勒马,北大马会.北语新新青年.人大新光等进步社团均顺利注册.而北科团委倒行逆施,可谓一枝独秀,对于齐民学社的同学们的诉求,不仅不予以回应,反而采取表 ...

  2. English trip V1 - 6.Accidents Happen! 发生意外! Teacher:Corrine Key: 过去进行时 was or were + Ving

    In this lesson you will learn to talk about past occurences. 过去进行时 课上内容(Lesson) C: Hi, Loki! L: Hi, ...

  3. 「补课」进行时:设计模式(5)——从 LOL 中学习代理模式

    1. 前文汇总 「补课」进行时:设计模式系列 2. 从 LOL 中学习代理模式 我是一个很喜欢玩游戏的人,虽然平时玩游戏的时间并不多,但我也是一个忠实的 LOL 的爱好者,就是段位有点惨不忍睹,常年倔 ...

  4. 做10年Windows程序员与做10年Linux程序员的区别(附无数评论)(开源软件相当于熟读唐诗三百首,不会作诗也会吟)

    如果一个程序员从来没有在linux,unix下开发过程序,一直在windows下面开发程序, 同样是工作10年, 大部分情况下与在linux,unix下面开发10年的程序员水平会差别很大.我写这篇文章 ...

  5. Boostnote 为程序员的开源式记事本

    以前使用win10的时候,有个edairy可以使用,并且效果非常好,现在ubuntu上使用的时候,才找个这样的程序员实在太难了,找了好久,才找到一个使用比较顺手的,这里就做个备忘了,顺便做个推荐,实在 ...

  6. 程序员必备,C#各类项目、开源项目插件资料收藏

    一.AOP框架     Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种部署方面 ...

  7. c/c++程序员必须要掌握开源项目

    作为一个经验丰富的C/C++程序员, 肯定亲手写过各种功能的代码, 比如封装过数据库访问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件访问的类, 封装过UI界面库等, 也在实际的项目中应 ...

  8. C/C++程序员必须熟练应用的开源项目

    作为一个经验丰富的C/C++程序员, 肯定亲手写过各种功能的代码, 比如封装过数据库访问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件访问的类, 封装过UI界面库等, 也在实际的项目中应 ...

  9. C/C++程序员必须熟练应用的开源项目[转]

    作为一个经验丰富的C/C++程序员, 肯定亲手写过各种功能的代码, 比如封装过数据库访问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件访问的类, 封装过UI界面库等, 也在实际的项目中应 ...

随机推荐

  1. Angular2入门系列教程4-服务

    上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...

  2. 【原】nodejs全局安装和本地安装的区别

    来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的 ...

  3. DBImport V3.7版本发布及软件稳定性(自动退出问题)解决过程分享

    DBImport V3.7介绍: 1:先上图,再介绍亮点功能: 主要的升级功能为: 1:增加(Truncate Table)清表再插入功能: 清掉再插,可以保证两个库的数据一致,自己很喜欢这个功能. ...

  4. netty5 HTTP协议栈浅析与实践

      一.说在前面的话 前段时间,工作上需要做一个针对视频质量的统计分析系统,各端(PC端.移动端和 WEB端)将视频质量数据放在一个 HTTP 请求中上报到服务器,服务器对数据进行解析.分拣后从不同的 ...

  5. 微框架spark--api开发利器

    spark简介 Spark(注意不要同Apache Spark混淆)的设计初衷是,可以简单容易地创建REST API或Web应用程序.它是一个灵活.简洁的框架,大小只有1MB.Spark允许用户自己选 ...

  6. JavaScript基础知识总结(二)

    JavaScript语法 二.数据类型 程序把这些量.值分为几大类,每一类分别叫什么名称,有什么特点,就叫数据类型. 1.字符串(string) 字符串由零个或多个字符构成,字符包括字母,数字,标点符 ...

  7. C#委托异步调用

    参考页面: http://www.yuanjiaocheng.net/webapi/mvc-consume-webapi-get.html http://www.yuanjiaocheng.net/w ...

  8. .NET应用和AEAI CAS集成详解

    1 概述 数通畅联某综合SOA集成项目的统一身份认证工作,需要第三方系统配合进行单点登录的配置改造,在项目中有需要进行单点登录配置的.NET应用系统,本文专门记录.NET应用和AEAI CAS的集成过 ...

  9. 安装angular-cli

    最近在学习angular2,并尝试用这个框架来做公司的一个新项目. 终于要开始开发了,等了1个多月. 因为第一次用这个新框架做项目,不太熟悉,就找了angular-cli这个脚手架来搭建项目. 安装了 ...

  10. Alwayson的IP冲突

    Alwayson的IP冲突 https://social.technet.microsoft.com/Forums/office/en-US/4d50cb1c-eef7-4dcc-b937-3c8eb ...