常用的开源协议
GPL(General Public License)协议主要特点:
- 所有的源代码都是公开的,可以自由使用。但是是有版权的
- 如果对GPL的开源代码进行修改,就必须把修改之后的代码进行开源
- 如果引用了GPL的代码库,就必须开源你引用部分的代码。相当于你的代码中如果有一行代码引入了GPL协议的库函数,就必须把整个代码开源。就是所说的传染性
- 如果使用的是GPL产品,没有上面的限制。这个说实在的,我觉得真不好界定。例如java中的openjdk,如果你只是使用他的编译器编译你的java程序,是没有必要开源你的java程序
- GPL是free(自由的),但是是可以收费的。我们经常认为开源的就是免费的,这个是不对的。
从上面的限制来看,GPL开源协议还是有很大的传染性的。如果一个商业公司引用了开源代码或者库函数,就必须开源引用它的整个代码。有一些公司不愿意开源咋办,就不能用了。毕竟对于商业公司来说,代码是我的资产,我没有必要开源,所以这个协议对商业公司不是很友好
LGPL(GNU Lesser General Public License):是GPL的变种,这个是宽松的GPL,对于商业公司比较友好,如果使用了LGPL的库,可以不开源的你的代码。与GPL的最大不同是,可以私有使用LGPL授权的自由软件,开发出来的新软件可以是私有的而不需要是自由软件。所以任何公司在使用自由软件之前应该保证在LGPL或其它GPL变种的授权下。
BSD(FreeBSD Copyright Information):这个算是宽松的协议了,你可以使用和修改它的源代码,注明使用了他就可以了,你自己的代码是可以私有的。只要别侵权就可以,比如直接copy了源代码,说是你自己写的,这样就不对了。
Apache Licene:这个和BSD差不多,但是要注意几点,如果修改了源代码,要注明修改了什么。开源代码的商标,专利,所有权都要保留的,不能说修改了开源apache 协议的开源代码,就直接把代码的作者写成你,这样是不对的。发布产品的时候,对于自己修改的apache 开源代码,不能够变成其他的开源协议。
MIT:这个说实在的,我个人见的比较少,这个算是最自由的协议了,和BSD一样,但是修改了MIT源码,可以加入自己的授权。