开源早已成为很多科技企业关注的焦点,我们也常会发现部分开源技术后面标注了某种协议,这意味着这些开源代码被框上了某种束缚,或者说这些代码将必须遵循这些规则,否则可能会触及法律。
总的来看,如今比较流行的开源软件协议包括:GPL,LGPL,Apache License(2.0)和BSD。一般来讲,如果使用了GPL许可证的软件,就意味着你的软件必须“自由”,相比之下,其他协议大多只要求使用者尊重原作就可以了,更适用于商业软件之中,只有区分了这些开源软件协议的含义,才能更好的利用和回馈开源软件。
你需要了解的开源许可证
GPL(GNU General Public License Versions)
GPL协议一般还可以分为GPL2.0和GPL3.0两种,而GPL3.0是更新一代的开源标准,在对用户专利的保护和DRM的限制方面有所更改。 GPL协议同其它的自由软件许可证一样,许可社会公众享有:运行、复制软件的自由,发行传播软件的自由,获得软件源码的自由,改进软件并将自己作出的改进 版本向社会发行传播的自由。 而GPL协议就像一种开源“病毒”,任何一款沾染上他的软件都不得不保持开源和免费。
根据国外论坛Robbin的解释:“GPL是针对软件源代码的版权,而不是针对软件编译后二进制版本的版权。你有权免费获得软件的源代码,但是你没有权力免费获得软件的二进制发行版本。GPL对软件发行版本唯一的限制就是:你的发行版本必须把完整的源代码一同提供。”
LGPL
LGPL是GNU Lesser General Public License(GNU宽通用公共许可证)的缩写形式,LGPL是GPL的一个为主要 为类库使用设计的开源协议。与上面的GPL不同的是,LGPL允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。使 采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。
我们也可以简单理解为:LGPL协议的开源代码商业软件可以使用,但不能修改LGPL协议的代码。
Apache License
Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。他需要满足的条件包括:
○需要给代码的用户一份Apache Licence
○如果你修改了代码,需要在被修改的文件中说明。
○在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
○如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改。
BSD开源协议(Berkerley Software Distribution)
目前BSD开源协议分为BSD 3-Clause和BSD 2-Clause两种,分别代指两个条款和三个条款的BSD协议。应该说,BSD开源协议是 一个给于使用者很大自由的协议。基本上使用者可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。但是,不可以用开源代码的作 者/机构名字和原来产品的名字做市场推广。
这就不难理解,很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。
除了上面的集中开源协议,还有MIT许可证(源自麻省理工,是与BSD一样宽范的许可协议)和Mozilla许可证等,具体可参照下图。