开源汽车

网友投稿 2019-05-25 17:22

https://cdn.china-scratch.com/timg/190527/1H253C51-0.jpg

从开源软件说起

所谓的“开源”,是“开放源代码”(Open-Source)的简称。看名字就知道,这个概念来自软件行业。

写过软件(哪怕是Hello World)的都知道,我们买到或者使用的各种软件——小到文本编辑器,大到操作系统,基本都是二进制文件(Binary)。可以直接在特定操作环境下执行的。而在这些软件变成可执行的二进制文件之前,还有一个很重要的阶段——源代码。源代码通过编译(Compile),才会变成可以直接使用的软件。

(当然现在也有很多解释型语言,并不需要特别的编译过程,但是无论如何,它也需要经过解释转化成机器语言才能运行,所以系统必须安装对应的解释器——题外话)

源代码在手,就可以读出整个软件在设计阶段的思路是什么、用什么手段来实现,如果可以的话,改改代码或者更换编译环境就能实现不同的功能,或者提升特定操作环境下的运行性能。

岂不美哉?

然而,在现今的软件行业当中,多数商业软件为了保护自己的商业利益,并不会将自己的产品的源代码面向公众公开——除非在微软或者特定的学术机构或者相关公司或者政府机构工作,否则是接触不到Windows的源代码的(其实接触到了又如何……想要编译都无从下手)。而一些“免费”的软件,为了保护自己的知识产权不被滥用或者肆意修改,也会选择不公开源代码。

对于普通用户来说,这些都毫无问题——只要有产品(软件的二进制可执行文件)就行了还要什么自行车。然而,终究有人是不满意的——

https://cdn.china-scratch.com/timg/190527/1H2543520-1.jpg 

 1983年,在MIT工作的Richard Matthew Stallman发起了GNU项目,轰轰烈烈的开源软件运动就此展开。GNU倡导程序员将软件以开放源代码的方式发布,并且在随后的发展当中,衍生出了GPL、BSD、LGPL、QPL、MIT、Creative Common等等多种开源许可协议。至于产品,那真的是枝繁叶茂。随便举一些例子:Minix及其衍生品Linux以及Linux的衍生品Android、BSD、Qt、GTK、php、MySQL、Apache、nginx,可以这么说,开源运动构筑了我们今天使用的软件与互联网的半数基石。

其实,开放源代码这种事,比GNU项目的历史还要早。早在60-70年代,IBM、Sun等巨头在分发软件的时候,多数也是开放源代码的。因为那时候软件是硬件的附庸。是后来软件工业逐渐独立于硬件制造之后才有的闭源软件。当开源运动发展到一定程度之后,Geek们就开始思考这样一个问题:硬件,从来都没有“开放”过,是不是也能开放一下呢?这就是开源硬件(Open-Source Hardware)。

开源硬件

https://cdn.china-scratch.com/timg/190527/1H2543411-2.jpg 

 与1983年的GNU项目相比,开源硬件的历史要短很多。它最开始是在1997年由Bruce Perens发起的。

说起Bruce Perens,也是开源软件运动当中的重要人物,他撰写了开源软件的“宪法”——The Open Source Definition,并且在随后激发了“开放知识国际”(Open Knowledge International),将其推广成The Open Definition,成为一切开放文档、开放硬件、开放软件的基础。

恶搞的是,开源硬件同样也比OSHWA这样的运动早很多,60-70年代的硬件都是开源的,兼容统一的标准,其中一大经典就是Adobe PostScript与PS兼容打印机的诞生(Adobe与施乐的恩怨足够再写一篇文章)。也是后来为了保护商业利益才开始有的技术壁垒。

所谓天下大势开久必闭闭久必开,大体如此。

硬件的诞生和软件颇有几分类似。软件需要从源代码,经过编译生成二进制文件;而硬件则是从设计经过加工制造生成成品。那么,在开源硬件的整个链条当中,自然也就遵从原理图、设计、材料清单乃至所需的软件、固件都开放的原则。原理上,任何一个拥有相关知识并且有渠道获得相关资源的人都可以根据开源硬件所提供的资源制造出对应的硬件来。

事实上,相关的实践早就在进行了,这就是2005年发起的Arduino项目。

https://cdn.china-scratch.com/timg/190527/1H2543959-3.jpg 

 Arduino推出了一系列完全开放的主板和扩展板,并且,任何人都可以通过开源的Arduino IDE来给Arduino做开发。

