`
rcfalcon
  • 浏览: 222341 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

对常见开源协议的理解

阅读更多
在使用开源代码的时候,也需要注意其对应的开源协议,特别是在商业级应用中。下面就我个人针对各个常见的开源协议做个简单的汇总和理解。



假设我们使用的开源代码为 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的衍生部分。

总结:适合一定范围内商用。
分享到:
评论

相关推荐

    JAVA上百实例源码以及开源项目

    例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;...

    JAVA上百实例源码以及开源项目源代码

    例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在...

    84PHP开源框架 v1.1.0

    4PHP是一套完全遵守APACHE开源协议的便捷PHP框架,独特的模块化设计,使得框架简洁易懂。一行代码即可完成在线支付、发送短信、分页等功能,前所未有的简单和高效!同时,84PHP还具有云服务功能,这也是国内首款与...

    backtrack5指南

    它遵照开源许可协议编写,您可以自由下载、阅读、修改和分享。 这本手册将帮助您熟悉日常的操作,如上网冲浪、听音乐和扫描文档。由于注重说明的简易性,本书适合各个层次的用户阅读。 特色: • 易于理解 - 我们...

    matlab中代码换行符-PoWSecurity:Oakland2019年论文“放下常见指标:评估工作量证明共识协议的安全性”中使用的源代码

    此存储库中包含以下度量标准协议对: 指标:连锁质量 不可预测的确定性抢七, 攻击抵抗指标:激励兼容性,颠覆收益和审查制度敏感性 中本聪共识 奖励拆分协议, 请注意,尽管奖励拆分协议是DECOR +的简化版本,但其...

    leetcode分类--:BN理解

    然后就是常见的算法题 手撸代码 学好数据结构 leetcode刷个几百题基本可以一战 很多都是leetcode原题 然后有部分思维逻辑题 脑筋急转弯之类的 不过本质上也可以用算法解 最后就是聊项目 技术要点 实现方法 扮演角色 ...

    leetcode题库-Blog:Fashion'sBlog个人学习笔记,涵盖JVM、数据结构、算法、设计模式、中间件、数据库、缓存、分布式微服

    全手写急速理解Netty模型及IO模型应用实战 Netty之IO模型开发本质手写部分实现推导篇 全手写基于Netty的RPC框架自定义协议,连接池 全手写基于Netty的RPC框架 协议编解码问题 粘包拆包与内核关系 ... Elasticsearch ...

    java中solr的笔试题-note:个人学习信息

    对于消息中间件,需要熟练使用,对于常见问题场景,需要有对出现问题的解决方案,比如消息丢失、消息不消费、延迟比较大等方面应对方案,深入了解数据落盘,出现分区等场景原理与实现。 同时需要掌握rafa,paxos等...

    xmljava系统源码-MyRPCFromZero:从零开始,手写一个RPC,任何人都能看懂

    本文档与代码都是本人第一次手写RPC的心路历程,会有理解的偏差与代码上的不完善,但更是由于这样,有着与新手对同样问题的疑惑,也许会使新手更容易理解这样做的缘故是啥。 另外期待与你的合作:代码,帮助文档甚至...

    JMeter操作手册大全.docx

    常见的错误理解: 使用系统的全部用户数量(注册用户) 使用系统的全部在线用户数量 正确理解 并发用户数指在同一时刻内,打开系统并进行业务操作的用户数量,并发用户数对于长连接(数据库连接时长连接,web请求时短...

    asp.net知识库

    我对J2EE和.NET的一点理解 难分难舍的DSO(一) InternalsVisibleToAttribute,友元程序集访问属性 Essential .NET 读书笔记 [第一部分] NET FrameWork的Collections支持 .NET的反射在软件设计上的应用 关于跨程序集...

    lrucacheleetcode-InterviewPrepration:收集有关如何准备技术面试的资源

    的这篇文章以一种非常容易理解的语言包含了 AZ 基础知识,但如果您没有时间,至少从以下两个开始: 数据结构介绍 数据结构 以下是一些常见的数据结构,尽管这些 DS 的某些功能可能因语言而异,但它们中的大多数都...

    java源码包---java 源码 大量 实例

    例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;...

    java源码包2

    例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;...

    java源码包3

    例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;...

    java源码包4

    例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你... //增加信息 …… Java实现的点对点短消息发送协议(smpp)开发包源码 70个目标文件,如题。 Java实现的放大...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你... //增加信息 …… Java实现的点对点短消息发送协议(smpp)开发包源码 70个目标文件,如题。 Java实现的放大...

    Android高级编程--源代码

     由于Android构建在开源代码的框架之上,而且提供了强大的SDK库和开放的理念,所以它为广大的没有任何移动应用程序开发经验的新手开辟了一条开发完美的移动应用程序的康庄大道。而富有经验的移动开发人员现在也可以...

Global site tag (gtag.js) - Google Analytics