软件许可协议 代码是受版权保护的:你拥有你写出来的代码。当然,像print('Hello World!'); 这样简单的代码,完全可以独立的重写,不用知道原始的作者是谁,任何人都可以拥有他自己写的那一行的版权(尽管这可能毫无价值)。但是稍微多写几行,代码就变得有价值起来,以一种许可协议来发布就很重要了。 其他有关知识产权的法律——比如说专利——也可以用来保护软件。在美国,软件是可以申请专利的(在美国对此有激烈的争论)。在其他的国家,比如英国和新西兰,软件不可以申请专利。专利和版权的获取是不同的:版权(copyright)是一种权利(right),而专利则必须被授予(granted)。 软件许可协议对程序代码生效。如果你在使用开源软件中的代码或者第三方库,你必须遵循相关的协议。 开发协议通常包含了以下几点:
软件许可协议可以分成“宽容的”(permissive)和“copyleft”两种,其中后者不允许在发布衍生作品时修改或去除许可协议。 下面是一些常见的软件许可协议的简要介绍。 MIT 许可协议 MIT许可协议或许是最开放的许可协议。它明确地给出了许可:没有限制,可以自由地使用、复制、修改、合并版本、修改许可协议、出售软件。唯一的条件是所有版权信息都必须保留(版权信息声明原作者不对软件做担保和负责)。以MIT协议发布的所有作品可以用于任何目的,包含商业和专有软件(即:你可以把MIT协议的开源软件合法地转为闭源软件)。 BSD 许可协议 BSD许可协议和MIT协议比较类似。 MIT 最初于 1994 年发布,包含了四条声明。其中最后一条称为“广告条款”,规定所有衍生作品的宣传材料必须提及作品的来源。这一条后来在新 BSD 条款(称为”New BSD” 或“Modified BSD”)中被移除。 新 BSD 条款包含三条声明,其中有一条规定原作者的姓名不能被用在衍生作品的宣传当中,除非已征得原作者许可。这条规定消除了人们对于使用人名或者组织名称的权利的疑问。这条规定的合理性是有争议的,因为版权和注册商标法是相互独立的事情。即使 MIT 协议并没有说明这一点,我们也不应该假设那些在衍生作品中署上原作者姓名的人是在利用原作者的名气做宣传。 此外,还有一种两条声明的“FreeBSD”协议,或称“简化的 BSD”。它不包含上述广告条款或者禁止宣传条款,而是保留了另一则条款,声明衍生作品受到的评价与作品原作者不相关。这一条可以看作是反对使用原作者姓名做宣传的声明。 MIT 和 BSD 许可协议都给我们完整的复制、分发、修改作品的权利,只要最初的许可证和版权声明有所保留即可。衍生作品可以采取其他授权协议,也就是说,你可以把一个以 MIT 或者 BSD 许可协议发布的开源软件衍生为其他许可协议下的开源软件,也可以把它衍生为一个闭源软件。 Apache 许可协议 从BSD的身上我们看到,表述一个许可协议是一件多么困难的事情。这里面有许多含糊之处以及与法律的联系,要完全说清楚是几乎不可能的。许多更加自由的许可协议努力把意图表述得更加清晰。 Apache License 是一份自由软件许可协议,它不要求衍生作品采用相同许可协议。也就是说,此协议下的代码可以用于开源和专有软件(这一点和 MIT及BSD协议相同)。 它规定,以 Apache
协议授权的作品,所有的原始版权信息和商标声明都必须保留。如果在再分发的时候对作品有所修改,必须附上修改声明,并且每次修改之后都必须保留之前每次的修改声明。这些声明都放在一份纯文本文件、源代码或者是帮助文档中。 Apache 协议第二版是 GPL 兼容的,也就是说一个作品可以同时以 Apache 协议(第二版)和 GPL (第三版)授权。 GPL (GNU General Public License) GPL 的第一版由 Richard Stallman 于1989年完成,而现在的最新版是于 2007 年完成的第三版,即GPLv3。GPL 的建立原则是:我们应该自由地使用、修改、分享软件源代码,并且分享对它做出的修改。不管软件以何种方式发布,它总是自由的。这个概念被称之为“copyleft”。 不同于 MIT、BSD和Apache许可协议,以 GPL 授权的作品的衍生版同样必须以 GPL 授权。GPL 授权的代码是可以销售的,但是不允许衍生为闭源软件(如果开源软件的库文件以 LGPL 发布,那么闭源软件可以链接到这个库)。如果你修改一个 GPL 授权的开源软件并且发布了它,那么你也必须开放源代码。一个作品,只要是以 GPL 发布出来,就会永远保持 GPL 授权,不会再受其他任何版权协议的限制。 GPL的第三个版本特地声明:GPL 下的代码虽然可以被用来实现数字版权管理 (DRM),但这不可以被看作有效的保护,数字版权法无权追究那些破坏 DRM 者的责任. |