开源之迷

978-7-115-57849-5
作者: 适兕
译者:
编辑: 夏琰
分类: IT人文

图书目录:

详情

在本书中,你可以跟随作者在活跃而神秘的开源世界中进行一次奇妙的旅行。本书从生活中的常见软件讲起,介绍了什么是开源、标志性开源项目的标志、开源人的日常活动、组织机构等;紧接着介绍开源世界中包括科学家、程序员、律师、商人、用户等在内的不同角色,以及开源运动如何在这些人的推动下取得胜利;最后探讨了开源的迷人特性,介绍了这件表面上看起来吃力不讨好的事情所取得的成就,并对开源在本土的发展进行了思考。全书包含大量生 动有趣的故事和数据分析,让非技术领域的读者也能用高屋建瓴的视角感受和拥抱开源文化。 本书适合在开源领域工作的技术人员、社区工作者、研究人员等参考,也适合想了解开源的一般大众阅读。

图书摘要

版权信息

书名:开源之迷

ISBN:978-7-115-57849-5

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

著    适 兕

责任编辑 赵祥妮

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

内 容 提 要

在本书中,你可以跟随作者在活跃而神秘的开源世界中进行一次奇妙的旅行。本书从生活中的常见软件讲起,介绍了什么是开源、常见开源项目的标志、开源人的日常活动、组织机构等;紧接着介绍开源世界中包括科学家、程序员、律师、商人、用户等在内的不同角色,以及开源运动如何在这些人的推动下取得胜利;最后探讨了开源的迷人特性,介绍了这件表面上看起来吃力不讨好的事情所取得的成就,并对开源在本土的发展进行了思考。全书包含大量生动有趣的故事和数据分析,让非技术领域的读者也能用高屋建瓴的视角感受和拥抱开源文化。

本书适合在开源领域工作的技术人员、社区工作者、研究人员等参考,也适合想了解开源的一般大众阅读。

总  序

开源之道三部曲

致力于开源相关思想、知识和价值的探究!

—— 开源之道的宣传口号

在虚构的世界中,人类可以天马行空地进行想象,将现实事件进行加工,甚至可以彻底地塑造全新的世界。电影《神奇动物在哪里》展现魔法师和普通人共同生活的场景时所采用的艺术手法,简直令人拍案叫绝。魔法世界就存在于现实世界中,但普通人一般是无法看到的,即使看到了,魔法师也会消除他们的记忆,将不符合现实世界的东西抹去。

如果我们也可以将开源世界进行如此的展现,那将是一番什么光景?读者不妨想象一下,我们以现实中存在的元素重新构建一个全新的世界,这个世界里所有的人都以生产程序代码为自己生活的重心,他们有自己的城市和重镇,也有自己的日常生活,当然也形成了特定的文化,甚至还会友好地和其他世界的人相处,拥有特定的沟通渠道,这里有科学家、商人、搭便车者、律师……

我们是否可以用这样虚构的方式来描写和阐述开源世界呢?

我就这样构思了很久。开源世界就是实实在在的存在,和我们的现实生活水乳交融,虚构反而会大大削弱其优点。但是虚构又有虚构的好处:在科幻类虚构作品中,创作者热衷于将现有社会中的某个要素抽离。我们可以做个大胆的想象:如果没有开源,那么这个世界会是什么样子的?没有Linux,没有Android,没有Firefox……历史确实需要改写了,犹如这个世界没有发明出计算机一样。

非常可惜的是,历史无法假设!现实世界无法离开开源,开源是真实存在的,在真实地发挥着作用,为人类服务。

开源世界就真实存在于我们现实的世界中,甚至某种程度上来说就是我们现实的世界:同样混杂、多样、动态、不断演化。我们必须以非虚构的方法尽可能地将它描述出来,从某个角度切入,然后一点一点地勾勒,尽最大努力去呈现出开源的全貌。

有了如此理性的阶梯,本系列图书,即适兕的“开源之道三部曲”也就有了它终极的目的:认识开源。该系列图书试图从3个层次,循序渐进地诠释以下内容。

