开源界大事件盘点!微软真爱Linux,华为方舟鸿蒙加入,MongoDB与云厂商大战
开源发展到当前的阶段,已然成为各个公司的必争之地,大小公司都在举力搞开源,我们观察了一下今年在这个潮流中最受关注的几家公司,发现了一些事情。
微软、华为与MongoDB在开源上似乎各有各的出发点,是胸怀天下开发者,还是无奈反击绝地求生,亦或是一心想着钱?
而在这个过程中,三家公司的际遇却又大不相同,有人一路顺风顺水,直接从不良少年变成了开源三好学生;有人顶着家国重担,同时还要面对巨大的舆论压力;还有人直接参与了一场前所未有的开源利益之战。
都很精彩(或者残酷),同时也带给我们许多思考,一起来看看。
微软
微软爱开源!
参与开源,这是近两年来微软在走的路线,并且在2019年,它甚至直接在Windows中安上了一颗Linux内脏。
微软的这颗Linux内脏其实是今年5月份在Windows 10上推出的全新版本WSL(Windows Subsystem for Linux),新版本WSL 2使用了全新的架构,这是一个真正的Linux内核,它改变了Linux二进制文件与Windows和计算机硬件的交互方式。
Linux二进制文件使用系统调用来执行许多功能,例如访问文件、请求内存与创建进程等。WSL 1创建了一个转换层,对这些系统调用进行翻译,以允许它们在Windows NT内核上工作。但是,实现所有这些系统调用很有挑战性,导致某些应用程序无法在WSL 1中运行。WSL 2包含自己的Linux内核,它具有完整的系统调用兼容性。所以像Docker等应用都可以正常使用。
同时,微软还开源了全新的终端Windows Terminal,这是一个全新的、流行的、功能强大的命令行终端工具。其包含了很多来社区呼声很高的特性,例如:多Tab支持、富文本、多语言支持、可配置、主题和样式,支持emoji和基于GPU运算的文本渲染等。
微软深情拥抱Linux,不可思议!从此以后,人们是这样描述闭源的Windows的:Windows是世界上最好用的Linux桌面发行版。
关于拥抱Linux,微软今年还做了一件事,它宣布正在将其exFAT技术添加到Linux内核中。exFAT文件系统目前在整个电子行业中都得到了广泛应用,你平时使用的SD卡和USB闪存驱动等电子产品,多半就使用到了exFAT技术。但是这个专利此前是收费的。微软开放了它的exFAT技术,并且把技术规范公开,这意味着,往后Linux社区可以放心地使用Linux内核中包含的exFAT。另一方面,技术规范文档公开后,开发者可以开发符合要求、可互操作的exFAT实现,促进整条技术链的发展。除了Linux,微软还把参与开源的手握向了Chromium,这是开源界的另一个超级明星项目,基于它开发的Chrome也是Web浏览器的霸主。微软去年年底宣布要给自家的新浏览器Edge换个心脏,今年4月份它终于正式释出了基于Chromium的Edge预览版本。
微软在改造自己的Edge的过程中,也将其在业内出了名的浏览器特性带到了Chromium项目中,比如顺滑滚动体验和快速便捷的Windows Hello身份验证、无障碍阅读、高对比度与视频字幕可读性等,俨然成为了Chromium的重要贡献者。
而开源编程语言方面,微软也着手深度参与:微软正探索将Rust作为C和C++的安全替代方案。
什么情况?那个当初把开源视为毒瘤的微软,现在已经成为了开源界的超级巨星!?
这份开源之爱,即是正义!——?
真的是正义吗?有些人不这么认为。
微软想要做什么呢?有人说他要入侵Linux,还是走“拥抱、扩展再消灭”的老路。在微软宣布开放exFAT技术,参与到Linux内核的消息出来后,有资深媒体人分析:“微软并非以‘和平姿态’进入Linux,它采用了敌对姿态。它对雅虎、诺基亚和Novell采取了同样的做法。”
他指出微软现在进入Linux完全是为了将微软的“标准”、API和专有软件推到Linux中,最终目的只是纯粹而简单地要剥削和榨取。
我们甚至觉得事情没这么简单。关于微软与开源,整个故事可以讲得很完美,下边来看看。
Linux基金会项目OpenDaylight执行总监Neela Jacques在名为《The shift in open source: A new kind of platform war》(开源的转变,新的平台之战)的文章中写道:
在技术主宰着世界的今天,平台创造了市场和生态,创造出巨大的价值。此时,如果哪家公司站错平台,那么不论这家公司的技术有多好,市场有多大,销售团队有多强,最终都会被淘汰,前车之鉴包括Nokia、Blackberry、Windows phone、Amazon Fire、Websphere与Cloudstack等。
当前开发者领域最大的平台是什么?开源。这是前提。
2016年,微软以260亿美元收购了职业社交网站LinkedIn。
2018年,微软以75亿美元收购了全球最大源代码托管平台GitHub。
2018年,微软开始与自由职业工作平台Upwork开展合作,共同向客户提供企业级自由职业解决方案。有消息指出,此举是微软收购Upwork工作的第一步。
微软在干什么?
LinkedIn是全球最大的职场社交平台,用户数已超过6.1亿,覆盖全球200多个国家和地区,每个《财富》世界500强公司均有高管加入。
GitHub是全球最大的软件源代码托管平台,目前用户3600万,托管仓库超过1亿。
Upwork是全球最大的自由职业网站,每年有数百万个职位发布在Upwork上,覆盖专业技能超过5000种。通俗一点来说,Upwork就是一个众包平台,人们在上边接单完成任务,赚取回报。
微软收购LinkedIn,可以看作是对“人际关系网”的收购;收购GitHub,外界认为微软开始在大规模地聚集开发者人才,其实收购的是“专业开发者”;如果微软真的收购了Upwork,那它势必将Upwork向全体LinekdIn与GitHub用户开放,形成一整个可持续发展的开发者生态。
现在情况是微软手上已经有了LinkedIn这个全球最大的职业社交网络,也有GitHub这个专注于软件开发者的全球最大程序员聚集网络,收购Upwork或者类似的开发变现平台成为了这两大开发者资源网络的不二去向。
这很明显,微软在抓住当前最具创造力并且最“平价”的创新源泉——自由与热衷开源的开发者——去建设它全新的开发者生态。那么前边梳理的微软今年在开源上的动作,其实也就不言而喻了。
只要把握住了这群开源世界的核心,那么新的开发者生态中“天下英雄皆入吾彀中矣”,到时别说自行车了,微软可以拥有整个软件世界。
微软是不是这样想的呢?我们拭目以待。
对了,最近微软宣布将于明年举办第一届微软Linux大会——WSLconf,同样让人大跌眼镜。
不小心给它打了个广告,微软打钱。
华为
由中美贸易争端引起,华为被美国封杀,并且蔓延到技术领域。在美国政令下,谷歌开始限制华为使用安卓,微软随后停止华为订单,紧接着,SD卡协会、Wi-Fi联盟、IEEE学术委员会等均撤销华为会员资格(后又接连恢复)。
绝地反击,华为宣布将推出自主研发的海思芯片、鸿蒙操作系统与方舟编译器。
一时间引起了剧烈的反响,一方面是一种爱国情怀在刺激着全国人民,不管是不是开发者,大家在关系到国家前途的这件大事上都积极参与了进来;另一方面,华为准备祭出的这几个项目,在国内当前技术环境下并没有前例,它们技术上具体是如何实现的?完成得怎么样?有什么样的突破?……这些与技术相关的期待、疑问与质疑在讲究“talk is cheap, show me the code”的开发者圈子中瞬间爆炸。
这其中有正面的声音,反面的也不少。在华为一次次骚操作中,人们的质疑一再被打脸,真香定律疯狂应验。
拿最近开源的方舟编译器来说,传闻这个编译器华为已经自主研发了10年,但是直到开源出来,华为还是被许多人喷只会画饼:
•2009年,华为启动5G基础技术研究的同时,开始创建编译组,第一批海内外研究人员加入;
•2013年,华为推出面向基站领域的自研编译器HCC,并正式提出编译器框架构想;
•2014年,众多海内外专家加入华为,方舟项目正式启动;
•2016年,成立编译器与编程语言实验室;
•2017年,方舟编译器上第一个Java程序“Hello World”跑通;
•2018年,方舟编译器跑通安卓系统所有后台服务,并成功移植到手机;
•2019年,华为方舟编译器开源。
其实源码目前已经开放,喷的人也开始换了一些角度。目前方舟编译器开源的是编译器框架部分源码,包括编译器中间表示(IR,Intermediate Representation)与语言编译实现,同时搭配编译器其它二进制组件,实现Java程序到aarch64汇编指令的编译过程。
据介绍,一方面,方舟编译器首次在Java领域将虚拟机干掉了,也是软件史上首次将Java/C/C++等混合代码一次编译成机器码直接在手机上运行,告别了Java的JNI额外开销,也告别了虚拟机GC内存回收带来的应用进程掉线,使操作流畅度大幅提升。
华为没有透露技术细节上的东西,同时官方也并未透彻说明研发方舟编译器的核心难点在哪里。但是根据方舟专家不闲的介绍,我们了解了一些东西。
首先Java本身是“动态语言”,如果要能够在服务器侧做到静态编译,又不能动手裁剪语言的动态能力,就需要IR、运行时、编译器以及编程框架一起修改,同时还要考虑复杂的兼容问题,导致技术方案选型的困难。
其次要想提高流畅度,需要提升内存使用效率、提升JNI效率,需要想尽办法控制动态绑定对性能的影响,需要profile上有更准确的信息,这是系统工程上的困难。
而最为关键是如何提升编译后的代码执行效率,做出一个可以工作的工具不难,难在做出世界顶尖性能。此外,我们国内能做IR设计和内存模型的人才太少了。
按照华为的说法,方舟编译器的开源打响了鸿蒙OS开源的第一枪,方舟编译器之上,鸿蒙OS是“第一个适用于所有场景的基于微内核的分布式操作系统”。
它可以运行在智能手机、智能扬声器、计算机、智能手表、无线耳塞、汽车与平板电脑上,其支持的RAM大小从千字节到千兆字节不等。此外,鸿蒙最终将支持一系列应用,兼容Linux与Android应用。
同时华为还介绍接下来方舟编译器本身也会继续增量开源。此外,根据一些开发者的分析,华为基于方舟编译器的IR层设计,其实上可接入不同编程语言生态、下可接入各种操作系统与硬件平台,而一旦IR层生态建成,更可直接推出自己的语言。
这样软件王国四大明珠“操作系统、编译器、编程语言与数据库”中三颗都将变成华为的掌上明珠,这在国内还没有先例。
基于这些已经引起的全球性的关注以及开源相关计划与事实,我们认为华为今年在开源上的参与程度与影响值得记录与继续期待。
另外值得一提的是,最近CNCF发布的Kubernetes历程报告中,我们发现华为高亮出镜:目前在参与贡献Kubernetes的公司中,华为贡献量排在第4位。
MongoDB
这一小节讲讲今年在开源界名声似乎不怎么样的MongoDB。
MongoDB去年10月份宣布将开源License从GNU AGPLv3切换到Server Side Public License(SSPL),以此回应AWS等云厂商将MongoDB以服务的形式(DBaaS)提供给用户而没有回馈开源社区的行为。
SSPL明确要求托管MongoDB实例的云厂商要么获取商业许可证要么向社区开放其服务源码。
但是开源社区对此有不少反对声音,许多人认为SSPL是具有针对性的,对特定类别的用户具有严重歧视性,这违反了开源的真谛,所以Fedora认定SSPL不是一个自由软件许可,红帽和Debian也宣布从发行版中删除MongoDB,甚至macOS包管理器Homebrew也因为协议问题移除了MongoDB。
同时被点名的云厂商中的代表AWS随后推出了一个与MongoDB API兼容的新数据库产品DocumentDB,并将其描述为“一个快速、可扩展且高度可用的文档数据库,旨在与你现有的MongoDB应用和工具兼容”。这摆明了是对MongoDB的反击。
为什么单拉MongoDB出来讲呢?因为事情发展到今年,MongoDB其实成为了跑在开源与云厂商斗争最前线的一个卫士,在它的队列中,先后出现了其它知名开源项目的身影:
•十分流行的图数据库Neo4j宣布,从Neo4j 3.5版本开始,企业版仅在商业许可下提供,不再提供源代码。
•Confluent宣布修改其平台部分组件的开源协议,从Apache 2.0切换到Confluent Community License,新的协议不允许将项目源码作为SaaS产品提供给用户。其背后是知名的流处理平台Kafka的团队,并且此次协议修改影响到KSQL。
•Redis Labs的一些模块在半年内相继从AGPL变更为Commons Clause和Apache 2.0组合的开源协议(Apache2 modified with Commons Clause),又变为Redis源码可用协议(Redis Source Available License,RSAL),RSAL要求源码不能集成到数据库产品、缓存引擎、流处理引擎、搜索引擎、索引引擎或者机器学习/深度学习/AI服务引擎。
•Cockroach对核心源码的开源协议进行修改,从原本的Apache-2.0协议修改为BSL(Bussiness Source License),该协议要求用户唯一不能做的是在没有取得授权的情况下以商业形式用CockroachDB提供数据库即服务(DBaaS)。
•……
这些项目陆续修改开源协议甚至直接闭源,都直接把原因指向了云厂商将其能力直接作为一种云环境下的服务赚大钱,而不回馈开源社区。它们不愿意眼睁睁看着云厂商坐收渔翁之利。
当前站在这场开源界与云厂商混战中最前线的正是MongoDB,它成了典型代表。
且不说各个Linux发行版与工具将它列入黑名单的“英勇就义”,也不说与AWS交锋的几个来回,就看在开源界大佬们也纷纷发声来谴责MongeDB等开源项目针对云厂商修改协议的这种行为,许多人认为它是输家时,MongoDB正面刚了。
MongoDB CEO Dev Ittycheria认为不必在意这些看法,他说:“从那以后,我们的业务增长得更快。这没有任何影响,它只影响那些可能在考虑使用我们的免费版本,并将其作为托管服务提供给第三方的人。”这似乎就是要与云厂商斗到底的架势。
同时Dev还直言MongoDB开源并不是为了获得帮助,使产品更好,而是作为免费增值策略,以推动采用。
不管是为了什么,开源最终还是需要有一个可持续的方式来维持,简单来讲,至少需要可以维持项目正常运营的金钱,而一旦开源项目走了商业化发展道路,那么商场自然也有商场的规则,对于项目所赚钱财的多少则会更加看重,这是开源与云厂商斗争中开源这一方的利益关切。(又或者前边提到的开源项目其实也有利益不相关,纯粹看不惯云厂商的操作的?)
另一边,这些被“针对”的云厂商不愿意放弃那一种从开源中得到的精妙的获利方式,不愿意放弃这笔优质的收入。
开源与云厂商利益关切本质上不同,并且看起来目前没有较为理想的解决方案;关于谁是谁非的观点其实也明显地分化成了两派——一方面是因为对协议的理解不同,一方面似乎是协议本身不完备,没有明确处理这种案例的内容;同时在这之间还不断有人加入战局,让局势不断往高潮上发展。
因此我们认为开源与云厂商的混战还将不断恶化下去,最终收场可能需要倒逼到“开源最上游组织”去重新修改相关约定。
注:这里说“开源最上游组织”而不说OSI(Open Source Initiative,开源促进会,定义“开源”与认证开源协议的组织),其实是因为本身华为的事件让人们开始思考开源国界与本质等相关问题,那么最终我们是否需要、会不会重头来过,重新规划开源的这亩田地呢?我们甚至连最终会不会存在一个“开源组织”形态都不能断言。
小结
不管是华为还是微软,其实公司开源背后的想法都可能不那么“极客”,是不是被动/主动通过开源去建设生态,是不是通过开源最终想要分到一杯什么样的八宝粥只有它们自己知道。MongoDB或许只是勇于把真实想法说出来而已,这反而能让人敬佩。
在将这几个代表性公司今年在开源方面的情况梳理了一番之后,回过头来看,这一篇咱们从中美贸易摩擦开始讲到了华为的参与开源,而为什么中美贸易可以影响到开源呢?这其实引发了我们很多思考:开源有没有国界?参与开源是可取的吗?开源的法律问题怎么认定……“华为事件”其实代表了我们关于“开源到底该是怎样的?”的迷思。
而勾勒“微软的野望”则是对开源本质的探讨;MongoDB与云厂商之间的斗争则让我们看到了开源生存的困局和处于商业市场下的冲突。
这些话题全部杂凑成一锅——关于开源的思考,这个话题我们下次再聊。
文章来源:
Author:IT之家
link:https://www.ithome.com/0/448/279.htm