再看开源协议——由贸易战想到的

renyuneyun 2019年05月23日(周四) 1 mins

开源协议的选择其实是一个老生常谈的话题,其主要集中在GPL、LGPL、Apache 2、BSD和MIT协议上。虽然有时候也可能会加上MPL或者WTFPL,但丝毫不影响讨论的主旨:商业。

在网上随便一搜「开源协议对比」之类的文句,返回的结果一般都是在讨论「哪个协议对商业更友好」之类的东西;结果基本都是或明或暗地在说:「避免GPL」,「选择MIT、BSD、Apache」。

这一结论在其所限定的框架内的确没错,但处处透着不对劲。而我实在是太过习惯于发现不对劲后尝试思考(虽然并不总是有结论)。于是,对这里的不对劲,稍微思考便发现——和许多其他透着不对劲的话题一样——它的问题出在前提上:开源的目的就是为了商业使用?

毕竟这是个资本主义的时代,商业主导了我们的生活,同时也规约人们的思维模式。商人们不断宣传「成功人士」以及金钱的神话,将创新和商业进行绑定,从而导致人们不自觉地认为商业就是对的,「允许商业使用」是必须的前提。 在上世纪末与本世纪初的时代,这一切都还可以被经济增长所掩盖。但到了这两年,到了川建国同志撕下美国一直以来的面具和面子,进行保守主义转向,并且对个别国家(比如中国)进行经济「制裁」以至于科技封锁(即贸易战)开始,这一切也都再也无法掩盖了。

在此条件下,此前(现在也是)基本无人在意的「(不)可剥夺性」便成了一个问题。

如果由于自己所用的开源库授权被撤销了,导致自己的整个产品无法运行,这问题绝非小事。对于商业公司可能还好,毕竟他们本来也不对开源感兴趣,开源对他们来说只是免费的午餐(所以他们才会为MIT等协议摇旗呐喊),没了就没了;但对于个人开发者或小社区来说,这点有可能是致命的,毕竟这些团体的产品很大程度上得益于开源软件(并且这些人也更有意愿回报开源社区)。谁也说不好川普会不会脑子一抽要求美国所有软件产品(含源代码)不能给中国用(啥?你跟我说他就不担心后果?川普哪次做事的时候像是考虑过后果的样子?),以及该策略会不会在未来被他人再次捡起。

逻辑上,该方式可以通过撤销使用授权来完成:由于开源许可证/协议本身是著作权声明(对开源许可证来说最重要的部分是使用授权),而著作权人有权撤销该授权,所以这就是潜在的问题。 为了避免该「漏洞」被以此种方式利用,我们便需要有意识地查看许可证中是否有「不可撤销」的说法,而其合理的表述可以是「无论任何条件下(在满足协议本身其他要求的基础上)该授权都不可撤销」。(另一个比较次要的,则是是否明言「全球的」。)

我重新查看了一下上面提到的主要的许可证,很有趣,其是否有此声明和此前所说的「普遍的结论」的倾向度正好相反:GPL、Apache均明确声明了不可撤销,而MIT和BSD(无论是2-Clause、3-Clause还是4-Clause)均没有声明。

当然,该结论并不令我太过意外。毕竟FSF和Apache Foundation本身就是开放的支持方,而MIT、BSD方面则更偏向于「无所谓」。要说哪里超出预期,那便是我本以为MIT和BSD中至少应该有一个有此声明。

需要注意的是,「没有该声明」不等于「一定会有此漏洞」。其原因之一是我并非法学相关专业的(希望相关专业人士前来指教),另一原因是或许此内容是隐含的只是我没读出来。

基于这个结论,我又去看了一下一些软件的协议,其结果基本还是比较令我放心的。目下目光聚焦的Android,其使用Apache协议授权,意味着并无此风险(蛤?谷歌服务框架?谷歌是啥?);而我更在意的GNU/Linux全系列的基础全部都是GPL/LGPL协议,所以实际上更没有问题。

不少人都喜欢在讨论时夹带私货,尤其喜欢在危言耸听后趁人们不够理智时夹带。其中一个很令人讨厌的地方就是喜欢强调「国产操作系统」,而他们口中的这个「国产操作系统」很明显是要闭源的。

所以……嗯……整体而言还是比较光明的。但多少也给诸位多多少少有点国际主义意识、真心希望走向开放的人提了个醒:尽量不要选择MIT、BSD一类的协议,以免哪天受困于这种莫名其妙的政治争端。


您可以在Hypothesis上的該群組內進行評論,或使用下面的Disqus評論。