开源是什么?开源世界是什么样子的?谁参与其中?他们都干了什么?他们所起到的作用是什么?即所谓“开源之迷”也;

开源是如何形成的?如何参与开源?在开源的世界里我们能做什么来使这个世界更为繁荣而不是遭到破坏?即所谓“开源之道”也;

开源背后的机理是什么?为什么会有开源世界?它如何存在?它将何去何从?即所谓“开源之思”也。

用简易模型来描述的话,上述内容可以概括为:

是什么(What);

怎么做(How);

为什么(Why)。

这个模型表现为图0.1所示的一个由外而内、从现象到本质的同心圆。

图0.1 简易模型

这是一个由表及里的过程,也是作者近20年开源研究经历的写照,开源之道(http://opensourceway.community)从描述开源的故事开始,逐步发展为讲述个人和企业应如何在开源世界中努力并获得认可。它最终将走向对开源本身的解释:这一切为什么会发生?

亲爱的读者,你们准备好了吗?接下来就让我们按照这样一个思路,来一场从现象到本质的开源世界之旅!希望“开源之道三部曲”可以帮助您重塑一个波澜壮阔且别具一格的开源世界,让您领略开源世界的优美风景和多样的文化。

开源之迷

开源是如此的迷人,以至于被现代的信息技术从业人员所拥护,甚至进入了大众的视野。它的迷人之处在哪里?我们不妨在此列举一番:

来自全球的开发者,仅仅通过互联网协作就可以完成操作系统、编译器等复杂而庞大的巨型软件项目;

很多相互竞争的商业公司,竟然在开源项目中进行合作;

在美国,开放源代码属于言论自由范畴,受美国宪法第一修正案保护;

Apache软件基金会20多年了没有一间实体办公室,却创造了价值200多亿美元的项目;

曾经视开源为最大敌人的微软,现在却公开对开源“示爱”;

……

那么开源究竟是什么,能引得无数人的争相拥抱?

一千个读者心中就有一千个哈姆雷特。这里不妨以笔者在2018年由开源社主办的中国开源年会(COSCon'18)上的演讲来为大家呈现出现实中人们对开源的不同看法。当人们在谈论开源时他们认为:

开源是具体的计算机技术细节,包括算法、数据、语法等;开源是具体的开源项目,如Linux、Kubernetes、Hadoop等;开源是软件的开发方式,是软件工程的一种;开源是公共物品,任何人都可以轻易地获得、使用、修改,以及再分发;开源是经济学,是生产力,是可以有经济效益的;开源是乌托邦式的利他主义精神,更多的是讲伦理与道德;开源是与知识产权相关的内容,许可仍然受法律约束;开源是获取机会、搭便车的天然通道;开源是公共服务组织;开源是商业模式;开源是一种社会现象;开源是企业实施生态战略的手段……

可以看出,对于开源,不同的职业背景,不同的目的,不同的视角就会有不同的解读。一位企业法务,看到开源的场景是知识产权、专利、商标归属权;一位计算机技术人员,看到的是这段代码实现了何种功能,实现方法的优劣;一位IT业务架构师,可能想的是如何以最低的预算解决公司现有的问题;一位管理者,可能思考的是如何从开源共同体中学习到方法,以激励自己的员工;一位经济学家,想到的是全景式的经济模式如何在不封闭的情况下获得利益;一位市场营销人员,看到的是如此大规模的流量。

而这些也恰好构成了开源最有魅力的地方。于是,将这些有魅力的地方呈现给每一个人,就有了非凡的意义。希望本书能带给你不同的视角和体验!当然,无论如何笔者在写作时是带着自己的成见的,本书中的错误和纰漏之处,还望读者不吝指正。

本书没有采用常见的从开源的历史角度编写是基于一个简单的原则:只尝试带领读者认识当下的开源。笔者以为,如果仅仅从开源项目或历史发展角度来写,会漏掉很多重要的内容。尤其是基于时间轴来写的设想,会让读者产生一种开源是自然生长的误区,这不仅对于理解事物没有丝毫的帮助,而且会给年轻人带来很深的误解。所以,本书试图将时间暂时抛开,或者是将时间的追溯留给读者独自探索。本书不以某个独立的线索去阐述,而是综合所有线索进行横向、纵向、斜切面的编织,希望能够将开源的立体世界鲜活而生动地呈现给读者您。

本书将采用一种由向导带领读者游览开源世界的方式来介绍开源的迷人之处,而这也会是“开源之道三部曲”的整体创作方式。这种方式能够很好地体现开源文化中重要的导师制,笔者也希望这种方式能够达到由浅入深讲解开源的目的,尤其是照顾到从未接触过开源的读者。

提问:“你怎样吃掉一头大象?”

回答当然是:“一次吃一口。”

视频导向图书使用指南

视频导向图书是一种创新的内容分发形式,它以我们熟悉的图书为载体,但图书只是一个起点。通过视频导向图书,读者可以很容易地使用手边的智能设备,从图书出发,和图书背后的创作者建立联系,获取视频、直播甚至线下活动等内容,提升获取信息的效率和体验。

在视频导向图书上找到入口

所有视频导向图书上都有两种形式的入口。

1.二维码

关注微信公众号“内容市场”,扫描书上的二维码,进入微信小程序即可观看讲解视频。也可以使用卷积传媒研发的App——“内容市场”,扫描二维码并观看讲解视频。

2.增强现实触发图

我们还提供了一种更炫的入口:把一张图直接变成一段视频并播放!方法是使用“内容市场”扫描触发图,它在本书中如图0.2所示。您可以通过智能手机上的App Store或通过各大安卓应用市场等渠道搜索、下载和安装“内容市场”App。

图0.2 触发图

您可以单击“内容市场”底部的扫描按钮来扫描触发图进行增强现实识别,首次识别可能需要等待数秒,但马上您就可以获得相当惊喜的就地播放体验了,而且还可以看到运动跟踪的效果。当然,您不需要一直手持设备并对准触发图,而是可以随时单击“全屏播放”按钮,视频就会切换到全屏模式,并一直播放下去。

免费享用增值内容的权益

“内容市场”为读者提供的内容分为两个部分,一是与图书配套的、在图书上提供入口的增值内容,二是由图书的作者再度创作的、不在图书上提供入口的订阅内容。

本书的所有读者都可以免费享用所有的增值内容,如果您看了视频感觉有所收获,也可以将它们分享给您的亲朋好友。

订阅内容中也有很多免费的,但有些内容可能需要另外付费购买,这完全取决于您的需求和意愿。

联系客服

如果读者朋友们在使用软件或任何内容时遇到了技术故障或任何困难,请扫描图0.3所示的二维码联系客服工作人员。

图0.3 客服联系方式

卷积传媒

前言 巧遇开源布道师

在复杂的现代世界,人们对于事物因果关系的解释,决定了其是否能够理性地面对这个世界。开源的解释也同样面临着这个问题。这是一个诞生不久的名词,对于它的完整诠释目前还远远不够,尤其是在不同的文化背景之下,更是衍生出无数的细枝末节。

所幸的就是当读者您读到这里,应该有一种被击中的感觉,会想:每天那么多人念叨的开源,究竟该如何解读?没错,您手上的这本书就可以帮助到您。

这本书的作者是一名开源布道师,也就是那个叫作“向导”的家伙。此人的背景在本书的前勒口中已经进行了介绍,就不赘述了。不过这里还是需要向大家简单地诠释一下作者为了完成这本书所走过的知识之路,去往开源世界的准备和旅行指南,本书的读者对象,以及如何在开启开源世界之旅之后能够和向导取得进一步沟通。

开源所涉及的知识分类

对知识的分类,绝对是一个壮举,但是为什么这么区分,那就要看我们人类自身的需求了。比如高考填报志愿时,那种对于知识分门别类的专业划分,真是让人头疼无比的问题!其实,开源也面临同样的问题。

计算机科学与技术:毫无疑问,开源诞生于计算机这个产业,和程序、互联网、万维网(Web)等有着密切的关系。也就是说,作为成功的软件生产力之一,与计算机相关的学科技术是开源的根本。读者会看到,这些技术细节贯穿我们的全书。

管理科学与工程:众所周知,开源从不是一个人的事,也不是一个人完成的,而是由无数个工程师协作的超级大工程。比如Kernel、Kubernetes等大型项目,动辄几千人进行协作,如此巨大的工程,超越了传统工程学的范畴,也是软件自发展以来强大的挑战。

社会科学:这样巨大的工程,其组织不是由金钱来驱动的,而是需要来自全球各地不同文化背景的人的协作。那么这样庞大的工程该如何组织?需要基于什么样的意识形态?还是纯粹的自由至上?

互联网及网络技术:开源最大的魅力在于有关它的一切都在互联网上进行:在开源世界中有邮件列表、网站、即时聊天、版本控制系统、漏洞(bug)跟踪系统等等,围绕这些网络空间而形成的职业共同体,就某个技术难题而进行协作。那么这个网络是如何形成的?形成之后的力量迸发又是如何体现的?

我们不得不在这个自己尚未理解的空间进行更多的探索。

商业和经济:开源的产出是有着巨大价值的,那么这些产出如何商品化?开源怎么保持竞争力?又如何可持续发展?在不完全是货币的激励的情况下,这就涉及捐赠、商业化、获得赞助等的支持。开源的可持续发展,一直是开源自出现以来,最为让人困惑不已的问题。

为此,我们不妨将目光从开源本身移至其他领域,那些公共产品、私人艺术等是如何成功地得到可持续发展的方法和路径的?

法学:没有法律,就不会存在开源,这是一个基本的认知,也就是说开源并不意味着创作者得不到保护。创作者如何利用法律来保护自己的作品和成果?面对强大的竞争对手的时候,创作者如何坚持下去?在新型的信息空间里,法律又该适应什么?

这些都是开源所涉及的需要辨别的内容。

心理学:说一千道一万,开源要落实到具体之处,每一行代码、每一句文档、每一次宣讲、每一次编译、每一次沟通……都是具体的个体思考、讲话、撰写、行动的结果,这就必然涉及人本身:包括人的心理、动机、认知。

要知道,开源离开了人本身,终将一无所成。可见,最后我们仍然要去理解人本身。

文化与社会:开放与透明并不是人类社会天性的选择,而是在经历了几千年的变化,在不断地累积和总结教训的情况下的选择,涉及贸易的扩张、资本的角逐、商业的崛起、相关技术(财务、管理等)的应用等,这才呈现出我们现在所身处的世界。开源是这些文化和制度下的产物,是人本身的选择,我们无法离开文化、地域、社会等人类学因素来谈开源,这是一条开源的必经之路。

旅行前的准备

正如在前文中介绍的一样,尽管本书是非虚构类作品,但是需要一个虚构的向导来带领读者参观开源世界。主要的缘由是开源世界不是我们现实的地球上存在的某个物理空间,它的内部穿插了网络空间、地理空间、文化空间、人的心理空间等,是一个全新的空间组合。作为新手,稍不注意,你就可能会被带上完全不同的旅程。所以,作为本系列图书的创作者,笔者斗胆做一个陪伴读者左右的向导,为读者介绍这个“奇幻”世界的种种情况。

为了尽量不打扰读者阅读本书,向导通常不会说什么话、做什么指示,除非前方出现“危险”。一般来说,他仅仅就是一个带路人。

首先,在正式开启旅程之前,我们需要准备一些装备:

一张神秘的空间地图(由向导提供);

一台可接入互联网(稳定的环境)的计算机;

想要了解开源的好奇之心(这是个可选项,向导担心读者如果没有一点好奇心,在读到稍微啰唆或理解困难之处,放弃的概率会大很多)。

图0.4所示是一张开源世界的地图,它可以简单地被描绘成一张线性图,犹如常见的游戏关卡。

图0.4 开源世界的地图

旅行指南

第一章 开源世界的入口:如何通过软件认识开源?

我们如何识别开源软件?开源世界的入口在哪里?本章将通过当下现实世界人们日常的所见所用,指明开源软件的表象。同时也会采用动态的、活动的方式,简单地体验一下,寻找开源的入口。

第二章 何谓源代码?它是如何工作的?

本章中我们将进行一次非凡的开源技术之旅,你将了解到什么是源代码、代码是怎么变成软件的。

第三章 开源世界的标志

人类习惯为看不见、摸不着的事物设计一些虚构的形象。那么开源世界里有哪些形象或者是吉祥物呢?本章你将看到开源世界的各类抽象标志以及人们与这些标志的故事。

第四章 开源:在所有人看得见的地方工作

数字化时代的来临告诉我们,编码这项工作其实是人类在塑造一个虚拟的空间、一个全新的数字世界。这个数字世界不再受到物理世界的约束和规制,拥有全新的范式。那么打造这个世界所使用的原材料——代码、协作过程(软件工程)等都需要是也应该是公开的。很明显,开源就是符合这个历史需求的,这是人类发展进程中必然出现的现象。就让我们来了解一下这个过程吧。

第五章 开源世界的日常

本章将会为读者全景式呈现开源世界人们的工作方式。例如这些人的日常是什么样子的?他们每天在干什么?他们是如何沟通又是如何协作的?他们是如何与外界联系的?基于互联网的媒体是如何形成话题的?他们的教育和代际知识更替是如何进行的?

第六章 开源世界的城市与乡镇

开源世界里主要的“建造物”都有哪些?我们去哪里能找到它们?它们有没有办事处?开源世界形成了什么样的组织?本章描述的正是开源世界中相关从业人员的聚集地:代码托管平台、基金会、商业公司等,它们对应于现实世界的城市与乡镇。

第七章 开源世界的人物

从事开源工作的都是哪些人?开源世界的人如何?这里有没有名人堂?这里的普通人是什么样的?开源之所以有今天的成就,就是因为有你我这样的普通人在为之努力。作为本书的核心章节,本章将为读者呈现开源世界的人们,并尝试以不同的角色分类来进行叙述。

第八章 开源的胜利

我们经常听到人们说开源取得了胜利,那么除了到处运行的开源项目之外,我们还有什么胜利的成果?本章将带你去开源世界的“博物馆”浏览一番,了解开源的历史,那些战争和反抗,以及人们取得的值得记录的成就。

第九章 开源之迷:让人欲罢不能的优势

新技术先是进行精神的建构,之后才进行物质的建构。想要拥抱开源这样先进的生产方式,需要我们从对自我的认知和文化做起。本章将尽力展现开源世界的文化——所有人遵守的价值观,这也是开源的核心魅力所在。

第十章 开源的成就:经济价值和社会意义

所谓成就,如果不能改善人类本身的状况,那么我们就需要重新评估它了。本章试图从经济价值和社会意义角度对开源的成就进行客观的阐述。

第十一章 开源的不完美之处:让人望而却步的开源特性

开源并不是人们唯一的选择。从某些方面来看,开源有时候的表现并不完全令人满意。“知己知彼,百战不殆”,本章会介绍开源的那些不完美之处——开源的弱势,以及那些经常被其他模式诟病的地方。

第十二章 开源:数字化世界的基石

世界从未停止前进的步伐。开源作为全人类共享的财富,是否可以成为数字化世界的基石?本章试图寻找现代数字化建设中,开源能够发挥力量之处。

第十三章 中国同步世界:开源为中国提供的机会

中国正逐渐成为开源这股历史的潮流中不可缺少的力量。本章会讨论中国本土的开发者和工程师在整个开源的历史上所扮演的角色、取得的成绩,以及未来的参与之道。

本书面向的读者群体

本书适合任何对开源感兴趣的人士。按照了解开源的程度,读者群体可以区分为两种类型:了解开源的与不了解开源的。

如果您自认为自己是一名已经对开源有所了解的朋友,那么可以跳过前两章,直接从第三章开始阅读;

反之,则尽量跟随笔者的思路进行探究。

后者可能是年轻人,从来没有听说过和了解过这个充满魅力的世界,本书将会为您呈现一个波澜壮阔的新世界。

向导的位置和联系方式

Red Hat前任CEO吉姆·怀特赫斯特(Jim Whitehurst)在撰写完对Red Hat这家公司的理解和诠释——《开放式组织》一书之后,非常感慨地说道:“写完一本书,并不意味着终结,而是一个项目的开始。”

笔者也希望“开源之道三部曲”系列是一个工程,一套会一直进化的图书。所以笔者在此留下联系方式,诚挚欢迎读者前来一起探讨。期待您的参与!

GitHub:您可以在GitHub找到这位布道者,他的工作内容您也会一目了然:@lijiangsheng1。

Twitter:请跟随@lijiangsheng1。

Slack:您可以访问https://ocselected.slack.com,加入频道#open-source-trilogy。

电子邮件:请将问题(记得在标题中添加“开源之迷”字样)发送至lijiangsheng1@gmail.com,笔者会尽最大努力给您满意的回复。

第一章 开源世界的入口:如何通过软件认识开源?

爱丽丝的好奇心被点燃了,她跟在兔子后面跑过草地,而且运气不错,刚好来得及看见兔子跳进树篱底下一个巨大的兔子洞。

爱丽丝立刻也跟着跳了进去,完全没考虑待会儿要怎么出来。

兔子洞像条隧道般直直前行了一段距离之后,突然间急转直下。爱丽丝根本来不及刹住脚步,就整个人掉进了一口很深的井里面。

——刘易斯·卡罗尔 (Lewis Carroll),《爱丽丝漫游奇境》

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)所比喻的那样,我们所有人都在呼吸,但是只有少数人会去思考氧气从哪里来。

开源在计算产业中,犹如我们人类需要的氧气——不可或缺!

02 人为规定的软件属性:关于许可协议的常识

软件的固有特性

看到这里,你是否感到有点惊讶,或者是有点无聊?明明是和我讲开源世界的入口,怎么需要涉及一大堆软件的法律许可声明?请君莫急,正如我们所介绍的,普通人看到的是软件的实际作用,即结果。对于代码来说,它可以人为地被掩藏或者保持开放。但是代码变成软件之后,任何人都无法分辨出代码是否是向世人开放的、可见的。也就是说,软件的具体运行和代码是分离的、割裂的。二者之间可以一一对应,但是这需要提供方非常诚实地提供。

软件使用的法律条款:作为商品合法地存在

软件想要融入人类社会,想要符合人类社会既有的规则,想要在市场上流通,既需要法律的保护,也需要法律的许可。当然,它的价格也要符合市场的规律,不可以漫天要价。

幸亏这个世界不是只有开发者,还有律师。犹如加工食品的外包装上写着的食物成分和添加剂一样,用户在使用软件时,尤其是在安装软件时,会看到一个许可声明。也就是说,如果此软件是开放源代码的,遵循哪款开源许可协议会做出声明,也就是读者您在上一节看到的内容。换句话说,作为软件的用户,在没有进一步掌握技能时,其分辨软件是否为开放源代码的方式就是阅读其许可声明。

开源软件的许可声明

现在请读者打开本书的扉页,您会看到类似图1.7所示的图书版权页。

图1.7 图书版权页

也就是说,作为读者,您之所以能够阅读本书,是您和出版机构达成了某种协商,您可能是花费了一定的金钱购买了本书,然后获得了阅读本书的许可,但是出版社禁止您复制本书并继续分发。

同理,软件也有许可声明,专有软件有,开放源代码软件也有。

注意

用户在安装一款软件时[无论是通过系统的软件市场(例如Apple App Store、Google Play)还是自己手动安装],要了解一下该软件的授权信息。尽管有时候这会花点时间,但是对维护自己的权益来说绝对是百利而无一害。

开源许可协议:令人眼花缭乱的声明

软件的作者,即撰写源代码的专业开发者,和作家、音乐家或者相应的公司一样,有权决定自己的作品以何种方式让人们使用,开源软件的作者同样拥有这样的权利。但是计算机代码和具有法律效力的文件说明还是有一些差异的,大多数开发者对于撰写法律条款是无能为力的,需要律师的帮忙,这样就可以制定出专业的许可协议。即使这样,也不能剥夺开发者声明自己所写的软件的权利,所以我们会看到各式各样的开源许可协议。主流的开源许可协议大体上有以下几种:

GPL;

BSD;

MIT;

MPL;

Apache v2.0;

LGPL。

更多关于开源许可协议的内容,请查阅开放源代码促进会(Open Source Initiative,OSI)认证的协议。

开源许可协议的主要内容是阐述该软件项目的复制、修改、再分发等权益,也对诸如商标、专利、著作权等内容进行进一步的描述。二进制的开源软件,在安装的时候会向用户提示使用的许可,但不会像大部分商业软件、专有软件一样让用户选择是否接受许可。为了郑重提示开发者,绝大多数项目也会将许可声明放在每一个源代码的开头,以注释的形式给出,如以下Kubernetes(简称K8S)项目的源代码许可声明:

# Copyright 2014 The Kubernetes Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

开源是建立在人类的知识产权之上的,这一点和人类的所有知识一样。我们可以毫不夸张地说,没有知识产权,开源是无法存在的。只有建立在法律的许可之下,开源才能有其独特的概念和定义。

开放源代码软件的定义

不是所有的软件都提供源代码,这是我们现在所处世界的一个现状。尽管开放源代码无处不在,但运行在计算机中的软件只能采用二进制,所以提供源代码逐渐成了一个附加动作。恰恰是因为这样,向导只能“授之以渔”,因为我不可能做一个完整的列表出来供读者直接使用。聪明的读者,如果您已经掌握了上述方法,那么只需再学习一个定义,就可以自行识别软件是否为开放源代码软件。这样的话,在未来独自闯荡令人眼花缭乱的江湖时,就会毫无压力。

导游在这里再次特别提醒读者,软件生来开源,但是出于某些原因,人们将软件的源代码封闭起来,并进行了法律上的定义,而对于开放源代码,人们也不得不出于为世人所识别的目的,使用文本的方式对其进行了定义。我们这里摘录了OSI对开源软件的十大特征的描述:

(1)可自由地再发布;

(2)源代码公开;

(3)允许派生作品;

(4)作者源代码的完整性;

(5)不能歧视任何个人和团体;

(6)不能歧视任何领域;

(7)许可协议的发布;

(8)许可协议不能针对某个产品;

(9)许可协议不能约束其他软件;

(10)许可协议必须独立于技术。

通过开源软件的十大特征,我们可以清楚地看到OSI所坚持的原则:

坚持开放,鼓励最大化地参与和协作;

尊重作者权利,同时保证程序的完整性;

尊重独立和中立,避免任何可能影响这种独立和中立性的事物。

请将上述10条特征牢记在心,它们是贯穿本次发现开源之旅的核心要素。每当一款软件诞生时,你就可以使用这10条特征来进行比对。

相关图书

ChatGPT与AIGC生产力工具实践 智慧共生
ChatGPT与AIGC生产力工具实践 智慧共生
专利写作:从创意到变现
专利写作:从创意到变现
产品经理方法论——构建完整的产品知识体系(第2版)
产品经理方法论——构建完整的产品知识体系(第2版)
程序员的README
程序员的README
架构思维:从程序员到CTO
架构思维:从程序员到CTO
开发者关系实践指南
开发者关系实践指南

相关文章

相关课程