购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 自由软件江湖里的“码头”和规矩

1.1.1 自由软件世界的“擎天大柱”Linux

Linux这个名字来源于它的最初作者Linus Torvalds的名字Linus,Linux最后一个字母x来源于UNIX,Linux是Linus和UNIX的一个合成词。

Linus Torvalds在1991年就读于赫尔辛基大学期间发布了第一个版本的Linux。如今Linux已经成为众多领域的支柱软件,人们已经越来越离不开它。在Linux操作系统的支撑下,技术的变革速度超出了人们的想象,与Linux操作系统有关联的应用程序的增长速度也以指数规模增长。因此越来越多的开发者不断地加入开源社区和学习Linux开发的潮流当中。

大约在1970年,Dennis Ritchie和Ken Thompson在贝尔实验室发明了UNIX操作系统。如今的Windows、Linux、macOS,以及Android和iOS等主流操作系统,也深受UNIX的影响,或直接继承或克隆了UNIX。Linux是UNIX操作系统的一个克隆版本,所以Linux是一个类UNIX(UNIX-like)的操作系统,即Linux几乎完全复制了UNIX操作系统的思想和做法,但是所有的源代码都是重新编写的。

1.1.2 江湖的由来——自由软件运动

为什么需要重新克隆一个类UNIX的操作系统Linux呢?因为UNIX涉及商业版权纠纷,这限制了它的发展,而Linux从一开始就是开源且免费的,使用的是GPLv2的许可证。

自由软件运动的带头人Richard M. Stallman和他创始的自由软件基金会对UNIX的商业版权深恶痛绝,以至于自由软件基金会资助的GNU操作系统的名字GNU就是“GNU’s Not UNIX!”的缩写,有趣的是这还是一个递归缩写。

GNU操作系统创建于1984年,比Linux还要早7年,它有自己的内核,称为Hurd,但是并不像Linux内核那么流行。目前使用的大多数Linux发行版主要是基于Linux内核+GNU的基础库及应用软件打造的,严格来说Linux仅仅指Linux内核;而Linux系统中内核之外的基础库及应用软件大多数是自由软件基金会支持的项目。

在自由软件的世界里,如果说老大是Richard M. Stallman,老二就是Linus Torvalds了。

世界充满了斗争,尤其是老大和老二的斗争更是激烈。自由软件世界里的老大和老二也有争执,集中体现在对软件许可证GPLv3的不同意见上。

1.1.3 江湖的规矩——开源软件许可证

开源软件许可证有很多,比如Linux内核采用的GPLv2许可证、Android采用的Apache 2.0许可证等,它们之间的区别如图1-1所示。

图1-1 开源许可证的区别

常见的许可证有LGPL许可证、Mazilla许可证、GPLv2许可证、GPLv3许可证、BSD许可证、MIT许可证、Apache 2.0许可证和木兰宽松许可证第2版(MulanPSL-2.0)。

修改后是否可以闭源?如果可以闭源,说明这个许可证对于商业使用比较友好,比如Android App使用了Android的框架和API,但是由于Android采用的是Apache 2.0许可证,所以如果你开发一个Android App是可以闭源作为商业秘密的。

修改后是否采用相同的许可证?如果回答“是”,则必须采用相同的许可证,意味着基于GPL许可证的源代码新增的源代码也必须使用GPL许可证来发布,这有点像病毒感染,只要接触了GPL的代码,所有代码必须遵守GPL许可证进行开源,显然GPL许可证对商业不友好。但是从另一个角度来看,只要自由软件遵守GPL许可证,每个人就都有自由获取、修改、使用和发布它的权力。

商业软件的编写是带有营利性质的,但还是存在一些理想主义者。

很多开源软件是自由软件和商业软件的折中,借助商业世界里的资源来推动软件源代码的共享,其中以Apache 2.0许可证和木兰宽松许可证第2版(MulanPSL-2.0)最具代表性,它们都包含从GPLv3开始引入的专利许可,尤其值得一提的是,MulanPSL-2.0是以中文为主的中英双语许可证。这类商业友好的开源软件取得了巨大成功。Linus Torvalds及Linux基金会拒绝将Linux内核源代码的许可证升级到GPLv3,大概就因为持有这种商业友好的折中观点。

1.1.4 江湖的危局——GPLv2和GPLv3

GPLv2许可证只能解决版权问题,不能解决专利问题。即对于软件源代码来讲,它只包含版权,这是Linux克隆UNIX而不侵权的原因。

源代码背后的技术方法可能被申请了发明专利,而发明专利保护的是技术方法本身,不管具体用什么样的代码实现。这就会给自由软件带来拥有版权而专利侵权的问题。微软就曾借助这一点宣称要起诉Linux系统的用户侵犯了Windows的专利,造成自由软件世界的重大危机。怎么应对这一重大危机呢?Richard M.Stallman通过升级GPLv2到GPLv3成功化解了它。

GPLv3解决专利问题的重要思路是沉淀在互联网上的绝大多数知识产权属于自由软件,如果持有隐性专利的组织或个人要状告自由软件使用者专利侵权,那么后者也有可能反告前者在互联网上对自由软件的侵权,从而达到权利公平、法律平衡的制约效果。

尽管GPLv3成功化解了自由软件世界的危局,但并没有得到广泛的采纳,因为GPLv3不如GPLv2商业友好,杜绝了商业上使用的法律空间。而Linus Torvalds认为商业版权并不坏,还会有助于改进软件的安全性。

这里举个例子,Android是基于Linux内核开发的手机操作系统,Linux内核使用的是GPLv2许可证,且Linus Torvalds在Linux内核源代码的版权文件中特别说明,版权不包含通过正常系统调用来使用Linux内核服务的用户程序。

The Linux Kernel is provided under:
 
    SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
 
Being under the terms of the GNU General Public License version 2 only,
according with:
 
    LICENSES/preferred/GPL-2.0
 
With an explicit syscall exception, as stated at:
 
    LICENSES/exceptions/Linux-syscall-note

Android框架却是使用Apache 2.0许可证发布的,因为在Linux内核和Android框架之间做了隔离,并没有使用GNU的自由软件,比如glibc等,使得GNU/Linux自由软件并不能感染上层代码,如果Linux内核升级到GPLv3,GPLv3不允许修改许可证,那么这种隔离措施将是无效的。

简要总结一下,LGPL允许以动态链接的方式使用而不感染代码,GPLv2可以通过进程间通信的方式使用而不感染代码,GPLv3在法律上杜绝了商业软件合法调用自由软件代码的模糊空间。

需要特别说明的是,这部分涉及法律文本的理解,其中的很多问题连知识产权律师和法官都无法清晰界定,作为法律的外行,我提供的只是个人的理解,仅供参考,如有理解有误的地方欢迎批评指正。 7TDmjJXUrENQ0zX8fvhSTYIfcuQqcnzKkyLsgTOJp3Lry/CPrH9TTpjV3dXy4dLN

点击中间区域
呼出菜单
上一章
目录
下一章
×