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


    最近发生了一件不起眼的新闻,微软把mono的上游项目交给了Wine团队来管理。

    可能很多小伙伴已经不知道mono是什么东西了,但是在它的背后,是多家公司的激烈争斗,是多个大佬的爱恨情仇。

    故事很长,我们慢慢从Java说起。

    1

    上世纪90年代,微软一手遮天,不仅统治了操作系统,还把一众应用软件厂商打得惨不忍睹,成为行业公敌。

    这时候出现了三个新事物:Linux、Java、Netscape,它们将成为微软帝国的掘墓人。

    Java刚出现的时候,高呼“一次编写,到处运行”的口号,好像操作系统变得不那么重要了。

    但Java写的桌面应用实在差劲,界面丑陋,性能低下,被人嘲笑。

    Sun公司一看这不行啊,不能在桌面端和微软争了,往服务器端走!

    服务器端的程序没有界面,、内存和CPU管够,缺的就是Java这种非常适合写商业业务逻辑的语言!

    Sun提出了J2EE(Servlet、EJB、JPA、JMS....)规范,联合了一众大佬,形成了反微软联盟,在互联网时代牢牢地卡住了位置。

    我要是Bill Gates,心里估计就要滴血了:老子用了二十年,好不容易把“桌面”收拾干净,现在又来了一个互联网!

    Bill Gates先是搞了一个小阴谋,挖来了编程语言和编译器的大师级人物Anders,开发了VJ++,不但可以绕过Java API直接访问操作系统的功能,还可以把Java代码编译成Windows的exe来执行!

    65bf07b2d22cd0a6e10ca7a42e43c6b3.png

    Sun一看VJ++就炸锅了:你这是破坏Java一次编写,到处运行的特点,立刻就把微软告了。

    微软的小动作没搞成,只能下定决心,重起炉灶,和Java对抗,这就是.Net战略。

    231eb928d08189118137528aced258a0.png

    .Net 刚开始就是和Java打擂台的,Java有字节码,.Net就有中间语言(Common Intermediate Language,简称IL);

    Java有JRE,.Net就有CLR(Common Language Runtime)。

    .Net的一大亮点是支持多语言开发,用C#、F#、VB .NET、C++都可以,反正最终都要编译成中间语言IL。

    6ec6d1e9b2b9ca40b53287c38c91d9e8.png

    微软为了吸引更多的同盟军,这一次难得地和自己的铁哥们Intel一起,制定了公共语言基础结构(CLI)规范,并且提交给ISO和ECMA做了标准化。

    用面向对象来做个类比,CLI相当于接口,微软的.Net Framework,是CLI的一个商业实现。

    任何人都可以实现CLI,理论上都是和.Net Framework都是平起平坐的。

    但是实现CLI,工作量过于庞大,CLI又是微软主导的,真的有人会这么干吗?

    6530eb85a6c10b7ad2ee71c280e517e9.png

    2

    Miguel de Icaza(米格尔·德·伊卡萨)是个墨西哥裔程序员,大学专业本来是数学,但是他不务正业,迷上了Linux和编程,给Linux内核做了很多贡献。

    bfa68bdede694daac5a58cb41da121da.png

    没时间学习,他干脆辍学了。

    没有学位,拿不到美国的H-1B签证,这让他丧失了进入微软的机会。

    不过幸亏他没进微软,否则以微软当时仇视开源软件的态度,他根本不可能搞出来GNOME。

    没错,GNOME就是米格尔牵头发起的,很就和KDE一样成为Linux桌面的双子星。

    38a6952e92b923bfbaf3d9f643812837.png

    在微软面试时,米格尔遇到了在微软实习的Nat Friedman,成为好友。

    1999年,两人一起成立了一个叫做Ximian的公司,专门支持GNOME的发展。

    这是刚刚流行起来的一种商业模式,软件是开源免费的,但是技术支持服务是可以收费的。

    公司获得了获得了几百万美元的融资,但让人苦笑不得的是,虽然米格尔已经在IT界有了非常高的名气,但依然无法获得美国的H-1B签证。

    最后米格尔通过O1签证来到了美利坚,O1签证本来是颁发给顶级音乐家,运动员,以及诺贝尔获奖者的。当时O1签证很麻烦,米格尔每隔6个月就需要会墨西哥的美国领事馆续签一次。

    微软发布.Net战略后,米格尔意识到.Net这种支持多语言的策略对GNOME有很大的帮助,如果在Linux上实现.Net,那程序员就可以用自己喜欢的编程语言来开发Linux桌面应用程序了。

    于是,米格尔决定推出开源项目Mono,在Linux上实现.Net,把.Net的另外一条腿接上。

    853479c28b0a5ebd2ea7fb069b93f25e.png

    这是米格尔第二次和微软发生联系,这个决定引发了很多开源界大佬的批评,GNU的创始人,自由软件的斗士Richard Stallman猛批他是为“自由软件的叛徒”,竟然把邪恶的微软持有专利的东西在Linux上实现!

    520b7ed478de8a47d73794f777cd9214.png

    Mono虽然比不上微软的亲儿子.Net Framework,但的确解决了一个大问题,获得了很多人的喜爱。

    比如著名的游戏引擎Unity最早就选择了Mono作为底层的.Net运行时,可以跨平台地执行C#代码。

    788cef3f9bc813ab4e45bf1949f40be9.png

    3

    随后,一系列大鱼吃小鱼事件开始上演。

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

    2011年,Novell又被Attachmate收购,Attachmate解雇了所有在美国从事Mono工作的员工,包括米格尔。

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

    468288755f5b00d0d288ec2efd6a7a77.png

    此时移动互联网已经兴起,Xamarin公司趁势推出了Xamarin.iOS 和 Xamarin.Android,让.Net程序可以运行在手机之上。

    不得不说,米格尔眼光独到,这是至关重要的一个决定。

    因为仅仅3年后,微软就推出了开源、跨平台的.Net Core,一下子让Mono处于很尴尬的地位,毕竟再怎么着,也很难和官方的产品竞争啊。

    2016年,微软以4亿美元收购了Xamarin,让Xamarin成为微软.Net框架的一部分。

    这一次,米格尔正式加入了微软。

    075f4dff59e0345c1ae259ad6480d583.png

    从.Net 5开始,.NET Framework、.NET Core、Mono又被整合到了一起,可以支持桌面、Web、云、移动设备、游戏、IoT、AI等各种开发。

    86c650461d4331f4c61f63d07c789831.png

    2024 年 8 月 27 日,微软将 Mono 上游项目的所有权转让给Windows 兼容层Wine的开发团队 WineHQ 。

    Wine的文章参见:《国产操作系统最致命的短板,被这个开源软件补上了?

    4

    发起了GNOME、Mono两个著名项目,两次创业,全部成功,米格尔不愧为人生赢家。

    作为开源界的知名人物,他和很多热爱Linux的大牛不一样,他是个实用主义者。

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

    他公开支持微软的开放技术,在ODF(Open Document Format) 和OOXML(Office Open XML )的大战中,他旗帜鲜明地支持微软的OOXML,完全不顾开源社区的广泛批评。

    虽然他是Linux桌面GNOME的发起者,但是他毫不掩饰对macOS的喜爱,他批评 Linux 桌面以开发者为中心的文化、缺乏向后兼容性以及各种 Linux 发行版之间的分裂,这都导致“Linux桌面被毁掉”。

    全文完,觉得不错的话点个赞或者在看吧!

    最后,欢迎大家到码农翻身公众号的“小密圈”逛逛,这是个和大家直接交流的地方,时不时会搞点儿活动,公众号没有发的东西,我也会放到这里,完全免费,欢迎加入!

    ec7355395b44cfdb4cf61948c8b2d913.png

  • 相关阅读:
    JAVASE 第二十二天
    MySQL:BETWEEN AND操作符的边界
    msf后渗透之文件交互指令、上传下载文件、屏幕截图、键盘记录、创建账户、音频录像和提权(上)
    VsCode中C文件调用其他C文件函数失败
    从0开始python学习-33.夹具@pytest.fixture(scope=““,params=““,autouse=““,ids=““,name=““)
    Stimulsoft Ultimate Reports 2022.3.1
    蓝桥杯(数论)练习
    海康visionmaster开发笔记10-集成HALCON第三方算子到VM工具箱的方法
    SPL工业智能:发现时序数据的异常
    计算机竞赛 深度学习疲劳检测 驾驶行为检测 - python opencv cnn
  • 原文地址:https://blog.csdn.net/coderising/article/details/142118849