- 嵌入式Linux系统开发:基于Yocto Project
- (美)鲁道夫·J.斯特雷夫
- 1090字
- 2023-07-19 10:53:13
1.4 关于开源许可的几句话
当构建基于或者包含开源软件的系统时,你将不可避免地必须注意开源许可。软件的创始作者当然可以自由选择针对他们的成果所倾向的任何许可,这已经造成了很长并且仍在增长的开源许可列表。没有单一的许可,并且不管你喜欢还是不喜欢,你将不得不处理很多的许可。一些开源项目甚至会使用不止一个软件许可。这样的例子如BusyBox。
即使不是最常见的开源许可,也是最常见的开源许可之一,就是GNU通用公共许可(General Public License,GPL)。GPL现在是第3版了,它被广泛地认为是开源许可之母。虽然一些来源把创立于1990年的BSD许可作为第一个开源许可,但是通用公共许可却早于其一年(由Richard Stallman撰写并于1989年发布)。
一个归因于开源许可的流行的错误认识是,开源软件是免费的。然而,GNU通用公共许可的第2段对这种常见的错误理解做了澄清:“当我们说‘free software’的时候,我们说的是自由(freedom),而不是价格。”职业的工程经理可能会完全同意——虽然你可以免费下载开源软件,但是开发和部署基于它的产品通常要花费巨大的工程成本。从这个意义上来说,开源软件和商业软件产品没有什么区别。
相对于商业或者闭源软件许可,开源许可是宽容的,这意味着它们给予你使用和运行软件的自由、学习和修改它的权力以及分发原始代码和修改版的许可。这种广泛的自由使得人们很容易漫不经心地对待开源许可。一句话:不要这样做。开源许可是具有约束力和强制执行力的,正如任何商业许可一样。
大部分开源许可明确约定你在交付基于开源代码的产品时需要遵守一些主要条件:
❑ 归因(Attribution):作者们必须被归因成作品的创作者。你不能去除源代码的任何作者的任何著作权声明。
❑ 传输(Conveyance):传输通常是指传送源代码的逐字副本、传送源代码的修改版本以及传送非源代码形式(例如二进制文件或者嵌入在产品中的固件)。在后一种情况下,很多开源许可,包括GNU通用公共许可,要求你传送产品对应的源代码或者辅助的文档。
❑ 派生作品(Derivative Works):这个通常指的是包含了先前创造的作品的全部或者主要部分的创作物。对于开源软件来说,这确切地意味着什么仍然不明确,因为目前还没有针对它的合法的测试用例。大部分情况下,这意味着修改源代码或在其上增加内容,但是,对一些许可来说,也包括连接甚至在运行时动态地连接到库。在许可的条款下,派生作品的作者被要求以和原始作品完全相同的许可条款分发作品。这使得许可可以自我延续(self-perpetuating)。
本书不是以提供有关开源许可的合法建议为目的而写成的。然而,我们强烈建议你在实际交付产品前认真对待包含在你产品中的软件包所用到的许可。虽然开源许可的法律领域还相当新,但是越来越多的法律专家正在专攻这个领域。如果心存疑虑,请向专家们寻求专业建议。