AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

.NET 开源核心运行时,且行且珍惜

  • 2014-12-23
  • 本文字数:3048 字

    阅读完需:约 10 分钟

背景

InfoQ 中文站此前报道过,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 的一个新的免费版本。

关于此次事件的报道和评论,已经有了很多版本。不过,最近经常有朋友问我的看法,索性就梳理了下思路,把想到的可能影响和启发都写了出来,博大家一看。

不是终点

记得.NET 宣布开源的当天,编辑群里就一阵骚动,看得出大家还是很激动的。笔者最初也是吃了一惊,不过后来静心一想,这也是水到渠成的事情了。从时间轴看,近几年,.NET 家族已经先后开源了多个成员,包括 ASP.NET、C#编译器等,再加上这次的.NET 核心运行时,至此,服务器端框架已经全部开源(或者很快开源)。所以,这次事件只是把微软的.NET 开源战略推上了高潮,但肯定不是结束。

宣布开源是个新起点,如何把开源社区构建起来,生态系统培育起来,才是关键。开源需要精心的运营,每年的开源项目不断涌现,而在不断消失。.NET 开源项目不需要考虑失败的问题,开发者关注的是跨平台支持何时落地、开源社区如何运转起来。

大势所趋

开源是大势所趋,就在 5 年前,各大公司和厂商还在讨论是否应该开源,但现在大家讨论的则是如何更好地开源。随着互联网时代的发展和成熟,开源已经成为标配。从 Github 的.NET Core 开源项目来看,目前已经有将近 6000 个 star,考虑到开源一个多月的时间,这样的成绩已经说明开发社区对微软开源的支持。

以前,开源是一种保障软件项目生存的方式,而现在很多开源项目已经成为企业的一种商业和运营策略,生存已经不是问题,如何活的更好才是关键。就像某 I 做 Linux 开源是为了卖服务和硬件,Google 做 Android 开源是为了获取移动互联网入口一样,微软做.NET 开源也是为了其“移动优先、云优先”战略利益服务的。看到网上有人说开源是微软的阴谋论,笔者不是很赞同。现在 IT 界玩的都是阳谋了,为了公司利益无可厚非,只要不损害社区的利益,更何况开源本身是件好事情。

曾经的两强争霸

在 2005 年以前,Java 和.NET 平分秋色,由于微软的强大支持,在社区等很多方面.NET 甚至比 Java 更出色,毕竟 Java 在曾经的 Sun 的领导下并没有太多亮点,多亏了开源支持,才保持着鲜亮的生命力。当时,在企业级开发领域,Java EE 和.NET 都已经受到来自开发社区的诟病。但是随后而来的移动互联网浪潮给了 Java 另一次生命,谷歌开源安卓系统,借此掌控移动互联网入口,其开发语言 Java 也成为众多移动开发者的首选,要么 iOS 上的 Object-C 语言,要么安卓的 Java,而且大部分是两者都要。微软则选择了一条相对封闭的策略,即使联合诺基亚,Windows Phone 的市场占有率依然不高,这直接导致.NET 的使用率也不高。

笔者还记得,在两强争霸的年代,国内少有的几个技术论坛中,.NET 和 Java 两派吵得不可开交,立场鲜明,从工具支持吵到语言特性,又吵到函数库支持。现在想想,多个竞争者并存的年代对开发者是好事,有比较有选择,而且可以让竞争者倾听开发者的声音。

跨平台支持

此次.NET 开源和对 Linux、Mac OS 的支持,为移动开发者提供了新的选择,未来可以不再依赖于 Java,.NET 支持的 C#、C++ 等可以成为移动开发语言。作为后来者的 C#语言的优势明显,Java 一直在追赶,现在有了跨平台支持,开发者可以自由选择。

从.NET 开源实现项目 Mono 的博客上可以看到,Mono 计划与.NET 团队合作,把.NET Core 的代码融到 Mono 项目中,同时把 Mono 中的平台依赖代码贡献给.NET。

相比 Java 体系,目前.NET 只开源了服务器端框架,而 Java 开源的是全部系统,包括客户端和开发工具。未来微软开源的路是否更加宽广,值得观察。

培养生态系统

生态系统的培养需要一段比较长的时间,Java 开源将近 10 年了,才形成如此成熟的生态圈,.NET 需要有耐心和执行力才能走得更远。既然是生态系统,那么一定要制定并维持好生态系统中的游戏规则。这个系统不单单是开发者,还需要包括他背后的就职公司、他开发的产品面向的客户、开发者的合作伙伴等等,当然还有微软。一个平台想要凝聚力,不外乎从物质和精神两个方面分析。物质方面,开发者能够从这个平台上获取利益,比如这个平台是支持开发者创业的、多语言跨平台的、具备快速部署优势的、适合迭代开发的,生态系统的成功案例多,具备这些特质,会让这个平台的开发者最终受益。从精神方面,要让开发者有参与感,他在开发方面的经验和知识能够通过生态系统分享出去,影响其他人和公司,并且他的意见能够得到及时的反馈,那么这种参与感会吸引开发者。关键点包括创业孵化器、制定和维护生存法则、塑造合作共赢的业务模式、让圈内的利益相关者受益。

最近几年,微软对于开源越来越支持,但是给开发社区的形象还没有转变过来。毕竟,微软已经做行业老大很多年,其在闭源方面的印象给开发者影响太深刻了,很难在短时间内扭转。需要持续的运营投入和影响。

