01 无处不在的开放源代码软件
爱丽丝在一个休闲的午后,被一只奇怪的兔子绅士所吸引,怀着好奇心闯入了另外一个世界。尽管这个故事是一位小说家的奇幻想象力的产物,但是在我们生活的真实世界中,人们也正在利用技术构筑着其他空间。这也是人类独有的能力。现在的你,或者是走在城市街头,或者是在自己的书房,又或者是躺在舒服的床上,环顾一下四周,你是否看到了开源的入口呢?
是的,没错,它无处不在,但是你需要具备一些特别的能力来发现它。
因为是和现代信息有关,所以开源世界的入口一定藏在能够运行代码的计算机中,那么我们的目光可以聚焦在有芯片运行的地方:交通信号灯、巨大的电子LED广告牌、车载导航仪、手机、个人计算机、路由器……
犹如电影《头号玩家》里现实世界的人们需要借助虚拟现实(VR)设备才能接入虚拟世界中一样,想要走进开源世界,也需要一个工具,不过这个工具有些特殊,它是一种关于事物的抽象描述,一种人人可以习得的知识。
在此前提下,我们可以说“开源的入口,无处不在”。但是,还需要说明一下,这个入口是经过改造和修饰的,需要特别的视角和技能方能一眼识别,这些视角和技能是需要深度练习才能具备的,当然读者您那么聪明又幸运,将会很快拥有它们(需要做的就是读下去)。
接下来,就让我们从日常生活开始,留意一下哪里有运行着开放源代码的软件。
现代人的软件生活
软件深深地融入了我们的生活,你的每次网上购物经历、日常的出行、天气预报的获得、旅行安排、办公、预约看病、信息查阅等活动都与软件息息相关。
软件承载了现代人的生活,而且我们可以毫不夸张地说:开源参与了上述绝大多数事件。
在计算机发展的早期阶段,软件的使用是一件需要门槛和技能的事情。随着技术的不断发展,软件已经“润物无声”般侵入我们的日常生活。正如《大转换:重连世界,从爱迪生到Google》一书的作者所说:“我们不再依赖计算机中的数据和软件,而是更多地利用公共互联网传来的数据和软件。我们的个人计算机正在变成这样一种终端,其力量和作用不是主要来自计算机里的内容,而是主要来自计算机连上的互联网。”也就是说,我们对软件和数据的操控逐渐变得不可感知了。再也难有像王小波那样的作家,因为对排版人员工作的不满,用短短的一两年时间独自编写了一套软件程序。然而,开源所驱动的,恰恰就是我们作为用户只享受其结果的过程。举例而言,Google这样的搜索引擎,是我们现在日常生活和工作中无法离开的工具。我们使用浏览器,输入关键字,发送给Google,Google数据中心的集群会在存储网页的数据库中查询,然后按相关程度对网页进行排序,再通过互联网将网页返回到我们的浏览器进行显示。上述所有的过程都会使用到开源软件:从浏览器到域名解析,从网络包传输到Google集群,还有数据库和相关的处理程序。
在进一步了解更多关于开源技术的细节之前,我们需要耐心地观察软件的外观。开源软件究竟有何特点?
提示
我们在第二章01节进行了专门的讲解,如果你是一名对计算机相关技术非常了解的读者,可以跳过本章,直接从第二章01节开始你的旅程。
日常的手机软件(App)
我们身处智能移动设备的时代,从这里开始我们的旅程是个非常不错的主意。不过很不幸,光从计算机运行起来的表现来看,任何人都无法分辨出其软件是否是开源的,尤其是在采用图形用户界面(Graphical User Interface,GUI)的系统中。
所幸的是,我们还可以从法律协议的角度来判断某软件是否为开源软件。
◎社交类
我们身处移动互联的时代,使用微信恐怕是每个中国人难以逃避的现实,那我们就来看看微信的客户端使用开源的情况。请打开你手机上的微信客户端(8.0.6版本):“我的”→“设置”→“关于微信”→“微信软件许可及服务协议”→“开源软件”,会看到微信Android客户端中的开源软件页面(部分),如图1.1所示。
图1.1 微信Android客户端中的开源软件页面(部分)
◎支付类
对于很多人来说,支付宝(或扫码支付)可谓是日常生活中难以离开的App,这个被称为中国“新四大发明”之一的App,是绝大多数人生活的助手,同样它的客户端(10.2.23版本)也集成了大量的开源项目:打开“我的”→“设置”(右上角的齿轮状按钮)→“关于”→“版权信息”,会看到支付宝Android客户端中的版权信息(部分),如图1.2所示。
图1.2 支付宝Android客户端中的版权信息(部分)
◎视频类
这里以深受广大年轻人喜欢的文化社区和视频平台哔哩哔哩(6.26.2版本)为例,其App也有开源项目集成,可以在“我的”→“设置”→“关于哔哩哔哩”→“开放源代码许可”中看到哔哩哔哩Android客户端中的开源代码(即开放源代码)许可(部分),如图1.3所示。
图1.3 哔哩哔哩Android客户端中的开源代码许可(部分)
移动设备
◎Android操作系统
Android是目前世界上最为流行的智能手机操作系统,或许你听说过非常多的手机制造商的品牌名,如小米、华为、OPPO、三星等,这些手机运行的操作系统均基于Android 操作系统。Android本身是一个开源项目,虽然其大部分是由Google和开放手机联盟所开发的,而且最为重要的是其内核是基于Linux操作系统修改而成的。
其中,Android 开放源代码项目(Android Open Source Project,AOSP)的代码可从https://source.android.google.cn/下载、查看、修改和重新分发,其基于Apache许可协议发布。
◎Apple手机的操作系统
在业界,Apple封闭的一体化形象深入人心,但是即使这样,Apple的操作系统也大量采用开源项目,如FreeBSD、WebKit等。如果你想直观地感受一下,可以拿起自己的Apple手机,在“设置”→“通用”→“法律声明”中能看到非常多的开源组件。图1.4所示是Apple手机操作系统的法律声明页面(部分)。
图1.4 Apple手机操作系统的法律声明页面(部分)
浏览器
除去移动设备之外,访问和浏览互联网的工具——浏览器,恐怕是所有人最常用的工具之一了。微软的Windows操作系统默认自带的IE浏览器,曾经占据了人们桌面很长一段时间,但终究封闭无法匹敌开放,在2018年微软放弃了IE浏览器,转而拥抱了开源的Chromium,并将其作为自己新一代浏览器Microsoft Edge的核心。
而Chromium和Firefox均是开源项目的产品,读者可以自行在产品的“设置”→“关于”页面中找到关于开源许可协议和声明的信息。
桌面操作系统
所谓桌面操作系统,也就是安装在家庭或办公室计算机中的供人使用的最大软件,它也是安装其他应用软件的载体,如媒体播放软件、互联网软件、办公软件等。
据统计,2020年各桌面操作系统的全球市场份额占比如图1.5所示。
图1.5 2020年各桌面操作系统的全球市场份额占比
可以看出,采用闭源的源代码模式的Windows作为全球最为流行的桌面操作系统之一占据着绝对的主流地位。但是,这并不能说明开源没有出现在这个占据绝对垄断地位的系统中。向导在此也不会刻意去为读者呈现占绝对主流的地方,说明这里开源的存在,而是在这种主流系统中寻找开源的应用(即入口处)。
◎在Windows 10上安装开源软件
关于微软钟爱开源的新闻,可以说是非常多了。能够在封闭性系统Windows 10上运行Linux子系统才是和开源的真正融合,也是让普通用户接触开源的最佳方式。读者可以参考https://docs.microsoft.com/en-us/windows/wsl/install-win10的文档,在Windows 10环境下安装得到一个完整的Linux环境,即开源操作系统,如Ubuntu。
想获得更多的开源软件,也可以到Windows应用商店搜索关键字“Open Source”,搜索结果几乎可以涵盖所有种类。
◎macOS
macOS是三足鼎立(需求、开发和测试)的软件开发模式的代表之一:Apple的操作系统,其内核是基于UNIX衍生系列的Darwin,所以我们看到Apple系列的各种设备都是基于这个开源的核心。作为普通用户,我们可以使用如下方式查看macOS的许可协议声明,在macOS的“关于”菜单中:打开“Mac”→“Support”→“重要信息”→“软件许可协议”,然后搜索“Open Source”关键字,会得到图1.6所示的搜索界面(部分),可以看出开源在macOS中占据着多么重要的地位。
图1.6 搜索界面(部分)
其他设备
我们再来看看和我们日常生活密切相关的其他设备:家里上网用的路由器、智能语音助手、电视机/投影仪、汽车、可穿戴设备……在这些设备中统统都可以找到操作系统内核Linux的身影。换句话说,环顾四周,我们生活中接触的事物,很多都是开源项目所驱动的。
下面请允许向导为你虚构一位现代人的日常生活和工作,以此观察其在使用信息产品和服务的时候会使用到的开源软件。
一位当代上班族的日常
想象这么一个场景:你走到了星巴克,掏出HUAWEI Mate30智能手机,打开星巴克App,让店员扫描你的会员码,然后你买了一杯咖啡,并使用支付宝/微信进行了支付,最后找了一个靠窗户的位置坐下来:
● 打开Google日历,看了一下下午和明天的行程;
● 订了第二天一早的机票,计划赶到下一个城市,并预约了当地的出租车;
● 浏览了一下朋友圈,看到有人推荐图书,于是直接从亚马逊Kindle商店下单;
● 叫了滴滴出行,40分钟之后来接你;
● 用在线Microsoft 365查阅并修改了一个编程中的小错误(typo);
● 在GitHub上看了一下最近的项目活跃状态;
● ……
上述每一个行为都使用到了开源软件项目:Android、Linux、FFmpeg、Java、Git……
软件不仅改变了人类的生活,也改变了服务于人类的生产模式。硅谷著名投资人马克·安德森(Marc Andreessen)写过一篇广为传播的文章《为什么软件正在吞噬世界》(Why Software Is Eating the World)。这一现象现在仍然在持续并演化着,人们日常生活和工作使用的App中均采用了大量的开源项目,我们也可以这么说:开源正在驱动软件产业。
开放源代码软件已经融入我们的生活,与我们的世界共存,甚至可以说人类已经严重依赖开放源代码软件。正如《制造开源软件》(Producing Open Source Software)一书的作者卡尔·福格尔(Karl Fogel)所比喻的那样,我们所有人都在呼吸,但是只有少数人会去思考氧气从哪里来。
开源在计算产业中,犹如我们人类需要的氧气——不可或缺!