这是我一直反对在自由开源软件中夹带政治立场的原因,只不过 node-ipc 的作者更进一步,将纯粹的意识宣传转变为了物理斗争。
在我之前的一篇文章里:https://dontpanic.blog/notepadpp-rust-tech-and-politics/ 也有提到,有人就离不开政治。甚至自由软件、开源软件本身也是一场政治运动[1],但这并不代表通过自由软件宣传无关的政治立场是合理的。我一般把这种行为叫做夹带私货。而这次 node-ipc 夹带的私货,有点多。
当然,开源界也有分歧、也搞政治:自由软件与开源软件之间存在思想争论[2]。因此我在开放代码时选择什么样的开源协议,其实也是一种政治。但他们只是表现为对当今资本与商业社会的接纳方式不同,与谁当总统、谁来执政没有有半点关系。
自由与开源软件所代表的精神,是人人为我、我为人人的精神,是世界大同、天下一家的精神。从道理上讲,我认为将自由与开源软件与政治立场绑定的做法,违背了自由与开源软件运动的初衷。它通过政治立场隐式地对用户社区做了限制。
那一个自由开源软件是否可以通过使用某种开源协议、或是一些附加条款,显式地撤销某些特定用户的权利呢?作为软件的作者,当然有权利自行选择协议;但需要注意的是,不论是开源软件还是自由软件 ,对协议本身是有要求的。也就是说,不是所有的协议都能叫做“开源协议”,也不是开放了源代码就可以叫开源软件。例如,开源定义[3]的第五条指出,不得歧视任何个人或群体:
5. No Discrimination Against Persons or Groups
The license must not discriminate against any person or group of persons.
再比如,GPLv3[4] 中的第七条明确指出,
……
尽管已存在本协议的其他条款,对你添加到受保护作品的材料,你可以(如果你获得该材料版权持有人的授权)以如下条款补充本协议:
a)表示不提供品质担保或有超出十五、十六条的责任。
b)要求在此材料中或在适当的法律声明中保留特定的合理法律声明或创作印记。
c)禁止误传材料的起源,或要求合理标示修改以别于原版。
d)限制以宣传为目的使用该材料的作者或授权人的名号。
e)降低约束以便赋予在商标法下使用商品名、商品标识及服务标识。
f)要求任何转发该材料(或其修改版)并对接收者提供契约性责任许诺的人,保证这种许诺不会给作者或授权人带来连带责任。
此外的非许可性附加条款都被视作第十条所说的“进一步的限制”。如果你接收到的程序或其部分,声称受本协议约束,却补充了这种进一步的限制条款,你可以去掉它们。……
我不是律师,但“某些群体不得使用”,应当不包含在上面允许的范畴中。也就是说,你可以移除它们。
因此,虽然用户社区是不受这些条款限制的,但是很显然,这种“限制某些群体融入社区”是有违开源软件和自由软件的思想和初衷的。
至于 node-ipc,就让他凉凉吧。暗暗庆幸我用的不是俄罗斯 IP。
参考
- Richard 对自由软件运动的看法 https://lists.gnu.org/archive/html/emacs-devel/2008-03/msg00635.html
- 《为什么开源错失了自由软件的重点》,Richard Stallman https://www.gnu.org/philosophy/open-source-misses-the-point.zh-cn.html
- The Open Source Definition https://opensource.org/osd
- GPL v3 非正式中文翻译 https://jxself.org/translations/gpl-3.zh.shtml