目录
引言
如何看懂所引用文件头的版权声明, 这是一个问题
如何为代码开源选择合适的许可证, 这是一个问题
如何为商业软件引用不侵权的软件, 这也是一个问题
带着这么多问题, 我们就看看到底有哪些常见的开源协议
常见的五种开源协议
BSD
BSD (Berkeley Software Distribution)
BSD开源协议是一个给于使用者很大自由的协议, 基本上使用者可以"为所欲为", 因此是对商业集成很友好的协议
但"为所欲为"的前提当你发布使用了BSD协议的代码时, 需要满足这三个条件
如果在发布的产品中包含源代码, 则在源代码中必须带有原来代码中的BSD协议
如果在发布的只是二进制类库/软件, 则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议
不可以用开源代码的作者/机构名字和原来产品的名字做市场推广
采用BSD协议的软件有
为所欲为协议, 只是要有版权声明, 且不侵犯"肖像权"
APL
APL (Apache License)
该协议和BSD类似, 同样鼓励代码共享和尊重原作者的著作权, 同样允许代码修改再发布
该协议相比BSD的区别是
- 如果你修改了代码, 需要再被修改的文件中说明
采用Apache License协议的软件有
另一个为所欲为协议,只是版权声明稍微"严了点"
MIT
MIT (Massachusetts Institute of Technology)
MIT是和BSD一样宽范的许可协议, 作者只想保留版权, 而无任何其他了限制
采用MIT协议的软件有
如果你只想让别人记住你, 请用MIT
GPL
GPL (GNU General Public License)
上面的三个协议都是鼓励代码重用的, 所以说他们不仅是商业友好的, 更是程序员友好的
GPL相比他们就没有那么商业"友好"了
GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用
但是不允许修改后和衍生的代码做为闭源的商业软件发布和销售
通俗地说就是:
只要你用了任何该协议的库、甚至是一段代码, 那么你的整个程序, 不管以何种方式链接, 都必须全部使用GPL协议、并遵循该协议开源
采用GPL协议的软件有
俗称"传染病"协议, 用了它你也就被开源了
LGPL
LGPL (GNU Lesser General Public License)
鉴于GPL是如此的隔绝商业, 就出现了一个宽松版的GPL即LGPL
但LGPL其实只是GPL的一个为主要为类库使用设计的开源协议
LGPL允许商业软件通过类库引用方式使用LGPL类库而不需要开源商业软件的代码
GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品
采用LGPL协议的软件有
适用于类库引用而不是二次开发的GPL
iOS常用第三方库的开源协议
CocoaPods/CocoaPods - MIT
Coding/Coding-iOS - MIT
facebook/SocketRocket - BSD
fastlane/fastlane - MIT
IFTTT/JazzHands - MIT
SnapKit/Masonry - MIT
YYKit - MIT
Android常用第三方库的开源协议
alibaba/fastjson - APL
greenrobot/EventBus -APL
greenrobot/greenDAO - APL
JakeWharton/butterknife - APL
koush/AndroidAsync - APL
loopj/android-async-http - APL
PaoloRotolo/AppIntro - APL
square/okhttp - APL
附录
更多文章, 请支持我的个人博客