正是由于Arduino和其他一大堆开源硬件的存在,我们才能在CES上看到那么多的创客团队,他们可以使用开源的硬件来实现自己的想法,而成本非常低廉——知识都是免费的,需要投入的仅仅是物料和人力而已。

https://cdn.china-scratch.com/timg/190527/1H254I95-4.jpg 

 很多创客团队推出的廉价FDM 3D打印机实际上采用的就是开源的RepRap 3D打印方案

既然硬件都能开源,那么另一种硬件……要不咱们开源个汽车玩玩?

嗯……这是个不小的挑战

和大部已经标准化的电脑相比,装一台汽车可不是闹着玩的。

一台标准台式PC,只要不是类人猿级别的动手能力,任何人都可以装——哪怕从没有装过,只需要老手稍加指导即可。毕竟LGA1151或者DDR接口直接插进去就行,只要别插错。反着插硬件要么进不去要么会把硬件怼坏,只要不是瞎或者纯呆,都不至于搞错。

但是汽车……拧一个螺丝都要好好考虑装配设计的时候给它定的是多大的扭矩。否则……

https://cdn.china-scratch.com/timg/190527/1H255D32-5.jpg 

 连训练高度有素的F1技工都偶尔搞事,普通人是什么水平心里没点B数吗.jpg

但是搞事情的心永远都在躁动。而且,自己拼汽车玩的优良传统在欧洲和美国那是源远流长的,这就是欧美汽车文化当中一个很好玩的概念——Kit Car。

买过车模的都知道,买回来的车模有两种状态。一种是整车,另一种则是要自己拼的。

https://cdn.china-scratch.com/timg/190527/1H255C10-6.jpg 

 其实,汽车也是一样的。我们今天买车,多数都会前往当地4S店,选好一辆车,交钱直接开走。但是,在以北大西洋腐国为首的老牌汽车国家,还有一种很奇妙的买法,买回来的车一开始都是二次元的。

https://cdn.china-scratch.com/timg/190527/1H25B2X-7.jpg 

 然后得自己动手,把这堆零件给攒成一台能上路的车。当然上路这回事,在中国是绝无可能,这算是拼装车。然而英国却允许,只要到车管所(严格说来不是……)检验合格,就可以挂上牌照大大方方上路行驶。

当然,Kit Car也是有一些局限的。开着开着突然轮子飞了或者车门掉了,请自觉打落门牙往肚里咽外加检讨手艺不精,没有任何售后服务机构会来表示关怀。

但是,这样的问题并没有让广大腐国爱车痴汉望而却步,反而前赴后继,Kit Car的销售一直不错。为啥?大概有两个原因,将一堆零件组装成能跑的汽车,这是理工男的浪漫。其次就是Kit Car在提供相当不俗的性能的同时,价格简直便宜到家。

不过,Kit Car和我们今天所说的“开源汽车”,其实还是有一些区别的。

Kit Car,讲的是一辆车的装配工作并非工厂完成,而是由消费者来自行完成;而开源汽车则强调一辆车上所有的零部件的设计,以及零部件的组装方式完全公开。对于是否由消费者自己来完成,反倒是其次了。

《速度与激情8》当中出现了一辆非常特别的车——

https://cdn.china-scratch.com/timg/190527/1H25I0A-8.jpg 

 Letty驾驶的这台车非常奇特,上半部分是一副美式肌肉车的样子,但是再往下看则是巨厚的越野胎和超高的离地间隙。

这台车叫Rally Fighter,国内有售,价格158万人民币。

而这台车,恰恰是一台成功的开源汽车的代表。而这就得从Rally Fighter的创造者——Local Motors社区的运作开始说起了。

众造汽车

Local Motors与其说是一家公司,不如说是一个社区。

Local Motors总部位于亚利桑那州凤凰城,而我更乐意将它的总部放在虚拟空间——网络上。

https://cdn.china-scratch.com/timg/190527/1H25HG0-9.jpg 

开源操作系统+开源浏览器+开源汽车网站的组合

Local Motors成立于2007年,自创始之日起,就一直推新一种在线协作模式进行汽车的开发。个人或者组织都可以在Local Motors注册成为会员,为LM的项目贡献智力。包括但不限于:提出设计、验证设计、修改设计、测试数字装配等等。而另一方面,如果有好的Idea,也可以在LM社区当中抛出。

还有一个很风骚的特点是,LM社群当中的成员,有可能恰恰就是产品的潜在客户——甚至直接就是客户。这也是某种程度上的客户参与设计。

而到了最关键的实现设计的阶段,Local Motors的立足点是Direct Digital Manufacturing——将数字设计直接输出为成品。依靠的当然是快速成型技术。

