到昨天为止,开源促进会上公布被它认可的开源许可证有82个,但是其中要求非常繁杂,每个许可证都有自己的特点,要求不一样。
如图,开源许可证分传染性和开放性。如何区分?一个分支,修改代码之后是否允许它再做闭源?如果Yes,进入到右边,如果是No,就进入左边传染性许可证。
常用许可证,包括MIT、BSD、Apache、LGPL等等,这些只是简单我们区分许可证区别的点,后来经过研究,大概有20多项的分别,以后有机会再和大家进行分享。
如图,GPL网站上为了让用户区分GPL系列,包括LGPL之间的兼容性,而做了一张表。横坐标是想使用GPL2.0或3.0来做开源项目,纵坐标把以前其他开源项目的代码放到这个项目里,是否和这个项目兼容,就这么一个图。我们想用GPL2.0开源,用GPL3.0代码放进去,是否可以?答案是No,也就是说GPL2.0和3.0本身就是不兼容的。
如图,使用外部链接库放到这个项目里是否被允许。
如图,用一张更简单的图解释一下各种不同的许可证的兼容性。
举例,有一个项目是用GPL2.0开源,里面放了一些MIT/BSD/A Apache 2.0/LGPL2.1等许可证的代码放到GPL2.0里去,是否兼容?用这个图可以一目了然看清楚,LGPL2.1有直接的路径到达GPL2.0,说明这两个许可证是兼容的。BSD/MIT有间接的路径到达GBL2.0,说明这些许可证也是兼容的。Apache 2.0,不管是直接的路径还是间接路径,都不可能到达GPL2.0,就是说GPL2.0和Apache 2.0是不兼容的。用GPL2.0开源之后,原先Apache2.0开源过项目的代码是不允许放到这个项目里来的,这就是许可证的兼容性。
开源带来的风险。
分两类:
1.合规性风险。
又分传染性、兼容性和其他类型风险。所谓合规性风险,总结来说就是当一个用户在使用开源代码或用一个许可证去开源的时候,违反了这个许可证的规定,也就是说不合规的使用造成了这样的风险,就叫合规性风险。造成比较严重的后果是别人要求你停止侵权,产品可能被召回;别人要求你必须开放项目源代码;在你的商业软件里使用GPL2.0,自由软件基金会就有权要求你整个项目代码宣布开源。
在2003年,思科收购了Linksys,它使用底层的驱动是GPL2.0的代码,思科也没有在意这个事情,2003年3月完成了对它的收购,此后一年里经受了自由软件基金会的穷追猛打,告诉他必须要开放路由器的全部代码。最后思科顶不住这种压力,为了自己的声誉,完全开放了路由器产品线,造成了这个产业链上其他竞争对手与它的差距瞬间消失,这对于它来说是一个巨大的损失。