几种常见开源协议

几种常见的开源协议:

一、GPL详解:

在自由软件所使用的各种许可证之中,最为人们注意的也许是通用公开许可证(General Public License,简称GPL)。

GPL同其它的自由软件许可证一样,许可社会公众享有:运行、复制软件的自由,发行传播软件的自由,获得软件源码的自由,改进软件并将自己作出的改进版本向社会发行传播的自由。

GPL还规定:只要这种修改文本在整体上或者其某个部分来源于遵循GPL的程序,该修改文本的 整体就必须按照GPL流通,不仅该修改文本的源码必须向社会公开,而且对于这种修改文本的流通不准许附加修改者自己作出的限制。

因此,一项遵循GPL流通 的程序不能同非自由的软件合并。GPL所表达的这种流通规则称为copyleft,表示与copyright(版权)的概念“相左”。

GPL协议最主要的几个原则:

1、确保软件自始至终都以开放源代码形式发布,保护开发成果不被窃取用作商业发售。任何一套软 件,只要其中使用了受 GPL协议保护的第三方软件的源程序,并向非开发人员发布时,软件本身也就自动成为受 GPL 保护并且约束的实体。也就是说,此时它必须开放源代码。

2、GPL 大致就是一个左侧版权(Copyleft,或译为“反版权”、“版权属左”、“版权所无”、“版责”等)的体现。你可以去掉所有原作的版权 信息,只要你保持开源,并且随源代码、二进制版附上 GPL 的许可证就行,让后人可以很明确地得知此软件的授权信息。GPL 精髓就是,只要使软件在完整开源 的情况下,尽可能使使用者得到自由发挥的空间,使软件得到更快更好的发展。

3、无论软件以何种形式发布,都必须同时附上源代码。例如在 Web 上提供下载,就必须在二进制版本(如果有的话)下载的同一个页面,清楚地提供源代码下载的链接。如果以光盘形式发布,就必须同时附上源文件的光盘。

4、开发或维护遵循 GPL 协议开发的软件的公司或个人,可以对使用者收取一定的服务费用。但还是一句老话——必须无偿提供软件的完整源代码,不得将源代码与服务做捆绑或任何变相捆绑销售。

二、BSD详解:

BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。当你发布使用了BSD协议的代码,或者以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:

如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。

如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。

不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。

BSD代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销 售,因此是对商业集成很友好的协议。很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者 二次开发。

三、Apache License详解:

Apache License是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。

需要满足的条件:

* 需要给代码的用户一份Apache License

* 如果你修改了代码,需要再被修改的文件中说明

* 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议、商标、专利声明和其他原来作者规定需要包含的说明

* 如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache License。你可以在Notice中增加自己的许可,但不可以表现为对Apache License构成更改

Apache License也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。

四、LGPL详解

GNU宽通用公共许可证,简称LGPL(GNU Lesser General Public License),被用于一些(但不是全部)GNU程序库。这个许可证以前被称为GNU库(Library)通用公共许可证。

LGPL是GPL的变种,也是GNU为了得到更多的甚至是商用软件开发商的支持而提出的。与GPL的最大不同是,可以私有使用LGPL授权的自由软件,开发出来的新软件可以是私有的而不需要是自由软件。所以任何公司在使用自由软件之前应该保证在LGPL或其它GPL变种的授权下。

总结一下:

简单的说,就是你使用了GPL许可证的软件,那么你的软件产品就被GPL“传染”了,也必须“自由”!这对国内的商业软件开发商来说是很难接受的。

但是LGPL, Apache License, BSD就不存在这个问题,后两者只要求你对软件原作者的工作进行必要的认可和尊重就行了,所以这是适合商业应用的。

所以在选择应用开源软件时,一定要明白自己的用途,选择合适许可证下的软件。

——-摘自网络http://my.oschina.net/airship/blog/528861


原创文章,作者:devon,如若转载,请注明出处:http://www.178linux.com/23952

(0)
devondevon
上一篇 2016-07-12
下一篇 2016-07-12

相关推荐

  • linux同时创建多个目录

    mkdir -p a_{c,d} b_{c,d} mkdir 同时创建多个文件夹 mkdir -p  mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sb…

    2017-08-28
  • 8月3号 用户权限作业

     1,当用户xiaoming 对/testdir  目录无执行权限时,意味着无法做哪些操作?   先创建目录/testdir,接着修改目录的/testdir的权限,用xiaoming的身份去进入/testdir目录 [root@localhost ~]# mkdir /testdir [root@l…

    Linux干货 2016-08-08
  • Linux进程查看及管理(2)

     Linux进程查看及管理的工具:pstree, ps, pidof, pgrep, top, htop, glances, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup  vunt]] mstat命令: vmstat [options] [delay [co procs: r:…

    Linux干货 2015-09-28
  • 马哥教育网络班22期+第4周课程练习

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。   cp -r /etc/skel /home/tuser1    chmod -R go=— /home/tuser1 2、编辑/etc/group文件,添加组hadoo…

    Linux干货 2016-09-19
  • linux基础命令

    显示当前系统正在使用的shell:echo ${SHELL}  注意$在这里表示输出的内容是变量命令提示符:prompt[root@localhost ~]# 表示管理员用户 $表示普通用户修改提示符格式 PS1=“[\e[31m][\u@\h \w]\$[\e[0m]”\h 主机名简称\H 主机名\w 当前…

    Linux干货 2017-04-05
  • 雷人的程序注释

    使用Google code search可以搜索到一些比较有趣的代码注释,呵呵。下面的这些程序注释有搞笑的,也有粗口,看来写程序本来也不是一件很枯燥的事,关键看你的心态如何了。读到这些注释的时候,只能想到一个词,那就是“疯狂的程序员”,哈哈。Have a Fun  ;-) 写个程序时不忘表达自己的感情,以免以后忘了。 呵呵,看来自己也不是很自信。 …

    Linux干货 2016-05-10