在使用开源代码的时候,也需要注意其对应的开源协议,特别是在商业级应用中。下面就我个人针对各个常见的开源协议做个简单的汇总和理解。
假设我们使用的开源代码为 A,我们自己开发的为 B,其中使用到了A
BSD协议
1。若B开源,B中带有A的代码,则B在发布时必须带有A的BSD协议声明。
2。若B闭源,B中带有A的代码,则B在发布时必须在文档/版权声明中带有A的BSD协议声明。
3。不允许用A的作者或者任何其他信息作为B的市场推广。
总结:自由度很大,很适合商业用途。
Apache协议:
1。B发布时需要给用户一份apache许可。
2。若修改了A的代码,则需要在该代码文件里注明。
3。在B中需要带有A的协议、商标、专利声明以及A中一切要求衍生软件/类库声明的内容。
4。B中包含一个Notice文件,里面包含Apache许可证及你自己要求声明的内容。(该内容不可与apache协议本身冲突)
总结:自由度也很大,适合商业用途。
GPL协议:
1。B必须符合GPL协议(传染性),B必须开源、免费。
2。B发布时必须声明自己是GPL协议。
3。允许在B中修改A的内容。
总结:不适合商用,必须是开源、免费。
LGPL协议:
1。B若修改了A的内容,修改部分及额外衍生代码必须符合LGPL协议。
2。允许B中部分闭源,链接(Link)到A或A的衍生部分。
总结:适合一定范围内商用。