对常见开源协议的理解
2010-07-20 10:12
176 查看
在使用开源代码的时候,也需要注意其对应的开源协议,特别是在商业级应用中。下面就我个人针对各个常见的开源协议做个简单的汇总和理解。
假设我们使用的开源代码为 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的衍生部分。
总结:适合一定范围内商用。
假设我们使用的开源代码为 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的衍生部分。
总结:适合一定范围内商用。
相关文章推荐
- 五种常见的开源协议
- 常见的几种开源协议
- 五种常见开源协议
- 常见开源协议简介
- 常见的五种开源协议的比较
- 我的mqtt协议和emqttd开源项目个人理解(8) - 客户端subscribe消息的源码分析
- 常见开源协议,简介
- 我的mqtt协议和emqttd开源项目个人理解(9) - 集群和Mnesia源码分析
- 《在实践中深入理解常见网络协议》
- 常见开源协议大白话说明
- 几个常见开源协议的介绍
- 简析最常见的开源协议
- 关于常见开源协议的横向比较
- 常见开源协议简介
- 我的mqtt协议和emqttd开源项目个人理解(12) - Hook使用和连接Kafka发送消息,使用ekaf库
- 我的mqtt协议和emqttd开源项目个人理解(3) - 客户端publish消息QoS==0的源码分析
- 常见开源协议
- 常见开源协议
- 常见开源协议
- 我的mqtt协议和emqttd开源项目个人理解(5) - hook的使用,源码分析