写点什么

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

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

关注

评论

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

云测 | 打造终端智能测试平台,助力企业迈向高效质量管理

TRaaS

小程序 支付宝小程序 测试 支付宝

前沿技术产业应用的未来

百度开发者中心

#人工智能 文心一言 文心大模型 大模型微调

我也能打造自己的「超级 App」?

FinClip

极致优化 SSD 并行读调度

百度Geek说

架构 后端 SSD 企业号9月PK榜

在对接自有账户体系时,FinClip 是怎么做的?

FinClip

龙蜥社区第 20 次运营委员会议圆满结束!

OpenAnolis小助手

开源 操作系统 龙蜥社区 运营委员会 开放原子

Zebec 生态 AMA 回顾:Nautilus 以及 $ZBC 的未来

西柚子

LP 流动性质押 DAPP 模式系统开发

l8l259l3365

快速而准确的MongoDB差异数据对比方法

NineData

数据库 mongodb 可视化界面 数据对比 NineData

探索未来的人机交互方式

百度开发者中心

#人工智能 生成式AI 文心大模型‘

软件测试/测试开发丨探索AI与测试报告的完美结合,提升工作效率

测试人

人工智能 程序员 软件测试 测试报告 ChatGPT

直播预告 | 博睿学院:浅谈可观测性的价值

博睿数据

Mac电脑多功能文件搜索推荐 HoudahSpot中文版

胖墩儿不胖y

搜索工具 文件搜素 文件搜索软件

Databend 玩转 Local 模式

Databend

LLM大模型微调:应用、策略与未来发展

百度开发者中心

#人工智能 文心大模型 千帆大模型平台

【案例教学】华为云API图像搜索ImageSearch的快捷性—AI帮助您快速归类图片

云计算 软件开发 华为云

云的灵魂是人工智能

Finovy Cloud

eosio.system智能合约介绍(四)合约部署介绍

BSN研习社

数据赋能健康发展,数造科技为某省妇幼医院搭建医疗数据科研平台

数造万象

飞桨产品经理教你如何应用PaddleX

飞桨PaddlePaddle

进阶训练技巧提升模型性能

百度开发者中心

#人工智能 大模型微调 千帆大模型平台

软件测试/测试开发名企定向培养训练营,升职加薪快人一步!

测试人

软件测试 测试开发

如何选择美国多IP服务器租用,提升网站排名的秘密武器

一只扑棱蛾子

站群服务器

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