其实微软过去在社区运营方面很有经验,包括各种线上线下的活动,还有 MVP 等奖励机制,在开源方面,微软可以继续从前的动作。有两点建议:一是重视本土化,关于微软开源项目的介绍、进展、分析和案例要及时告知中国开发者;二是培养成功案例,榜样的力量是无穷的,开源之后的赢家在哪里?甜头在哪里?树立这样的榜样,开发社区都会看到。

开源选择

开源的历史很久远了,以 Java 为例,开源快 10 年了,它的服务器端、客户端、开发工具都是开源的,虽然历经了 Sun、Oracle 等公司的发展,但一直保持旺盛的生命力。特别是在移动互联网崛起之后,Java 获得了新生,发展迅猛。开发者在选择开源平台和项目中,最担心的不是这个项目能不能满足我的需求,是这个项目靠不靠谱,会不会一直做下去,这是最关键的。这就是为什么绝大多数成功的开源项目背后都是有大公司的支持,有很多人全职做开源项目,人员稳定,路线图清晰,开发者放心,敢用你的产品。其次才是满足需求,赢得信任感。

开源的好处是,吸收整个技术社区的力量促进开源项目的发展和竞争力,第二个好处是,提高开发者的参与感和信任度,有利于吸引开发者,构建良好的生态系统。劣势,对于一些没有厂商支持的开源项目,路线图不明确,有纷争,存在分裂或者失败的机会。对比.NET 开源,开发者不必担心这个项目会半途而废,可以更关注项目本身的发展和特性。

云优先战略

今年,Azure 成为首个在中国落地的全球公有云平台,其支持 Linux 和很多其他开源软件,这本身就说明微软目前的态度非常开放,从 Windows 到 Azure,战略意图很明显。从全球来看,Azure 占全球 PaaS 市场份额的 64%,排第一。微软开源的态度,可以吸引更多开发者使用 Azure 平台,毕竟 Azure 不是一个微软专有技术的平台。

未来,且行且珍惜

笔者对.NET 开源抱有比较高的期待,在云计算、大数据、移动互联网和物联网的时代,Java 一家独大不利于社区的发展,微软已经不再是过去封闭的巨头,开始拥抱开源,翻看微软过去的历史,我从不怀疑微软的强大的执行力,时间是一个关键的因素,开发者需要看到微软在承诺开源之后的迅速行动,开源社区和生态快速搭建起来,跨平台官方支持版本快速发布出来,抓住移动互联网的契机,把整个.NET 新局面打开,千万不要虎头蛇尾,且行且珍惜,开发者是最聪明的。

2014-12-23 06:575637
用户头像

发布了 501 篇内容, 共 272.7 次阅读, 收获喜欢 62 次。

关注

评论

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

web前端培训机构怎么选择比较好呢

小谷哥

React Context源码是怎么实现的呢

flyzz177

React

《DevOps工具链的国产化之道》直播报名开始啦!

嘉为蓝鲸

DevOps IT 工具链 研发

隐私计算唯一代表厂商!洞见科技入选《爱分析·数据智能厂商全景报告》

洞见科技

深圳大数据培训哪家教的好

小谷哥

谷歌也开始裁员!谷歌CEO说出理由让人惊叹

雨果

裁员 谷歌 互联网裁员

大数据开发培训周期和方法

小谷哥

MFC|实现自定义复选框效果

中国好公民st

c++ 控件 9月月更

Chrome操作指南——入门篇(十五)monitor

Augus

Chrome开发者工具 9月月更

详解JS中 call 方法的实现

华为云开发者联盟

Java 前端 企业号九月金秋榜

【荣耀帐号服务】手把手教你快速Android应用接入

荣耀开发者服务平台

开发者 服务 安卓 应用 honor

从0到1带你搭建一个vue3.0项目(vue-cli脚手架版)

言程序

前端 vue3.0 9月月更

开发者有话说|我的前端开发感悟

言程序

个人成长 程序人生

一文带你全面了解什么是颠覆时代的Web3.0未来互联网

echeverra

Web3.0

Flowable 流程部署与删除

江南一点雨

Java springboot flowable

Chrome操作指南——入门篇(十四)drawer

Augus

Chrome开发者工具 9月月更

Vue入门指北——modifier

Augus

Chrome开发者工具 9月月更

故障转移和恢复

源字节1号

软件开发 后端开发

react hook 源码完全解读

flyzz177

React

docker的/var/run/docker.sock参数

程序员欣宸

Docker Docker 镜像 9月月更

基于 Apache Hudi 极致查询优化的探索实践

华为云开发者联盟

大数据 后端 华为云 企业号九月金秋榜

牛客网扫地僧开源出来的《Java面试无敌流笔记》,Github上线两天就爆火

Geek_0c76c3

Java 数据库 开源 程序员 架构

Java面试题大全(整理版)1000+面试题附答案详解最全面看完稳了

钟奕礼

Java 面试 java; Java 面试题

前端动效讲解与实战

vivo互联网技术

前端 SVG 动效

java培训学习应该注意什么?

小谷哥

前端线下培训学习适合哪些人群

小谷哥

交付有价值的产品,先澄清用户故事吧!

敏捷开发

产品 项目管理 敏捷开发 软件开发 用户故事

太强了!阿里p8大佬干了半个月总结的《Alibaba分布式系统速成笔记》正式开源

Geek_0c76c3

Java 数据库 开源 程序员 架构

Python基础(五) | 函数及面向过程编程详解

timerring

Python Monad 9月月更

N1盒子openwrt+dogcom实现大学校园网的自动登录开启路由

知识浅谈

9月月更

开发者有话说|我的前端开发感悟

言程序

个人成长

.NET开源核心运行时,且行且珍惜_.NET_崔康_InfoQ精选文章