我持续推动Rust语言支持Windows XP系统

前言

Rust好像长期以来不支持Windows XP系统。有不少用户发帖提议官方支持XP,基本上都被Rust官方开发者明确的拒绝了。他们的对话大致上是以这样的形式开始和结束的(其中乙方代表官方及其拥趸):

甲方:Rust应该支持XP呀乙方:微软官方已经放弃维护XP,我们为什么要支持一个不安全的系统?甲方:从技术上说Rust支持XP应该也不难乙方:没必要为一个老旧的系统付出开发和维护成本甲方:XP在全世界还有很多装机量,甚至远超Mac OS系统乙方:XP是不安全的系统甲方:我们的客户要求软件支持XP乙方:XP是不安全的系统甲方:听说美国国防部还在部署一大批XP,花大价钱专门请来微软提供技术支持乙方:XP是不安全的系统甲方:……

基本上,Rust官方对支持XP的态度从来都是消极的,向来都是明确拒绝的。

发帖:Rethink supporting Windows XP

我(Liigo)在2014年3月12日发帖,要求Rust重新考虑支持XP系统:Rethink supporting Windows XP (Issue#12842)。

既然我知道Rust官方对待XP的一贯态度,为什么还要再发这类贴子呢?如果说不出什么新意,很可能被视为来捣乱的,直接Close了事。必须言之有物。

我为什么要求Rust支持XP?无它,自身的需求,客户的需求。

在帖子中,我说自己fork了Rust源代码并做了少量的修改,并且真的编译出来一个可以在XP系统下初步工作的Rust(后来我还专门写过一篇如何编译XP下可用的的文档rust-xp)。以亲身实践说明Rust支持XP在技术上没有难度;就算系统缺少某些API,也可以模拟实现(其他开源项目有很多先例可供参考)。我还说,XP虽然老旧,但装机量仍比Mac OS、Linux、Unix加起来还要多很多。我还说,C, C++, Java, C#, Python, Ruby, Scala 等等很多语言都支持XP,为什么Rust要做一个特殊的另类。

因为帖子是有真材实料的,并非老生常谈,因而帖子得以保留,讨论得以继续。然而后续的讨论,其实跟上一节甲方乙方的对话没有太多区别,拉锯战,持续了一年多都没有实质性的结果。在漫长的时间里,不断地有支持我意见的网友,顶起这个帖子,告诉大家他们的需求:想要Rust支持XP。可是官方人员的态度摆在那里,想说服他们180度转弯没那么容易。我也没有忘记这个帖子,有心地搜集来自各方的相关资料,争取先扭转舆论,再靠舆论扭转官方人员的态度。契机还是来了。当两个契机来临时,我抓住机会及时顶贴调动舆论。

第一个契机:Servo in Gecko

Gecko是Mozilla公司以C++开发的的网页渲染引擎,主要应用在Firefox浏览器中。Servo in Gecko项目是一个新的尝试,想把Rust开发的某些Servo相关代码逐步整合/替换到现有的Gecko中,最终形成换了心(Servo)的新的Gecko。这是一个野心勃勃的计划。

2015年1月1日,Mozilla公司内部跨部门沟通会上,考虑Servo in Gecko项目是否支持XP系统,然而并没有什么卵用,因为作为(部分)开发语言的Rust不支持XP。当时Rust开发组组长Brian Anderson在场,估计承受了一些来自兄弟部门的压力。相关链接:

2015年2月23日,Mozilla公司Servo组的另一次沟通会上,再次考虑了Servo in Gecko支持XP平台的问题。相关链接:

可见,支持XP是严肃认真的需求。要想Gecko支持XP,首先必须Rust支持XP。等于是Rust拖了本公司兄弟项目的后腿。到这个时候,Rust项目组应该已经(被逼)开始考虑支持XP了。(现实,很多时候就是这样,你可以长期忽视用户的需求,但你敢忽视来自同事甚至自家老板的需求吗?分分钟教你做怎样人。)

第二个契机:Firefox

转机终于来了。2015年6月16日,Rust语言开发的一个库mp4parser将要被整合进Firefox浏览器源代码里1。更早一点,还有一个Rust库rust-url parser也打算被整合进Firefox源代码里2。Firefox长期支持Windows XP。近些年Firefox在IE、Chrome步步紧逼下过得并不轻松,它在XP平台下的那大约10%的份额是死活也不肯丢的。Mozilla公司短期内绝对不允许Firefox放弃XP平台,也意味着绝对不允许Rust影响Firefox在XP上的部署。Rust必须支持XP,否则就是破坏Mozilla公司的市场战略,甚至动摇Mozilla公司的生存根基!当矛盾上升到这一层次,作为Mozilla公司主导的开源项目,,Rust除了老老实实地支持XP之外已经别无选择。

支持XP

事情发展到这一步已经顺风顺水了。只要官方态度发生转变,技术实现上难度不大。

https://github.com/rust-lang/rust/pull/26601

到2015年6月27日,Rust已经初步实现了支持XP系统。动作还是蛮快的。

后语

所谓我(Liigo)“推动”Rust支持XP,只不过是网上发发帖子、顶顶帖子、发几句牢骚、汇集些信息、引导点舆论而已。真正推动Rust支持XP的,是Mozilla公司自己项目的切实需求。Rust官方核心开发人员在此事件中始终持消极被动态度,直至收到来自公司内部的压力才有所改观,在此提出批评。

人只要不失去方向,就不会失去自己

我持续推动Rust语言支持Windows XP系统

相关文章:

你感兴趣的文章:

标签云: