五种常⽤源代码开源协议
BSD / MIT / Apache Licence
这3个协议都是⽐较⾃由的协议,源代码可以拿来修改,并商⽤,⽽⾃⼰的其他代码不需要开源。
BSD是"Berkeley Software Distribution"的缩写,意思是"伯克利软件发⾏版"。
BSD开源协议是⼀个给予使⽤者很⼤⾃由的协议。基本上使⽤者可以"为所欲为",可以⾃由的使⽤,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。但"为所欲为"的前提是当你发布使⽤了BSD协议的代码,或者以BSD协议代码为基础做⼆次开发⾃⼰的产品时,需要满⾜三个条件:1.如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。2.如果再发布的只是⼆进制类库/软件,则需要在类库/软件的⽂档和版权声明中包含原来代码中的BSD协议。3.不可以⽤开源代码的作者/机构名字和原来产品的名字做市场推⼴。
协议介绍
BSD开源协议(original BSD license、FreeBSD license、Original BSD license)是⼀个给于使⽤者很⼤⾃由的协议,BSD 代码⿎励代码共享,但需要尊重代码作者的著作权。BSD由于允许使⽤者修改和重新发布代码,也允许使⽤或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。
⽽很多的公司企业在选⽤开源产品的时候都⾸选BSD协议,因为可以完全控制这些第三⽅的代码,在必要的时候可以修改或者⼆次开发。
MIT是和BSD⼀样宽范的许可协议,源⾃⿇省理⼯学院(Massachusetts Institute of Technology, MIT),⼜称X11协议。
作者只想保留版权,⽽⽆任何其他了限制。MIT与BSD类似,但是⽐BSD协议更加宽松,是⽬前最少限制的协议。这个协议唯⼀的条件就是在修改后的代码或者发⾏包包含原作者的许可信息。适⽤商业软件。使⽤MIT的软件项⽬有:jquery、Node.js。
jquery是什么软件
MIT与BSD类似,但是⽐BSD协议更加宽松,是⽬前最少限制的协议。这个协议唯⼀的条件就是在修改后的代码或者发⾏包包含原作者的许可信息。适⽤商业软件。
Apache Licence是著名的⾮盈利开源组织Apache采⽤的协议。该协议和BSD类似,同样⿎励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。
⽤⼀句话概括 Apache License 就是,你可以⽤这代码,但是如果开源你必须保留我写的声明;你可以改我的代码,但是如果开源你必须写清楚你改了哪些;你可以加新的协议要求,但不能与我所公布的协议要求产⽣冲突;你⽤这代码⼲什么我不管,但是你不能让我承担任何责任。
-
-------------------------
⾃由软件通⽤的GPL协议
GPL 是 GNU General Public License (GNU 通⽤公共许可证)的缩写形式;LGPL 是 GNU Lesser General Public License (GNU 宽通⽤公共许可证)的缩写形式,旧称 GNU Library General Public License (GNU 库通⽤公共许可证);GFDL 是 GNU Free Documentation License (GNU ⾃由⽂档许可证)的缩写形式。它们是⾃由软件(Free Software)的通⽤版权认证协议,由⾃由软件基⾦会(FSF)制定和发布。
* 基于 GPL 的软件允许商业化销售,但不允许封闭源代码。
* 如果您对遵循 GPL 的软件进⾏任何改动和/或再次开发并予以发布,则您的产品必须继承 GPL 协议,不允许封闭源代码。
* 基于 LGPL 的软件也允许商业化销售,但不允许封闭源代码。
* 如果您对遵循 LGPL 的软件进⾏任何改动和/或再次开发并予以发布,则您的产品必须继承 LGPL 协议,不允许封闭源代码。但是如果您的程序对遵循 LGPL 的软件进⾏任何连接、调⽤⽽不是包含,则允许封闭源代码。
GPL(General Public License)和LGPL( Lesser General Public License)是GNU的两种License。越来越多的⾃由软件(Free Software)使⽤GPL作为其授权声明,如果对GPL⼀点都不了解,有可能在使⽤⾃由软件时违反了GPL的授权。如果是个⼈或不正规的公司倒也⽆所谓,但如果是有规模的公司,恐怕会有被起诉的风险。
LGPL是GPL的⼀个为主要为类库使⽤设计的开源协议。和GPL要求任何使⽤/修改/衍⽣之GPL类库的的软件必须采⽤GPL协议不同。LGPL 允许商业软件通过类库引⽤(link)⽅式使⽤LGPL类库⽽不需要开源商业软件的代码。这使得采⽤LGPL协议的开源代码可以被商业软件作为类库引⽤并发布和销售。
但是如果修改LGPL协议的代码或者衍⽣,则所有修改的代码,涉及修改部分的额外代码和衍⽣的代码都必须采⽤LGPL协议。因此LGPL协议的开源代码很适合作为第三⽅类库被商业软件引⽤,但不适合希望以LGPL协议代码为基础,通过修改和衍⽣的⽅式做⼆次开发的商业软件采⽤。
GNU C库选择的是LGPL。
如果你使⽤动态链接的形式链接到LGPL包括的库时,那么,不受限制,你可以以任何形式或许可证发布你的应⽤程序,商业的、⾮商业的、开源的、⾮开源的,随你。
如果你因某种原因必须静态链接⼀个基于 LGPL 协议发布的库(⼀下我们简称为 LGPL 库),那么,你有义务进⾏下⾯的⼯作:
你必须在你的⽂档中说明,你的程序中使⽤了 LGPL 库,并且说明这个库是基于 LGPL 发布的;
你必须在你的应⽤程序发布中包含⼀份 LGPL协议,通常就是那个⽂本⽂件;
你必须开放使⽤了 LGPL 库代码的所有代码,例如某些封装器。但是,其他使⽤这些封装器的代码就不需要开放了;
你必须包含你的应⽤程序的余下部分的⽬标⽂件(通常就是我们所说的 .o 等等),或者是其他等价的⽂件。源代码并不是必须的。
为了⾃由软件的发展,使⽤GPL协议貌似是更好的选择,让⼤家都使⽤基于GPL协议的软件来构建⾃⼰的软件,然后⾃⼰的软件也变成GPL 协议,可以供其他⼈来继续使⽤。
在使⽤过程中,代码开放,能更好的发现问题和解决问题,使整个⽣态不断演化和前进。
听起来很好,但很多软件不会选择开发源码,⽐如很多商⽤软件或私有软件。这些软件在选择某个软件库时,如果是GPL协议,那可能就会考虑选择其他替代品,或者⾃⼰开发,除⾮这个功能过于特殊。
那这样的话,实际上就限制了⾃由软件的使⽤和发展,显然需要调整⼀下。这时使⽤LGPL协议,使⽤库⽂件不需要开放源码,就会是更好的选择。
当⼀个库所提供的功能是⾮常独特的时候,如GNU Readline, 情况就⼤不⼀样了. Readline库可实现输⼊编辑和记录交互式程序操作,这在别处通常是不可多得. 在GPL下发布它并限制它只能在⾃由程序中使⽤, 这我们的社团是⼀个重要的促进.⾄少今天某个应⽤程序之所以是⾃由软件,只是因为它必需要⽤到Readline.
如果我们收集⼀些强⼤的、私有软件中没有相类似东西的、采⽤GPL的库,它们将提供⼀系列有⽤ 的模块⽤于新的⾃由软件的构造. 这对于将来的⾃由软件开发将是⼀个显著的优势, ⼀些项⽬将为了使⽤这些库⽽考虑使软件⾃由化. ⼤学的项⽬是易于被影响的;⽽且今天,随着某些公司开始考虑使软件⾃由化, 甚⾄⼀些商业项⽬也会由此受到影响.
那么选择逻辑来了:
1,如果你的软件需要引⽤开源软件,⽽你不想⾃⼰的代码开源。你可以选择MIT、BSD、Apache和LGPL。
1.1 MIT和BSD的区别是,MIT可以⽤原作者的名字进⾏促销。
1.2 Apache的区别是,你对开源软件做了改动,然后还要进⾏开源的话,需要把修改的内容描述清楚。
1.3 LGPL不同之处,你只能使⽤⼆进制库⽂件进⾏链接,⽽不需要开放源码。但⼀旦进⾏修改或衍⽣,就要采⽤LGPL协议。
所以LGPL协议不适合对有些开源软件进⾏⼆次开发,因为你开发了,要开源,但别⼈⽤库就可以,不⽤开源它的代码。
2,如果你的软件需要引⽤开源软件,⽽你⾃⼰的代码也可以开源,你可以选择GPL。(当然MIT、BSD和Apache也可以⽤)
GPL是有传染性的,你代码⾥使⽤、引⽤或衍⽣GPL协议的代码,那你也要遵循GPL协议,开源⾃⼰的代码。
附上⼀个帮助选择License的⽹站:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。