×
广告

谈谈开源协议

96
诺之林
2016.07.16 17:30* 字数 1030

目录

引言

如何看懂所引用文件头的版权声明, 这是一个问题

如何为代码开源选择合适的许可证, 这是一个问题

如何为商业软件引用不侵权的软件, 这也是一个问题

带着这么多问题, 我们就看看到底有哪些常见的开源协议

常见的五种开源协议

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常用第三方库的开源协议

Android常用第三方库的开源协议

附录

更多文章, 请支持我的个人博客

Programming
Web note ad 1