乐于分享
好东西不私藏

开源软件的叛徒,加入了微软

开源软件的叛徒,加入了微软

提到 Mono ,很多年轻一点儿的开发者,可能已经不知道是什么东西了吧? (大家可能更熟悉Momo 

但在它背后,藏着好几家公司的明争暗斗,几位技术大佬的爱恨情仇,还有一段“开源圈里出了个叛徒”的公案。

故事很长,咱们从 Java 说起。

01

上世纪九十年代,微软一手遮天。

操作系统是它的,办公软件是它的,开发工具还是它的,一众应用软件厂商被揍得鼻青脸肿,又毫无办法。

这时候,江湖上冒出了三个新面孔:Linux、Java、Netscape,成了微软帝国掘墓小分队的核心成员。

Java 刚出道的时候,喊出了一句响当当的口号:“一次编写,到处运行”。这下好了,操作系统好像没那么重要了!

但理想很丰满,现实很骨感。Java 写的桌面应用,被人笑话是“慢如蜗牛,丑如夜叉”。

Sun 公司一看,桌面端不行,那就去服务器端吧!

服务器上的程序没有界面,不在乎好看不好看;内存和 CPU 管够,Java 慢点也无所谓。更重要的是,Java 这种语言“啰啰嗦嗦”,“一本正经”,非常适合写商业业务逻辑。

Sun 趁热打铁,搞出了 J2EE 规范,拉上一帮被微软欺负过的兄弟们,组成了“反微软联盟”,在互联网时代稳稳地占住了地盘。

我要是 Bill Gates,心里估计要滴血:老子花了二十年,好不容易把桌面收拾干净了,你们这帮家伙又搞出一个互联网来抢地盘?

Gates 先是耍了个“小聪明”。他挖来了编程语言界的绝顶高手 Anders Hejlsberg,搞了个叫 VJ++ 的东西。不但让 Java 代码直接调用 Windows 的底层API,甚至还能把 Java 编译成 Windows 的 exe 可执行文件!

Sun 一看就炸了:你这是明摆着破坏 Java“一次编写,到处运行”的规矩啊!二话不说,把微软告上了法庭。

微软的小动作没搞成,只能咬咬牙,下定决心另起炉灶,正面硬刚 Java。这就是 .NET 战略。

.NET 从一开始就是冲着 Java 去的,Java 有字节码,.NET 就有中间语言 IL;Java 有 JRE,.NET 就有 CLR。

.NET 还有一个大亮点:支持多语言。你用 C#、VB .NET、C++ 写都行,最后统统编译成 IL。

微软难得大方了一回,联合 Intel 把公共语言基础结构规范提交给了提交给ISO和ECMA做了标准化。

用面向对象的话来说,CLI 相当于接口,微软的 .NET Framework 只是它的一个商业实现。理论上,任何人只要愿意,都可以实现自己的 CLI,和微软平起平坐。

但问题是,这玩意儿工作量巨大,标准又是微软主导的。

真的会有人傻到去干这事吗?

02

还真有。

Miguel de Icaza,大家都叫他米格尔,墨西哥裔程序员。

大学学的是数学,但他对数学没什么兴趣,一头扎进了 Linux 和编程的世界,给 Linux 内核贡献了不少代码。

因为整天泡在代码里,没时间学习,他干脆辍学了。

没学位,就拿不到美国的工作签证,微软的大门对他关上了。

不过现在回头看,这未尝不是件好事。以微软当年对开源的态度,他进了微软根本不可能搞出 GNOME

没错,GNOME 就是米格尔牵头发起的,后来和 KDE 并称 Linux 桌面两大门派。

在微软面试的时候,米格尔认识了当时在微软实习的 Nat Friedman,两人成了铁哥们。1999 年,哥俩一起创办了一家叫 Ximian 的公司,专门围绕 GNOME 做开源软件。

商业模式很新潮:软件免费开源,但技术服务收费

公司拿到了几百万美元融资,但有个尴尬的事:米格尔在技术圈已经名声大噪,可还是拿不到美国工作签证。

最后他靠 O1 签证去了美国。O1 本来是发给顶级音乐家、运动员、诺贝尔奖得主的,米格尔每隔六个月就得回墨西哥续签一次。

微软发布 .NET 战略后,米格尔眼前一亮:这种多语言的设计,对 GNOME 太有用了!

如果在 Linux 上实现 .NET,那程序员不就能用自己喜欢的语言开发 Linux 桌面应用了吗?

于是他决定搞一个开源项目,在 Linux 上实现 .NET,这个项目就是 Mono。

这是他第二次和微软产生交集,也让他背上了骂名。

自由软件斗士 Richard Stallman 公开炮轰他是“自由软件的叛徒”:你居然把微软这个邪恶帝国持有专利的东西搬到 Linux 上来?

Mono 虽然比不上微软的亲儿子 .NET Framework,却实实在在地解决了问题。

著名的游戏引擎 Unity 最早就是靠 Mono 来执行 C# 代码的,跨平台跑得飞起。

03

接下来是一串大鱼吃小鱼的戏码。

2003 年,Ximian 被 Novell 收购,米格尔出任副总裁。

2011 年,Novell 又被 Attachmate 收购,Attachmate 二话不说,把美国所有做 Mono 的员工全裁了,包括米格尔。

Mono 前途未卜,米格尔和 Nat Friedman 转身又成立了新公司 Xamarin,继续搞 Mono。

这时候移动互联网已经起来了,Xamarin 顺势推出了 Xamarin.iOS 和 Xamarin.Android,让 .NET 程序跑到了手机上。

这一步棋走得极其关键,因为仅仅三年后,微软就推出了开源跨平台的 .NET Core,Mono 一下子变得很尴尬,再怎么说,也很难跟官方产品掰手腕啊。

2016 年,微软以 4 亿美元收购了 Xamarin,这一次,米格尔正式入职微软。

从 .NET 5 开始,.NET Framework、.NET Core、Mono 被整合到了一起,一个框架打天下:桌面、Web、云、移动、游戏、IoT、AI,全都覆盖。

2024 年 8 月 27 日,微软将 Mono 上游项目的所有权,正式移交给了 Wine 团队。

Wine 就是那个让 Windows 程序能在 Linux 上跑的兼容层,也算是一种“物归原主”,当年 Mono 想在 Linux 上跑 .NET,如今让 Linux 上的兼容层来接管它,合情合理。

04

发起 GNOME、Mono 两大项目,两次创业,两次成功。

米格尔这辈子,妥妥的人生赢家。

但他在开源圈一直是个“异类”,他和很多热爱 Linux 的纯粹主义者不一样,他是个彻底的实用主义者

为了让 GNOME 支持多语言,他把微软持有专利的 .NET 引入 Linux 和手机世界,被骂“叛徒”。

在 ODF 和 OOXML 文档格式大战中,他公开支持微软的 OOXML,完全不管开源社区怎么说。

虽然他是 GNOME 的发起人,但他毫不掩饰自己对 macOS 的喜爱,他还批评 Linux 桌面以开发者为中心的文化、缺乏向后兼容性、发行版四分五裂,说这些“把 Linux 桌面给毁了”。

有人骂他,有人敬他,但不管怎么说,他干的这些事,实实在在改变了开发者的世界。

-- 完 --

本文作者刘欣,著有畅销书《码农翻身》,《半小时漫画计算机》,前IBM架构师,领导过多个企业应用架构设计和开发工作;洞察技术本质,擅长用故事去讲解复杂技术。

1、codex负责人:codex就要过时了

2、intel搓出65W逆天核显,终于把买N卡的钱省了

3、我听 Claude 官方的,砍掉了 80% 的提示词,结果。。

4、刚刚,SpaceX、英伟达宣布:AI数据中心要上天了

5、为什么 .tar.gz 要两个后缀

点在看