https://cdn.china-scratch.com/timg/190527/1H25J313-10.jpg 

甚至最后的“量产”,依赖的也不是当今汽车工业常见的占地动辄几十上百公顷的庞大工厂,而是一个“制造空间”。这个“制造空间”当中的主体是一系列“微工厂”(Microfactories)。

Local Motors并没有建设一个庞大的制造基地,而是通过数字的方法将遍布美国和欧洲的无数小型工厂串联成一个制造网络,这些工厂都高度依赖上面提到的DDM模式,将设计直接转化为成品。

时至今日,Local Motors已经成为了开源汽车领域的领跑品牌。但是,在开源汽车领域,玩家并不止LM一家。另一个发展得比较久的是Open Motors,原来叫OSVehicle。

OSV推出过一个对外销售的型号“Tabby”,今天已经演进为Tabby Evo平台。

https://cdn.china-scratch.com/timg/190527/1H25U264-11.jpg 

这是一个完全开放的Rolling Chassis,关于这个平台的所有资料在Open Motors的网站上都可以看到,Tabby Evo的一个亮点就是开放式的车身接口,只要遵从这个接口规范,就可以制造一个完全兼容于Tabby的车身安到这个地盘上,它可以是一辆高尔夫球车,也可以是一辆通勤车,也可以是一辆赛道车,完全取决于用户自己想怎么利用这台底盘。

Open Motors还从Renault取得了Renault POM的授权。基于Renault POM的量产车就是不少人都很熟悉的Twizy,现在也可以在Twizy相当成熟的基础上自己套上合适的车身和总布置概念方案,实现造车的梦想。

https://cdn.china-scratch.com/timg/190527/1H25Q340-12.jpg 

 而最疯狂的开源汽车项目,当属Nicolas Perrin的开源LMP1项目。

https://cdn.china-scratch.com/timg/190527/1H25UD5-13.jpg 

据某些消息,这辆车有可能出现在今年的勒芒24小时耐力赛的#56号车库。殊为不易。

和上面那些开源汽车项目一样,Nicolas Perrin的开源LMP1同样也是将所有的设计都公开发表在网上,让社群的所有人都去检视、验证、修改甚至重新提交新的设计。

https://cdn.china-scratch.com/timg/190527/1H2592a8-14.jpg 

如果这辆LMP1今年真的出现在Sarthe赛道,和终于熬成婆的TS050正面对决的话,这应该是开源汽车领域的一个里程碑。

平行线

和波澜壮阔的开源软件运动一样,开源汽车也足够让人激动。

但是和开源软件到今天终端用户覆盖率依然不足、认知率偏低一样,开源汽车也并没有为大众所熟知。稳居全球操作系统份额第一位的依然是微软的Windows而不是各种Linux发行版或者FreeBSD,我们买车依然习惯于买一辆整车而不是拽一块底盘回去钻研原始设计图和标准文档然后套上一个合理的壳子和内饰或者修改动力总成。

个中原因是什么?

从根本上说,Open Source构筑了一个乌托邦,在这里,每一个人都为自己使用的产品出力、优化它们。但是,问题就在这里:真的每个人都愿意这么做吗?

其实每一个用户都会希望自己的产品不断地去进步变好,但是这并不是没有门槛的。要直接参与到开源运动当中贡献自己的设计,那得有一个前提——用户自己得能看懂设计。

很不幸,我用Linux用了十多年了,却压根看不懂Linux Kernel的代码,更遑论去修改了。当然,在开源社区,有一句口号也喊得响亮:

哪怕只是提交Bug报告这样的举手之劳,也是为开源做出了自己的贡献。

但是,现实却并非如此。在社区里提问太菜得不到耐心的解答甚至嘲讽并不罕见,报Bug十天半个月没人Reply并不罕见,Bug被加入fixlist但是过了大半年依然雷打不动并不罕见,想要自己从仓库外找包安装?所有的发行版都会很友善的提醒你:这样做毫无问题但是,出了任何问题我们概不负责,都是成年人自己搞了事情自己解决。

看看微软7×24小时电话、邮件支持和有专门的微软认证专家坐镇的技术社区,态度那是相当不同。

另外,什么样的人最难接受Linux?并不是对电脑一窍不通的人——事实上多数Linux发行版极为便捷的“开箱即用”的思路和非常方便的软件商场(多数软件均为免费)对他们很友好。在各种桌面环境的加持下,今天要使用Linux根本不用去学习佶屈聱牙的控制台命令。最难以接受Linux的,是长期浸淫在Windows或者macOS思维下的老用户。

