写点什么

.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:575884
用户头像

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

关注

评论

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

Golang中runtime包的基本使用方式

liuzhen007

Go 语言 5月日更

从操作系统底层的IO原理入手讲解,同时提供高性能开发的实战案例!美团大佬最新总结的1053页Java高并发核心编程笔记!

Java架构之路

Java 程序员 架构 面试 编程语言

京东丨阿里丨携程面试总结,已成功拿到京东offer

Java架构师迁哥

编程规范的意义

顿晓

5月日更 编程规范

前端项目配置ts,axios,router,vuex

Vue js ts vuex VueRouter

Map在Java 8中增加非常实用哪些函数接口?

xcbeyond

Java java8 5月日更 内容合集

一击必杀!内网渗透——对不出网目标的精准打击

Thrash

安全

网络攻防学习笔记 Day6

穿过生命散发芬芳

5月日更 网络攻防

模板格式不统一?百度AI产品经理为你讲解如何高效构建定制化OCR模型

百度大脑

百度 AI OCR

spring boot项目TPS压测性能优化

李日盛

Spring Boot 性能调优

架构实战营详细架构设计文档模板

Geek_e0c25c

涵盖了Java基础+JVM+多线程并发编程+spring全家桶+Linux+数据结构+数据库+nginx+分布式,这份Java技术成长笔记太强了

Java架构之路

Java 程序员 架构 面试 编程语言

要不要去创业?

石云升

创业 5月日更

Redis - 哈希表

旺仔大菜包

redis

Golang 实现 RTP

天黑黑

音视频 rtp Go 语言

2021,国产数据库人的最好时代

BinTools图尔兹

数据安全 数据库管理 国产数据库

Dubbo 服务分组与多版本

青年IT男

硬核资源!清华博士的Spring Boot中AOP与SpEL笔记,码农:膜拜

牛哄哄的java大师

Java

2021金三银四(拿下5个offer)面试经历,附阿里4面+京东4面【面经分享】

Java 编程 程序员 面试 计算机

如有神助!阿里P7大牛把Spring Boot讲解得如此透彻,送你上岸

飞飞JAva

Nginx基础配置-基础模块配置

梁龙先森

nginx 大前端

北大学霸!手抄万字Java数组笔记,2小时吃透,你确定不拿走?

牛哄哄的java大师

Java 后端

吴凡 ベ莫离: 网友都说MyBatis多表查询太难了,小白:就这?我都学会了

牛哄哄的java大师

如何高效率的度过一天?

程序员海军

效率 方法论

区块链是什么意思?源中瑞开发BaaS平台促进企业数字转型升级

源中瑞-龙先生

企业数字化转型 #区块链# 源中瑞 Baas

所谓软件测试工作能力强,其实就是这5点

程序员阿沐

软件测试 自动化测试 测试工程师 黑盒测试 白盒测试

谷歌大佬的LeetCode算法刷题笔记,详细讲解了刷 LeetCode 时常用的技巧。

Java架构之路

Java 程序员 架构 面试 编程语言

第八大洲环游记(三):人间胜境新西兰,AI孤岛or方舟?

脑极体

Vue 组件通信的 8 种方式

程序员海军

Vue 大前端 组件通信 引航计划

深入了解 JavaScript 对象

程序员海军

JavaScript 大前端 对象

谈谈测试环境管理与实践

大卡尔

测试环境 工程效能

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