30岁生日快乐:Linux内核和GPLv2
三十年前,当你在MTV上看到R.E.M.乐队演唱《失去了我的信仰》的画面,决定购买一张专辑时,你需要用家里的电话打给朋友,让他带你去最近的唱片店,并希望那家唱片店里还有足够的库存。而如今,你只需用手机给朋友打视频电话或发短信。这些改变很大程度上是由于1991年发生的两件大事:Linux内核的发布和GNU通用公共许可证(GPLv2)第二版的推出。
真实情况或许比以上描述更复杂一些,但事实上,我们依赖的大量技术都与这两件大事直接相关。接下来,我们不妨来回顾一下这两件大事及其产生的影响。
GPL是什么?
从最根本上讲,GPL(和其他许可证一样)是指你能够使用产品的一个许可证。通常,这个产品是一个软件,如Linux内核,但也可能是其他东西,比如文档。
GPL(以及其他FOSS许可证)的特别之处在于,它通过版权最大程度地向用户授予权利,而不是像一般做法那样,利用版权限制人们使用软件或其他产品。
如果你读过《最终用户许可协议》(EULA),就会知道它通常规定了你不能使用,或者非常有限地使用的情况。例如,它可能规定你不得分发某款软件,或者只能在一台机器上(甚至一种类型的机器上)运行该软件。
而GPL则旨在向产品接受者赋予特定的权利,以保护他们的“四大自由”——这是由GNU创始人Richard Stallman提出的。
GPL的四大自由
自由软件向用户传达了四种“自由”:自由运行、复制、研究/改进和分发产品。
简言之,这意味着如果你获得了由GPL许可的程序,你就可以不受限制地运行该程序。你可以将它复制给朋友,可以修改、改进程序,甚至可以进一步分发这些更改。
如果你获得Fedora Workstation的副本,并且想要使用它?没问题。GPL(以及Fedora副本中包含的其他免费和开源许可证)明确允许你这样做。
能否再拷贝一份给朋友?可以。能不能深入研究一下它的运行原理?这也是被允许的。
能不能修复程序中的错误,并且分享这个修复包?当然可以。然而,有一个小细节需要注意,即分发GPL软件会带来一些额外的责任。
利用GPL保护用户权利
GPL并不是唯一向用户传达这类自由的许可证。它是众多自由和开源(FOSS)许可证之一。需要注意的是,“自由”和“开源”的区别。GPL的有趣之处在于,它有时被称为互惠许可证。
基本上,GPL规定,你在GPL下获得的权利要同样传给你后续分发的人。也就是你不能在修改了GPLv2下的软件(如Linux内核)后为其附上不同的许可证,以限制别人的权利。GPL提供了一种创新的方式,通过版权鼓励使用、研究、修改和分发软件,而不是试图限制这样做——而这一般正是版权的目的。
GPLv2并不是市场上唯一的FOSS许可证。它甚至不是唯一的GPL版本,这一点会另外说明。开放源代码促进会列出了一系列符合开源定义的许可证。
宽松许可证与左权许可证
FOSS许可证通常分为宽松许可证或左权许可证。前面已经写过,左权许可证要求你在根据GPL分发软件时,必须提供你的修改结果或者其他互惠许可证作为回报。因为代码也是根据GPL与你共享的,所以如果你想分发这些代码,就必须分享你对这些代码的修改。
需要注意的是,这一要求在GPL软件分发时就已触发,而不仅仅是在进行修改时。因此,如果你下载了软件,并出于自己使用或学习的目的而进行更改,接下来会有两种情况:如果你并不会将这一版本进一步分发,则你无需发布更改;但如果你选择将这一版本分发给他人,你就需要将你的修改与所有人共享。
另一方面,宽松许可证允许在不分享更改结果的情况下分发软件。例如,MIT许可证甚至允许在专有许可证下进行分发,但它要求包含原始版权声明。
Linux内核是核心
关于许可证的内容都很有趣,但它与Linux内核的成功关系几何?
我们先稍微了解一下内核是什么,以及它不是什么。Linux内核是该操作系统的核心。总体来讲,内核管理硬件、进程、内存、文件等。虽然大多数人对此并不关心,或者并未与之打过交道,但它对整个操作系统至关重要。
Linux发行版中包含了我们前面所说的许多方面,例如GNU项目中提供的GNU实用程序和编译器,它们在一开始就帮助构建了Linux。当然,你还有用来部署完整环境并使计算机可用的应用。包括从Web服务器和数据库到用户桌面等方方面面。
但内核是所有这一切的核心,而且Linux之所以成为有史以来最成功的操作系统,原因在于它的许可证允许复制、改进、分发并要求分享修改结果。(注意:许可证并不要求协作,但Linux的互惠性质非常支持这一点)。
Linux内核的第一个版本是根据一个限制商业活动的定制许可证而发布的,但这种情况并未持续太久。Linus Torvalds在1992年使用GPLv2发布了Linux 0.99。为什么?用Torvalds自己的话说,“我很快发现,最初的版权限制太多,无法在某些方面完全有效地使用......虽然一开始我对GPL感觉不适应,但我也想对Linux所依赖的GCC C编译器表示感谢,因为显而易见,它符合GPL。”
通过消除商业使用限制,Torvalds允许企业改进和分发Linux。允许获取商业盈利意味着分销商可以试图通过封装Linux并将其与书籍、盒装、杂志以及通过其他任何方法一起出售而赚钱。
在这一方面,需要注意的是,20世纪90年代初的软件分发与目前差别很大。在那时,大多数人都是通过软盘(或磁盘)或CD-ROM接收软件。有些人可以通过FTP下载软件,但这对许多用户来说可能难以做到。
初次接触Linux
Richard Jones(现在是红帽研发平台团队的高级首席软件工程师)表示,在通过Slackware Linux发现Linux之前,他一直使用Minix。Jones说,通过网络获取Slackware非常费劲。
“如果......想要获得一个功能完整的发行版,就需要30张3.5英寸(软盘)磁盘。下载并拷贝到软盘上需要一天时间,但那时(1992/1993年),我在一家政府研究机构工作,有权访问这种叫做互联网的新生事物。”
GNU通用公共许可证的作用
GPLv2的互惠性是指发行Linux的厂商不能(合法地)保留他们对内核的修改。这会鼓励(有些人可能会误认为是强迫)在上游分享修改和产品的行为,而不是为特定的发行版提供不同的内核。
大约在Linux首次发布的同一时间,有人正在尝试将另一种*nix移植到x86电脑上,并取名为386BSD。1993年FreeBSD和NetBSD、1995年OpenBSD相继面世。
尽管Linux项目和供应商专注于单个Linux内核,但BSD的开发有多个方向。当然,这是对使Linux取得成功的因素和导致许多基于BSD的操作系统不太成功的因素的极端简化。GPL是Linux成功的一个因素,但并非唯一因素。
例如,Jones指出了Linux和BSD之间在最初就存在一种非常重要的技术差异。“简单地说,Linux有共享库,但BSD没有,而且当你只有一个40MB的硬盘时,每个库只有一个副本真的非常重要。”
免费的类UNIX系统
价格同样也很重要。虽然BSD是免费的,但专有UNIX操作系统显然不是。Jones称,他曾花150美元购买了盒装Minix,并且等待了几周才真正拿到软件。
Stephen Smoogen是Linux的资深用户,也是红帽的员工,他说从首次接触Linux到现在,一直在使用UNIX,但它的价格相当高。“我使用UNIX大约四年了,一台工作站的价格约为16000美元。”
这并不是家庭使用可负担的价格,但Smoogen不想走MS-DOS和Windows的路线。“我曾试过DOS和Windows,但发现(UNIX的)shell脚本、管道和GCC工具功能太强大了,根本不可能再回头去用其他的。”
可喜的是,他不必“回头”,而且运行Linux的硬件足够便宜。“我在i386电脑上运行Linux,大约只需1600美元就可以拥有我在UNIX机器上使用的全部工具和命令。”
“红帽来了”
1991年,第一个Linux内核代码发布,几年后红帽才成立——这要取决于你如何定义“成立”。
Marc Ewing创建了自己的Linux发行版,并于1994年10月发布了著名的万圣节版红帽Linux。同时,Bob Young大约在同一时间通过一家名为ACC Corporation的公司销售Linux和UNIX软件。
1995 年,两人成立了Red Hat Software,Young担任CEO。Red Hat Linux(还不是Red Hat Enterprise Linux)以盒装形式通过线上零售商和实体店销售。用户还可以通过便宜的CD(Linux Mall等零售商以0.99美元加运费出售Linux CD,包括 Red Hat Linux)或仅通过朋友分享的副本而获得Red Hat Linux(和其他发行版)。
如果不能自由复制和分发Linux,这一操作系统就不大可能像这样流行起来。如果没有GPL的互惠性质,内核就不大可能成为众多商业和社区愿意共享的资源。
现在,距离那名大学生在业余时间设计了一个内核,并发布了具有革命性意义的软件许可证已经整整30周年。而许可证和内核可能只是Minix或期待已久的GNU Hurd操作系统内核的脚注。
但他们一起点燃了火种,形成了如今的燎原之势。
从业余爱好到星际探险
Linux内核现在已经无处不在。在使用了安卓系统的手机上,它运行着许多程序,如打电话、发短信、播放音乐、观看视频、玩游戏等。
Linux还被运行在TOP500超级计算机上,并为公有云提供功能支持。Linux可为电影制片厂运行渲染软件,并为孩子们网上学习所用的Chromebook提供支持。Linux还可为业余爱好者的Raspberry Pi单板计算机提供支持,同时为用于流媒体服务的内容交付网络(CDN)以及机顶盒和智能电视等设备提供支持。
Linux甚至已经登上了火星。
作为一款最初由一位大学生作为业余爱好开发的操作系统,这样的发展现状可以说是“还不错”。
我们也不妨再作畅想:未来的30年又将发生怎样的故事?