因为Linux实在是太“碎”了。一个软件(在*ix系统里叫“包”)往往需要依赖一大堆别的包来运行。因为这个包很有可能借用了其他包里包含的代码,最终形成了犬牙交错的包依赖关系。尽管程序员们开发了apt、aptitude或者gdebi这样的工具来解决这些包依赖关系,但是在某些时候,特别是升级系统或者软件的时候,不同版本的包之间的兼容性往往会造成一些大问题。采用滚动式更新的发行版如Arch Linux更是这类问题的重灾区。我就是在被Arch Linux的包依赖折腾得几度神魂颠倒之后果断切换到了背靠实体公司的Ubuntu,发现被坑了之后切换到openSUSE Leap,现在是国产的深度。虽然现在有了Docker,有了Flatpak,但是问题并没有得到彻底解决。但是对于Windows,基本上还是可以放心大胆升级而不用担心会导致什么软件突然挂掉(虽然最近的1803更新直接让我的笔记本黑屏了让我很不爽)。而且,问题的修正经常非常迟缓。另外,由于源代码的开放性,“Fork”这个概念在开源软件里很常见。

所谓的“Fork”,就是指当有人对某个包的发展路线图不能认同的时候,就会自己将这个源代码拿过来,按照自己的意愿进行修改、发布,这就会导致原来一套代码走上不同的发展路线,像叉子一样分岔了。这就是Fork。Fork的例子数不胜数,如LibreOffice是Fork自OpenOffice.org,原因是OpenOffice.org卖身给了邪恶魔头Oracle(最近又回归又红又专的Apache基金会),再如Gnome桌面环境,MATE桌面环境Fork自Gnome 2,原因是Gnome 3很让人蛋疼很多人很怀念简洁高效的Gnome 2,Cinnamon桌面环境Fork自Gnome 3,原因是Gnome 3很让人蛋疼很多人很怀念简洁高效的Gnome 2又希望加进一些新时代的炫酷特效……Fork多了之后就会让人很头晕。

这只是浮在表层的冰山一角。它暴露的开源社区背后的真正危机是研发人员的缺乏组织。

传统Linux社区的松散的结构让每个包的维护者之间的协作并不甚高效,只能全靠自觉,以及特定社区的维护——类似多数Linux发行版的仓库并不会立即跟进最新的包,而是要进行依赖测试才会收进仓库,多数Linux用户是这样繁杂的维护工作的受益者,这也是“发行版”这个概念存在的一个重要意义。而一个操作系统及其上运行的软件和积木非常类似,需要包和包之间的高效协作。对于微软、RedHat或者Canonical这样的商业公司来说,指挥领薪水的程序员配合开发是很容易实现的,但是在一个松散的社区当中则效率会低下很多,甚至出现一些问题。

那么惊悚的拷问就来了——Linux出什么幺蛾子最惨重的损失也就是一硬盘的数据,那么开源汽车出问题的话……

嗯……

所以,开源汽车和开源软件的发展方式必定不能一样。

首先,和传统汽车开发一样的问题——立法。毕竟汽车是直接攸关人命的机械产品,大街上每一辆车诞生的背后都有无数双来自政府部门的眼睛死死盯着。

而汽车的相关法规之纷繁芜杂(以及各国家/地区经常互相不兼容的情况,如果由全球销售的野心的话),要制造一辆完全合法的汽车是一件挺麻烦的事情,中国的法规对“改装”的严格限制恐怕连发展的空间都不会留给开源汽车。

其次,就是另外一端——实现。

Local Motors的DDM其实在传统主机厂里也不是见不到,但是一般被拿来开发样车。它的经济效益只体现在极小规模产量的车型上。对于产量动辄十万甚至百万级别的车型而言,传统制造工艺的经济效益更好,但是传统制造工艺与设计之间漫长而迟钝的对接过程至今都没有一个完美的解决方案。

我想到的最后一点,就是资金。事实上,这也是开源硬件领域的一条绞索。

开源软件的产品从“设计”(敲代码),到”制造“(编译),到“仓储”(发布到仓库),到“销售”(通过网络下载),到“售后”(报bug到社区),几乎都是在虚拟空间内完成的。开源软件的运作成本主要受制于网络服务和硬件设备——很多硬件制造商还很乐意向开源社区提供硬件以示态度,如OpenSUSE的服务器就是AMD捐献的。和硬件制造所需的实打实的制造设备、仓储和物流需要投入的真金白银相比,只能算毛毛雨。

这只是小小的芯片,而汽车……

天文数字。

