文章类型: 排序方式:
谷歌 Fuchsia OS编程语言策略公布:前端用 Dart,Go 要退出
谷歌新一代开源操作系统 Fuchsia 的开发者网站上公布了一份 Fuchsia 编辑语言策略,文档描述了 C、C++、Dart、Rust 与 Go 的优劣势,并明确指定了其中哪些语言将会在 Fuchsia 开发生态中得到怎样程度的支持。该策略文档描述了 Fuchsia 项目在 Fuchsia Platform Source Tree(Fuchsia 平台源码树)和供终端开发者在这之外构建 Fuchsia 开发目标设备软件时使用和支持的编程语言。Fuchsia Platform Source Tree 是 fuchsia.googlesource.com 上托管的 Fuchsia 源码,终端开发者是指在 Fuchsia Platform Source Tree 之外为 Fuchsia 编写软件的人。与终端开发者相比,Fuchsia Platform Source Tree 可以汇聚对 Fuchsia 系统及其基础技术更大的更改,因为可以执行仅影响 Fuchsia Platform Source Tree 的更改,而无需与其他人员进行协调。相反,影响终端开发者的更改需要更多的协调,并且需要更长的执行时间。谷歌介绍,对终端开发者的支持意味着 Fuchsia SDK 需要包含可帮助他们为 Fuchsia 开发软件的工具和库,包括 FIDL(Fuchsia Interface definition language,Fuchsia 接口定义语言)特定语言后端与支持库等。对异步编程的强大支持则意味着可以使用直线型代码,例如使用 Rust/Dart 等语言的 async/await 编写异步程序。文档接下来分别罗列了几种编程语言,分析了它们的优缺点之后,得出如下结论:CC 被支持用于终端开发者。在 Fuchsia Platform Source Tree 中,不鼓励使用 C 的新用法,并且仅批准用于以下领域:用于底层系统编程,包括内核中用于定义到共享库和其它系统组件的 ABI 稳定接口C++C++ 被支持用于终端开发者。批准在整个 Fuchsia Platform Source Tree 中使用 C++。DartDart 被支持用于面向非驱动程序的终端开发者。Dart 被批准在 Fuchsia Platform Source Tree 中用于用户界面和无限期运行的程序。Rust终端开发者不支持使用 Rust。除了 Zircon 内核,Rust 被批准在整个 Fuchsia Platform Source Tree 中使用。GoGo 仅被批准在网络技术栈中使用,因为网络栈的迁移需要大量成本。时间准许的话,应该将网络栈迁移到批准的语言。必须将 Fuchsia 中用于目标设备上生产软件的所有其它 Go 代码迁移到批准的语言。总结一下,Go 在 Fuchsia 生态中可能会有些失落,值得注意的是文档中关于其缺点的介绍:使用垃圾回收来管理内存,这比其它用于管理内存的技术占用更多的资源运行时环境庞大Fuchsia Platform Source Tree 在使用 Go 方面具有负面的实施经验。Fuchsia 项目在 Go 中构建的系统组件消耗的内存和内核资源相比使用 C++ 或 Rust 构建的同类组件更多工具链产生大型二进制文件值得关注的是,文档中没有涉及 Fuchsia 已经确认支持的 Python。不过关于 Python 的支持细节,支持语言页面也没有详细内容,只有一栏栏 TODO,应该是还没有做好准备。而另一方面,此前关于支持 JavaScript 的传言,看来也无法得证。原文链接
Google宣布推出KataOS操作系统 利用Rust和seL4微内核
Google本周宣布发布KataOS(开发代号Sparrow)作为他们最新专注于运行环境侧重于机器学习工作负载的嵌入式设备的操作系统。KataOS从设计上就具备安全意识,专门使用Rust编程语言,并建立在seL4微内核的基础之上。
微软正式开源受 Rust 启发的新编程语言 Verona
一个月前,微软研究人员 Matthew Parkinson 曾提到:微软正在开发基于 Rust 的新编程语言,该项目被命名为 Verona。现在,微软已将 Verona 正式开源。根据微软给出的介绍,Verona 项目旨在探索有关语言和运行时设计的研究,以实现安全的可扩展内存管理和分区。此次开源的原型仅涵盖内存管理方面。
中国程序员开发的远程桌面RustDesk:多平台可用 大小只有9MB
对很多Mac用户来说,想用远程控制请教下大佬,太难了。在Windows上一个QQ就能搞定的事,而Mac用户几乎只能依赖Teamviewer。Teamviewer还遭到不少吐槽:占用高、打开慢,有时还因为被识别为商用而收费……现在,不必再和它较劲了。
微软宣布Rust for Windows v0.9:全面支持Windows API
自去年预告以来,微软已经为拥抱 Rust 编程语言付出了相当多的努力。近期,该项目已经取得了重大的进展。在 VS Code 和 Visual Studio 集成开发环境中,微软已经提供了对 Rust 编程语言相当良好的支持。随着 Rust for Windows v0.9 的发布,开发者现能够以一种更加习惯的方式,访问完整的 Windows API,从而轻松构建功能强大且丰富的 Windows 应用程序。
谷歌工程师:七成Chrome安全漏洞是内存安全问题,Rust 又成备选语言
近日,有谷歌工程师分析了自 2015 年以来在 Chrome 稳定版分支中修复的 912 个安全错误。并发现,在这些被标记为“高”或“严重”等级的所有安全漏洞中,大约 70% 是内存管理和安全问题。这其中又有一半是 use-after-free 漏洞。这种安全问题是由对内存指针(地址)的错误管理引起的,为攻击者打开了攻击 Chrome 内部组件的大门。
谷歌启动完全开源的OpenSK安全密钥:加密狗绝配
1月31日消息  近年来,从制造自己的Titan系列到引入可与现有Android和iOS手机集成的安全密钥,谷歌一直在关注安全密钥领域。为了刺激创新,谷歌今天启动了 OpenSK安全密钥,这是一个开源代码项目,可让开发人员构建自己的安全密钥。OpenSK是安全密钥的开源实现,支持FIDO U2F和FIDO2标准。这种双因素身份验证方法可以有效抵抗网络钓鱼攻击。登录在线帐户时,必须亲自提供钥匙形的加密狗或密钥卡,才能确认身份。通过开放OpenSK作为研究平台,谷歌希望它会被更多的研究人员、安全密钥制造商和发烧友所使用。谷歌允许开发人员通过在价格为10美元的现成的北欧芯片加密狗上刷新OpenSK固件来构建自己的安全密钥,只要硬件具有NFC、低功耗蓝牙和具备专业硬件加密核心的USB-A接口就可以。谷歌还提供了可定制的3D打印保护套。谷歌还指出了如何使用OpenSK构建“功能齐全的FIDO身份验证器”,但强调该实验项目用于“测试和研究”。在底层,OpenSK用Rust编写并且在TockOS上运行,从而提供更好的隔离、更简洁的系统抽象,安全性有保障。Rust强大的内存安全性和零成本的抽象性使代码更不容易受到逻辑攻击。TockOS凭借其沙盒架构,提供了安全密钥在子应用程序、驱动程序和内核之间的隔离,这是构建深度防御所需的。
Trustdata发布6月MAU数据:微信、支付宝、QQ分列前三
7月12日消息 今日,大数据监测平台Trustdata发布了2019年6月移动互联网全行业排行榜。Trustdata表示,6月的关键词为“火热”,618年中购物节使京东、天猫、苏宁等电商类App增长明显;夏日的高温天气使外卖增长的同时旅游出行、地图导航类App明显下滑。Trustdata统计的2019年6月MAU(月活跃用户量)排行榜中,微信以10.96亿MAU稳居第一,排在第二位的是支付宝,MAU为6.83亿,QQ则以5.69亿MAU位列第三位,淘宝、抖音短视频、百 度、爱奇艺、WiFi万能钥匙、今日头条、微博分列四至十位。▲2019年6月MAU TOP200排行榜(部分) | 图源:Trustdata大数据在智能硬件类App细分榜单中,米家、华为穿戴、电话手表分列前三位。在游戏类App中,迷你世界、开心消消乐、王者荣耀、和平精英、JJ斗地主位居前五位。
Linux内核更新加入Rust语言支持 并开始提供网络和异步功能
在一个激动人心的周六早晨,Miguel Ojeda发布了最新的补丁系列,历史性地将Rust语言支持纳入Linux内核。"Rust for the Linux kernel"补丁现在已经到了第六个版本,它为这种第二种可选语言添加了必要的支撑,并继续添加更多的示例代码/基本功能,以展示这种注重内存安全的语言在内核中的应用。
Chrome平衡用户隐私和广告追踪 Trust Tokens将替代第三方cookies
今年早些时候,谷歌表示正和其他网络浏览器公司一起在 Chrome 中阻止第三方 cookies 的访问。今天,谷歌为开发者提供了新的替代解决方案--Trust Tokens(信任令牌),帮助他们追踪网络用户。
微软GitHub发布2019年度报告:用户超4000万,Python成第二受欢迎语言
GitHub发布了2019年年度报告《The State of the Octoverse》,下边来看看一些主要数据。全球用户超过4千万目前GitHub上有超过4000万开发人员,其中有80%来自美国以外的地区。去年一年里有1000万新加入的开发者,2019年创建第一个repo的人比2018年增加了44%,还有130万人首次在开源中贡献。组织正在跨时区进行协作,并依赖于开源软件目前GitHub上有将近300万个组织帐户,它们来自世界各地,代表了公司、非营利组织与开源项目等的集体工作。其中,GitHub Enterprise Cloud帐户来自70多个不同的国家。今年全球财富50强中有35家对开源做出了贡献,这反映出专有代码在很大程度上依赖于开源社区。软件社区比以往任何时候都更加紧密地联系在一起去年新创建了超过4400万个repo,从医学上的机器学习和有关深度学习的学术论文,到各种各样的机器人,在这个基础上,开源项目的共享基础架构将所有软件联系在一起,并且它们的依赖关系十分紧密。具体来看,平均而言,GitHub上的每个公共和私有repo都依赖于200多个软件包,每个项目背后都有数百个依赖项。而且,如果按被依赖程度来查看前50个开源项目,可以看到,被依赖度最高的项目今年支持了超过360万个其它repo,比如 rails/rails、facebook/jest与 axios/axios之类的项目对于全球代码已变得至关重要。修复了超过760万个漏洞警报安全性也是开源社区的一项工作,发现潜在的漏洞后,维护人员、开发人员、研究人员与工具生态系统都会协同工作,以确保代码安全。GitHub 自2017年11月发布安全警报以来,目前已修复了超过700万条警报。更多除了以上关于GitHub本身的数据,还一有些托管项目的数据:Python成为GitHub上第二受欢迎的语言。Dart和Rust是增长最快的语言。在过去三年中,使用Jupyter Notebook的同比增长超过100%。TensorFlow的贡献者从2238涨长25166人。详细报告可以查看:https://octoverse.github.com
微软开源Rust/WinRT 方便使用Rust构建Windows应用
微软推出了基于 Rust 的 Windows 运行时项目 Rust/WinRT。该项目和 C++/WinRT 一脉相承,用标准语言和编译器为 Windows 运行时构建语言投影,从而方便 Rust 开发人员调用 Windows API,更轻松地使用 Rust 构建各类 Windows 应用和组件。
微软开源基于Rust的新软件 可在Kubernetes上运行WebAssembly
来自微软的 DeisLabs 团队最近开源了一款完全基于 Rust 的新软件 Krustlet,该软件可以用来在 Kubernetes 上运行 WebAssembly 模块。Kubernetes 是来自谷歌的开源容器集群管理系统,主要用 Go 语言编写。而微软此次选用 Rust 来编写这款 Kubernetes 相关项目,背后有着怎样的原因?
微软正式开源受Rust启发的新编程语言Verona
一个月前,微软研究人员 Matthew Parkinson曾提到:微软正在开发基于Rust的新编程语言,该项目被命名为 Verona。现在,微软已将Verona正式开源。根据微软给出的介绍,Verona项目旨在探索有关语言和运行时设计的研究,以实现安全的可扩展内存管理和分区。此次开源的原型仅涵盖内存管理方面。之前我们介绍到,Verona是基于 Rust的新语言。但Rust并不是激发Verona项目灵感的唯一语言,它也借鉴了Cyclone(一种安全的C语言)和Pony的概念。微软还强调,这只是一个研究项目,不是一项产品,并且与微软对C++,C#和Rust的使用没有关系。他们希望 Verona研究项目可以使其他语言受益,希望将其作为一种“研究编程语言”,通过开源吸引更多学术合作者以探讨并发所有权的概念。目前,该项目尚未做好在研究之外的领域使用的准备。
Fuchsia 编程语言策略:前端用 Dart,Go 要退出
谷歌新一代开源操作系统 Fuchsia 的开发者网站上公布了一份 Fuchsia 编辑语言策略,文档描述了 C、C++、Dart、Rust 与 Go 的优劣势,并明确指定了其中哪些语言将会在 Fuchsia 开发生态中得到怎样程度的支持。
Rust程序员一觉醒来都懵了:审核团队集体辞职 发生了什么?
昨夜, Rust编程语言的审核团队突然宣布辞职,且 即刻生效。他们在GitHub的pull request上发出了该声明。审核团队成员Andrew Gallant在声明中写道:团队辞职是为了抗议核心团队认为自己不对除自己以外的任何人负责。
注意了!使用WebAssembly的网站一半将其用于恶意目的
根据一项已发表的学术研究,使用WebAssembly的网站中大约有一半将其用于恶意目的。WebAssembly由Mozilla、谷歌、微软和苹果这四个主要的浏览器供应商协同创建,它引入了一种新的二进制文件格式,用于将代码从Web服务器传输到浏览器。一旦到达浏览器,WebAssembly代码(Wasm)就会以接近本地的速度执行,类似于已编译的C、C++或Rust代码。创建WebAssembly的目的是兼顾速度和性能。由于Wasm代码具有机器友好的二进制格式,因此它比等效的JavaScript格式小,但执行时速度也快许多倍。WebAssembly于2017年首次被提出,并于2019年底被批准为正式的W3C(万维网联盟)标准,目前受到所有主流浏览器的支持。在去年进行的一项学术研究项目中,来自德国布伦瑞克工业大学的四名研究人员研究了WebAssembly在Alexa上排名前100万的流行站点上的使用情况,以评估这种新技术的普及程度。他们加载了100万个网站中每个网站的三个随机页面,测量了WebAssembly的使用情况,以及每个网站运行代码所花费的时间。研究发现有 1,639个站点装载了总计1,950个Wasm模块,只有150个模块是独一无二的,有很多站点都在使用相同的 Wasm模块。研究小组还对每个网站正在加载的Wasm代码的性质进行了研究。他们手动分析代码,查看函数名称和嵌入的字符串,然后映射出相似代码的集群。研究人员表示,他们分析的绝大多数代码样本都用于加密货币挖掘(样本的32%)和在线游戏(样本的29.3%)。这两类Wasm代码在本质上是恶意的。用于加密货币挖掘的Wasm模块通常是所谓的加密劫持(通过挖矿驱动)攻击的一部分。另一类涉及打包在混淆的Wasm模块中的WebAssembly代码,这些模块有意隐藏其内容,一般来说是恶意广告的一部分。由于代码经常在多个域中重复使用,这些模块已被用于超过一半的样本网站。且将WebAssembly代码用于恶意目的的行为有在不断增加的趋势。研究小组还表示,这可能还只是“冰山一角”。为此,他们呼吁网络安全公司参与进来,应对新技术带来的新威胁。
Chrome 团队正探索 Rust 与 C++ 的互操作性
Chrome 团队也开始尝试 Rust 了。在 Chromium 官网近期发布的文档中,“Rust 与 C++ 的互操作性”作为一项尚待解决的挑战被提出。现阶段,Chrome 工程师很清楚 C++ 是第一位的,并且“在可以预见的将来仍然是代码库的统治者”。
Google支持将Rust代码引入Linux内核
Google支持将Rust引入Linux内核的消息今天引发开源社区关注,虽然这应该不会让人感到意外,尤其是考虑到最近谷歌允许Rust用于Android系统级代码的消息。现在,这家搜索巨头的工程师们现在开始支持Rust代码在Linux主线内核内使用。
Rust基金会正式成立:谷歌微软等科技巨头纷纷加入
Rust 基金会现在正式成立了。这是一个独立的组织,将负责管理和支持 Rust 编程语言。Rust 最初是 Mozilla 作为 C 和 C++ 更安全的替代语言而诞生的,尽管它并没有被广泛用于应用开发,但它已经迅速成为最受青睐的系统开发语言之一。
保护人类文明:GitHub将开源代码库保存在北极洞穴
11月14日消息 GitHub今天分享了开放Arctic Code Vault的计划,该计划旨在存储和保存Flutter和TensorFlow等开源软件。所有开放源代码项目的代码都将存储在胶片上,该胶片每帧包含880万像素,可以使用1000年。胶片由挪威公司Piql AS制造,表面有氧化铁粉涂层,Piql称在正常条件下这种材料能保存750年,在寒冷干燥低氧洞穴内能保存2000年。这些代码将保存在挪威斯瓦尔巴特群岛(Svalbard)退役的煤矿中,这也是被选为托管全球种子库的城市。斯瓦尔巴特永久冻土是地球上最北端的城市之一,可以延伸到地表以下数百米。档案管理员认为,寒冷和接近恒定的条件可以帮助保存。今年年初开始,数千个流行的GitHub项目(例如Blockchain,WordPress)和编程语言(如Rust或Ruby)加入了Arctic Code Vault计划,但Arctic Code Vault将于明年2月扩展到所有公共存储库。根据2019年Octoverse报告,GitHub有超过4000万开发人员使用,目前托管超过1亿个存储库。GitHub CEO Nat Friedman在解释为什么创建Arctic Code Vault时说:“如果没有软件,再也不会发生什么大事。”Friedman表示,随着时间的推移,媒介可能会发生变化,可能会使用像二氧化硅这样的物质,该物质能将数据存储一万年以上。
Asahi Linux或继续用Rust为Apple Silicon编写GPU驱动程序
尽管有一些逆向开发者在努力为 Apple Silicon Mac 引入 Linux 支持,但当前的一大阻碍,就是缺乏对 GPU 硬件加速特性的支持。比如早期的 Asahi Linux 实验,主要围绕 m1n1 环境开展。而下一步,他们或继续使用 Rust 语言来编写 Apple AGX 的 DRM 内核图形驱动程序。
JetBrains 推出独立的 Rust IDE——RustRover
JetBrains 宣布推出 Rust IDE——RustRover,其的目标是将 JetBrains 的 Rust 支持提升到更高水平。为了与其他 IDE 保持一致,并确保 JetBrains 作为一个团队和一家公司的长期可持续发展,RustRover 将在商业方案下提供。
微软解释为什么 Rust 是系统编程的最佳选择
上周,MSRC(微软安全响应中心)透露出拥抱 Rust 的打算,随后他们将这个话题扩展为一个系列,进一步阐述了使用安全的系统编程语言的的必要性,以及选择 Rust 的原因。在该系列最新一篇文章中,MSRC 团队首席云开发布道师 Ryan Levick 解释了为什么他们认为 Rust 编程语言目前是业界采用的最佳选择,不仅仅是因为它能够以内存安全的方式编写系统级程序。
Google与主要开发者签订合同 Linux内核将迎来更多Rust代码
Google希望在Linux内核中看到对Rust编程语言的运用,以至于他们已经与从事 "Rust for Linux"工作的主要开发者签订了合同,这项工作旨在让Rust代码在内核中成为主流。
投资人热衷低成本影片为避税
圣达菲警方在《Rust》枪击事故现场找到500枚各种类型子弹,其中有空包弹、教练(哑)弹,以及疑似实弹。当地警察正在走访目击证人,以确定拍摄现场为何会出现实弹。知名影人亚历克·鲍德温在排演一出戏时,向导演及摄影师演示他如何掏枪。
用Rust重写Linux内核?Linus Torvalds持观望态度
虽说 Linux 是 C 语言的表率,不过时代在变。将 Rust 编程语言作为 Linux 的系统语言呼声越来越高,也受到了非常多用户的支持。例如在 2020 年的 Linux Plumbers 大会上,开发人员认真考虑了在新的 Linux 内联代码中使用 Rust 语言。近日外媒 ZDNet 就这个话题采访了 Linux 创始人 Linus Torvalds 和 Linux 稳定内核维护者 Greg Kroah-Hartman。
Firefox仍然保留了许多来自Netscape的代码
网景(Netscape)在 1998 年开源了它的浏览器,Mozilla 在此基础上开发了 Firefox 浏览器。22 年之后,Firefox 经历了多次重大的迭代更新,目前正使用 Rust 语言对浏览器进行重构。
Google委托VirusTotal分析8000万个勒索软件样本 以下是一些细节
Google发布了一份新的勒索软件报告,以色列是在此期间最大的样本提交者。这家科技巨头委托网络安全公司VirusTotal进行分析,这需要审查来自140个国家的8000万个勒索软件样本。根据该报告,以色列、韩国、越南、新加坡、印度、哈萨克斯坦、菲律宾、伊朗和英国等国家是根据VirusTotal审查的提交数量确定的10个最受影响的地区。
开源界大事件盘点!微软真爱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与云厂商之间的斗争则让我们看到了开源生存的困局和处于商业市场下的冲突。这些话题全部杂凑成一锅——关于开源的思考,这个话题我们下次再聊。