当有个企业想要你的版权时

开发自由软件的企业会按照 GNU GPL 发布软件,有时也会把某些代码按照其他方式发布。如果他们把同样的代码按照不同的许可证发布给某些付费用户(通常是允许专有软件包含这些代码),那么我们称之为 “销售例外”。如果他们把某些代码版本只按照专有形式发布,那么我们称之为发布该程序的一个纯专有版本。

http://www.gnu.org/philosophy/selling-exceptions.html 解释了为什么销售例外是可以的,尽管是最低限度的可以。反之,发布纯专有版本则完全错误,就像其他专有软件一样。

企业一般对自己开发的代码才会这样做。因为他们对这些代码拥有版权,所以他们可以按任何合法的方式发布这些代码,甚至可以并行使用多种方式。当你要发布这个程序的自由版本的修改版,而该企业想要在其版本里包含你的修改时,会发生什么呢?

由于你获得的程序是 GPL,所以当你发布修改版时你必须使用 GPL。如果原企业获得一份拷贝,那么它也可以按照 GPL 来使用你的修改;但是它不能在其版本中加入你的修改并按照销售例外来销售。它也不能发布包含你的修改代码的纯专有版本。如果你希望如此,那么默认情况就是这样。不过,如果该企业想要销售例外,那么它可能就不会包含你的修改。

然而,让我们假设,你并不反对销售例外,也愿意让该企业在销售例外时包含你的修改。你可以同意此事,但是签字时要看清楚,否则你会追悔莫及。

该企业可能会让你把版权转让或者许可给它,这可以通过签署版权转让合同或贡献者许可证协议达成。这件事本身并不是坏事;例如,许多 GNU 软件开发者把版权转让给 FSF。不过,FSF 从不做销售例外,而且签署的转让合同中包含一个发布承诺:只按照包含源代码的形式发布,只按照允许再发布的形式发布。

而企业提供的合同中可能不包含这样的承诺。反之,它可能会允许企业按照其意愿处理你的代码。如果你签了字,那么企业就可以对你的代码采取各种处理。它可能会继续销售包含你的代码的销售例外。它也可能会发布包含你代码的纯专有版本的修改版或扩展版。它甚至可以 只在 纯专有版本中包含你的代码。这样,你贡献的代码实际上就是对专有软件的捐赠。

这些事情的决定权在你,但这里 FSF 给出一些建议。如果你计划为此项目做主要的贡献,那么请在贡献者协议中坚持要求包含你的贡献的软件发布版按照自由软件许可证让公众可得。这也允许企业进行销售例外,但是禁止其只在专有许可证下使用你的贡献。

如果你的贡献不大,那么较弱的条件也可以接受,该企业可以把你的贡献放在自由软件及非自由软件中。这意味着允许该企业把你贡献的修改仅按照专有许可证发布。发布专有软件不是好事,但是如果你的改动较小,那么改进软件的自由版本比对抗其非自由版本更重要。

你可以通过在合同中坚持相应的条款来控制以上结果。如果你允许带有你代码的销售例外,但是不允许企业发布含有你的贡献的专有版本,那么你可以坚持以下条款:1

FOO 发布的任何带有 Hacker 代码的程序(按照 GNU 通用公共控制版本 3 的定义)应该按照 a) “GNU 通用公共许可证(GPL),版本 2 或以后版本可得”,或者 b) 按照以上 (a) 的许可证可得,但是用 “2” 已有更高版本号的 GPL 版本。如果 FOO 按照这样的方式把程序以源代码形式免费发布给公众,那么它也可以把同样的程序连接非自由软件并将合并后的二进制程序按照自选许可证发布。

或者,如果你反对 你的代码 可能会被仅按照专有许可证发布,那么你可以坚持以下条款:1

FOO 发布的任何带有 Hacker 代码的程序(按照 GNU 通用公共控制版本 3 的定义)应该按照 a) “GNU 通用公共许可证(GPL),版本 2 或以后版本可得”,或者 b) 按照以上 (a) 的许可证可得,但是用 “2” 已有更高版本号的 GPL 版本。如果 FOO 按照这样的方式把程序以源代码形式免费发布给公众,那么它也可以在其他程序中把同样的 Hacker 代码按照自选许可证发布。

如果程序是按照 GNU Affero GPL 发布的,那么请在 “General” 之前添加 “Affero”,就是把 “GPL” 改成 “AGPL”,并把 “2 或者” 改成 “3 或者”,把 “FOO 发布的” 改成 “FOO 发布的,或者 FOO 在用户可访问的其他服务器上部署的” 也可以。

FSF 已经让律师看过这些文字,不过在使用之前,你还是应该再咨询一下律师。

当企业告诉你它会接受哪些条款时,它就是在向你展示它的计划究竟和自由软件的理念差别多大。然后你就可以做出决定来保证你的贡献是给自由软件社区的,而不是给专有软件的。

译注

  1. 以下部分原文是律师审阅过的,翻译仅供参考。