较高的门槛、缺乏有效而强力的组织和协同工作、绕不过去的法规、大批量实现的困难,以及极其高昂的资金投入,这些都成为了开源汽车的绞索——将开源汽车死死限制在一个很小的市场里,那就是定制化、极小批量的量产车,而且这些量产车往往面向的是非成本敏感的Geek用户。

Open Motors宣传他们的Tabby Evo可以很省钱,但是现实的情况并没有那么乐观。他们的“省钱”指的是节约开发成本,但是对于终端用户来说并不算省钱。一台电动Tabby Evo仅底盘售价就是12,480美元,而四座大电池的顶配底盘,价格则高达23,561美元。对比之下,美国最畅销纯电动车Nissan Leaf售价为22,490美元起,这可是一辆装备完整不缺胳膊少腿而且有强大售后支持的市售车。

如同Linux为首的开源软件一样小众。但是开源汽车却并没有开源软件大量免费的优势。尽管它确实可以大量节约研发成本,但是对于终端用户而言,能省多少研发成本他们并不关心,他们只关心给自己省了多少钱。

或许在未来,开源汽车与“闭源汽车”会和现在的开源软件与闭源软件一样,各自攻占自己感兴趣的市场,像两条平行线一样各自发展各自的。

除非在上面那些问题都不再是问题。

首先是非常完善的立法,这并非是汽车从业者所能左右的事情。

其次,就是新的组织方式。这样的尝试已经有了。GitHub就是一个很好的例子。在GitHub上,所有的开发者都可以即时看到其他开发者所做的更改。但是这样的尝试也只是局限在技术层面上。开源开发天生的散漫风气并非一朝一夕可以改变。

然后是高度的行业标准化。装PC之所以简单,乃是因为IBM当年的无(yi)私(nian)贡(zhi)献(cha),导致了IBM Compatible PC标准的建立。目前的汽车从设计阶段就没有考虑“二愣子也不会装错”这种。

最后就是Micro Factory的普及。最理想的状态当然是每家都有一个足以胜任工业级使用的3D打印机,可以将网上下载的设计直接转变为可堪车用的零件。当然这是一个非常遥远的预期了——做到这种程度的“Manufacturing Space”,才是将设计直接连接到客户的最极致的“DDM”。

启发

说起Open Motors的标准化接口这个概念,熟悉汽车开发的都可能先会愣一下。

嗯,模块化。

再说起Local Motors的DDM,做样件的也会愣一下。

嗯,快速成型。

这些技术已经成为了传统汽车工业中的一部分了。

事实上,开源汽车领域有很多值得传统汽车行业学习的地方。

比如客户参与设计。

在Local Motors,很多社区成员实际上也是Local Motors产品的购买者。与传统意义上透过用户研究,然后再一层层消化、解读(其中很多就存在信息的失真),最后再将这些“用户需求”投放到开发当中,就效率和效果而言,远不及客户参与设计的模式。

诚然,对于传统车企而言这里涉及到很多关于商业秘密的东西,无法像Local Motors这样的开源团队那样从立项开始就将所有的信息面向全部公众完全公开,但是在某些环节当中引入客户参与设计,如功能验证、造型评价、装备定义等,还是完全有其可能性的。

再如模块化设计。

今天的汽车研发当中模块化已经成为一种很常见的技术手段。通过模块化可以降低成本、压缩开发周期。然而,这种“模块化”依然停留在工程师的电脑里。如果将“模块”的概念推向终端市场又会如何?

就如同今天的智能手机及其操作系统——手机厂商只提供了一块光板,至于这个设备和软件能做什么,用户可以随时做出任意决定。这和汽车工业中现行的“选配”概念还不一样,选配是出厂的设计,出厂后用户就不能自行更改。如果如同Local Motors或者OpenMotors那样,采用标准化接口,实现用户可以随时自行按需求更换零部件,从而实现不同的功能,这将会引起汽车的一场巨大变革。

软件工业领域,开源软件和商业软件互相影响并不是一个新鲜的话题。商业软件巨头微软竟然同时也是OSI白金赞助商,Windows 10里直接内建Linux子系统,而Linux上也不乏Wine、Crossover这样可以直接运行Windows可执行程序的软件,FreeBSD入驻Azure云平台等等。在未来,开源汽车与传统量产汽车或许也会如此,各自发展、互相影响,让消费者成为最终的受益者。


还有相关技术和就业问题,可以扫描下方二维码,下载登录IND4汽车人app,在“问答”页面提问。也可以点击“阅读原文”,直接向作者发问。

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com