SPICE协议的理解,常见开源协议介绍
分类:互联网

2015年1月9日,国家自然科学一等奖授予了计算机科学家、中国工程院院士张尧学及其团队。但这一奖项立刻引发了争议,许多研究者认为这一项目太偏向工程,太过普通,《科学》杂志的官方网站也对此进行了报道。

什么是许可协议?

SPICE协议的基本框架

读了两篇文章,总结一下SPICE的VDI协议。
1、徐浩,兰雨晴 2013年(计算机工程与科学)发表的文章:“基于SPICE协议的桌面虚拟化技术研究与改进方案”;
2、石屹嵘,龚德志,2013年 (电信科学)发表的文章:“基于SPICE 开源协议的云桌面技术架构研究”;
张两篇文章都介绍了“SPICE”框架,
其中文章二对比了几种桌面远程显示技术。
目前的技术实现方式和协议主要有以下4 种:

一、常用开源协议汇总图

首先从一张图开始,介绍几种主流的开源协议,以及决定选用哪种框架的思路。
使用哪种开源协议,决定了你发布的开源项目被别人使用了之后,别人的项目是否受到你的项目的开源协议的约束、受到哪种约束。
同理,采用别人的开源项目时,也要留意开源协议,这直接影响到日后你的项目是否需要开源、是否需要采用同样的许可证、是否需要对修改的源码进行文档说明、是否需要再修改过的文件中放置版权说明、衍生软件的广告等。

澳门新葡8455最新网站 1

常用开源协议汇总图

在接受科技日报采访时,张尧学提供了一个视频链接,展示了基于透明计算的“透明桌面”项目的运行状况。但是,网友很快发现其中一段帮助文本是英文。经搜索发现这段文本来自加拿大软件工程师约丹·约丹诺夫(Iordan Iordanov)的远程桌面客户端bVNC,这是一个“开源软件”,源代码是公开的。

什么是许可,当你为你的产品签发许可,你是在出让自己的权利,不过,你仍然拥有版权和专利(如果申请了的话),许可的目的是,向使用你产品的人提供一定的权限。

微软公司,桌面传输和展现基于RDP。

二、常用开源协议简介

现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有83种:https://opensource.org/licenses/alphabetical

那么,要如何从这么多的开源协议中选取适合自己项目的协议呢?
在这里我们参考:Open Source Licenses by Category(开源协议分类)
中的:Licenses that are "popular and widely-used or with strong communities"(被广泛应用或被大社区使用的开源协议)中所列出的几个协议作简要说明:(中文简介摘录参考文章[1])

  1. Apache License 2.0 (Apache-2.0)

Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件也和BSD类似:
1)需要给代码的用户一份Apache Licence
2)如果你修改了代码,需要再被修改的文件中说明。
3)在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
4)如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改。
Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。

  1. 3-clause BSD license (BSD-3-Clause)

BSD (3-Clause) License
BSD允许使用者修改和重新发布代码(以其他协议形式),允许闭源商业发布和销售。
BSD鼓励代码共享的同时,要求尊重代码作者的著作权。
使用BSD协议,需要遵守以下规则:
1 再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议;
2 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档那个和版权声明中包含原来代码中的BSD协议;
3 不可以用开源代码的“作者/机构的名字”或“原来产品的名字”做市场推广。

  1. 2-clause BSD license (BSD-2-Clause)

与 "3-clause BSD license (BSD-3-Clause)" 的内容形似。

  1. GNU General Public License (GPL)

GPL v2
我们很熟悉的Linux就是采用了GPL。GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种linux,包括商业公司的linux和linux上各种各样的由个人,组织,以及商业软件公司开发的免费软件了。
GPL协议的主要内容是只要在一个软件中使用(“使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的”传染性”。GPL协议的产品作为一个单独的产品使用没有任何问题,还可以享受免费的优势。
由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。
其它细节如再发布的时候需要伴随GPL协议等和BSD/Apache等类似。
GPL v3
GPL v3与GPL v2类似。区别在于,不仅要求用户公布修改的源代码,还要求公布相关硬件。

  1. GNU Lesser General Public License (LGPL)

LGPL v2.1
LGPL是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。
但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。
GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品
LGPL v3
相对于LGPL v2,不仅要求用户公布修改的源代码,还要求公布相关硬件。

  1. MIT license (MIT)

MIT License
MIT许可证之名源自麻省理工学院(Massachusetts Institute of Technology, MIT),又称「X条款」(X License)或「X11条款」(X11 License)
MIT内容与三条款BSD许可证(3-clause BSD license)内容颇为近似,但是赋予软体被授权人更大的权利与更少的限制。
被授权人有权利使用、复制、修改、合并、出版发行、散布、再授权及贩售软体及软体的副本。
被授权人可根据程式的需要修改授权条款为适当的内容。
在软件和软件的所有副本中都必须包含版权声明和许可声明。
此授权条款并非属copyleft的自由软体授权条款,允许在自由/开放源码软体或非自由软体(proprietary software)所使用。
此亦为MIT与BSD(The BSD license, 3-clause BSD license)本质上不同处。
MIT条款可与其他授权条款并存。另外,MIT条款也是自由软体基金会(FSF)所认可的自由软体授权条款,与GPL相容。

  1. Mozilla Public License 2.0 (MPL-2.0)

Mozilla Public License Version 2.0
MPL是The Mozilla Public License的简写,是1998年初Netscape的 Mozilla小组为其开源软件项目设计的软件许可证。MPL许可证出现的最重要原因就是,Netscape公司认为GPL许可证没有很好地平衡开发者对 源代码的需求和他们利用源代码获得的利益。同著名的GPL许可证和BSD许可证相比,MPL在许多权利与义务的约定方面与它们相同(因为都是符合OSIA 认定的开源软件许可证)。但是,相比而言MPL还有以下几个显著的不同之处:
• MPL虽然要求对于经MPL许可证发布的源代码的修改也要以MPL许可证的方式再许可出来,以保证其他人可以在MPL的条款下共享源代码。但是,在MPL 许可证中对“发布”的定义是“以源代码方式发布的文件”,这就意味着MPL允许一个企业在自己已有的源代码库上加一个接口,除了接口程序的源代码以MPL 许可证的形式对外许可外,源代码库中的源代码就可以不用MPL许可证的方式强制对外许可。这些,就为借鉴别人的源代码用做自己商业软件开发的行为留了一个 豁口。
• MPL许可证第三条第7款中允许被许可人将经过MPL许可证获得的源代码同自己其他类型的代码混合得到自己的软件程序。
• 对软件专利的态度,MPL许可证不像GPL许可证那样明确表示反对软件专利,但是却明确要求源代码的提供者不能提供已经受专利保护的源代码(除非他本人是 专利权人,并书面向公众免费许可这些源代码),也不能在将这些源代码以开放源代码许可证形式许可后再去申请与这些源代码有关的专利。
• 对源代码的定义
• 而在MPL(1.1版本)许可证中,对源代码的定义是:“源代码指的是对作品进行修改最优先择 取的形式,它包括:所有模块的所有源程序,加上有关的接口的定义,加上控制可执行作品的安装和编译的‘原本’(原文为‘Script’),或者不是与初始 源代码显著不同的源代码就是被源代码贡献者选择的从公共领域可以得到的程序代码。”
• MPL许可证第3条有专门的一款是关于对源代码修改进行描述的规定,就是要求所有再发布者都得有一个专门的文件就对源代码程序修改的时间和修改的方式有描述。

  1. Common Development and Distribution License version 1.0 (CDDL-1.0)

  2. Eclipse Public License version 2.0

Eclipse Public License v1.0
EPL允许使用者任意使用、复制、分发、传播、展示、修改以及改后闭源的二次商业发布。
使用EPL协议,需要遵守以下规则:
1 当一个代码贡献者将源码的整体或部分再次开源发布的时候,必须继续遵循EPL开源协议来发布,而不能改用其他协议发布.除非你得到了原“源码”拥有者的授权;
2 EPL协议下,你可以将源码不做任何修改来商业发布.但如果你要发布修改后的源码,或者当你再发布的是二进制文件的时候,你必须声明它的源代码是可以获取的,而且要告知获取方法;
3 当你需要将EPL下的源码作为一部分跟其他私有的源码混和着成为一个Project发布的时候,你可以将整个Project/Product以私人的协议发布,但要声明哪一部分代码是EPL下的,而且声明那部分代码继续遵循EPL;
4 独立的模块(Separate Module),不需要开源。

参考地址:
1. 简书:关于开源的一些注意事项
2. 如何选择开源许可证?

澳门新葡8455最新网站 2视频截图。可以看到叠加在PPT界面上的帮助文本是英文:“Direct, Swipe Pan: Swipe to pan around...”

不管产品是免费向公众分发,还是出售,制定一份许可协议非常有用,否则,对于前者,你相当于放弃了自己所有的权利,任何人都没有义务表明你的原始作者身份,对于后者,你将不得不花费比开发更多的精力用来逐个处理用户的授权问题。

Citrix 公司,桌面传输和展现基于ICA 协议。

果壳网为此对约丹诺夫进行了专访,他在专访中表示,根据视频可以明确判断出透明桌面肯定使用了他的代码,而且他的代码在其中应该起了很重要的作用。但是,只要项目组愿意将他们的完整成果按照开源软件协议公开源代码,那就不算是违反了软件业的原则——不过,学术领域的原创性就另当别论了。

而开源许可协议使这些事情变得简单,开发者很容易向一个项目贡献自己的代码,它还可以保护你原始作者的身份,使你至少获得认可,开源许可协议还可以阻止其它人将某个产品据为己有。越来越多的开发者与设计者希望将自己的产品开源,以便其他人可以在他们的代码基础上做更多事,开源社区也因此充满生机。在我们所能想到的应用领域,都有开 源软件存在(象 WordPress,Drupal 这些开源CMS)。然而很多人对开源许可并不了解,本文介绍开源领域常用的几种许可协议以及它们之间的区别。

VMware 公司,桌面传输和展现基于PCoIP。

果壳网:你能简单介绍一下你的项目吗?

 

Red Hat 公司, 桌面传输和展现基于SPICE(simple protocol for independent computing environment)协议。

澳门新葡8455最新网站 3

虚拟桌面传输协议比较

澳门新葡8455最新网站 4

桌面传输和展现技术的对比


SPICE架构包括客户端、SPICE服务端和相应的QXL设备、QXL驱动等,如下图所示。客户
端运行在用户终端设备上,为用户提供桌面环境。SPICE服务端以动态连接库的形式与KVM虚拟
机整合,通过SPICE协议与客户端进行通信。

澳门新葡8455最新网站 5

SPICE协议架构

分为3个部分:

约丹诺夫:我的bVNC是一个虚拟网络计算(VNC)客户端,它是在远程桌面客户端代码库里的源代码基础上开发的。这个代码库里面还有好几个其他的项目——其中有一个名叫aRDP的远程桌面协议(RDP)客户端,一个名叫aSPICE的独立计算环境简单协议(SPICE)客户端,还有一个名叫Opaque的红帽企业虚拟平台开源版(oVirt/RHEV)客户端。这后两个软件包,可能就是透明桌面项目的基础。

Apache Licence 2.0

(1)QXL驱动:部署在服务器侧、提供虚拟桌面服务的虚拟机中,用于接收操作系统和应用程序的图形命令,并将其转换为KVM的QXL图形设备命令。

它允许用户连接到远程设备上运行的远程桌面,可以选择使用多种协议。目前支持的协议是VNC,RDP和SPICE这三种;除此之外,我的客户端还支持oVirt/RHEV架构,使用的是一个叫做libgovirt的红帽二进制库。而且,它还提供SSH隧道功能,提供额外安全性。

Apache 协议 2.0 和别的开源协议相比,除了为用户提供版权许可之外,还有专利许可,对于那些涉及专利内容的开发者而言,该协议最适合。

(2)SPICE客户端:部署在用户终端上的软件,负责显示虚拟桌面.同时接收终端外设的输入。

一旦连接到了远程桌面,用户就能输入文本或操纵鼠标和远程桌面互动。远程鼠标操纵可以使用多种输入模式,包括直接模式、模拟触控板模式和单手模式,每一种有不同的优缺点,取决于用户喜欢如何使用他们设备的触屏。

Apache 协议还有以下需要说明的地方:

(3)QXL设备:部署在KVM服务器虚拟化的Hypervisor中,用于处理各虚拟机发来的图形图像操作。

SPICE协议最大的特点是其架构中增加的位于Hypervisor中的QXL设备,本质上是KVM虚
拟化平台中通过软件实现的PCI显示设备,利用循环队列等数据结构供虚拟化平台上的多个虚拟
机共享实现了设备的虚拟化。但是,这种架构使得SPICE协议紧密地依赖于服务器虚拟化软/硬件基础设施,SPICE必须与KVM虚拟化环境绑定。传统的远程桌面传输协议工作在虚拟机Guest OS中,而SPICE协议本身运行在虚拟机服务器中,可以直接使用服务器的硬件资源。

1.1 SPICE协议核心技术

果壳网:你的项目的版权状况如何?

  • 永久权利 一旦被授权,永久拥有。
  • 全球范围的权利 在一个国家获得授权,适用于所有国家。假如你在美国,许可是从印度授权的,也没有问题。
  • 授权免费,且无版税 前期,后期均无任何费用。
  • 授权无排他性 任何人都可以获得授权
  • 授权不可撤消 一旦获得授权,没有任何人可以取消。比如,你基于该产品代码开发了衍生产品,你不用担心会在某一天被禁止使用该代码
自适应图形处理

SPICE客户端采用基于Cairo图形库的软件处理方式,使用CPU计算资源,提供2D图形数据的渲染处理能力。
同时也提供了基于GPU的硬件处理方法,在Iinux平台使用OpenGI。库,在Windows平台使用GDI接口。

约丹诺夫:我使用的授权是GPLv2或者v3,不同子项目版本有差异。这一授权允许别人在满足一定条件的情况下使用我的代码,具体条件可参见GPL相关条目。大致说来,这些条件可以部分概括如下:

分发代码方面包含一些要求,主要是,要在声明中对参与开发的人给予认可并包含一份许可协议原文。

分类压缩技术

SPICE提供了三种无损图像压缩算法,分别是Quic、LZ和Glz压缩算法。
针对视频流,SPICE采用了有损的压缩方式,SPICE服务端通过图形区域的刷新频率来侦测视
频区域,采用MJPEG压缩算法。

1.2 SPICE协议改进

如果有人在我的项目基础上创作了衍生作品,并且不是留作自己用,而是分发给别人,那他们必须把整个衍生作品的完整源代码也公布出来。而且,对于这些源代码他们只能使用GPL授权,不能换成别的授权。

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

SPICE协议的不足

在WAN环境下性能较差。
服务端读取指令延迟。
视频处理能力不足。
客户端启动缓慢。
客户端ACK延迟。

所以,他们的项目也应遵循GPL,具体什么版本取决于他们用了哪些子项目。bVNC,aRDP和aSPICE的协议是2版,而Opaque则是3版。

  1. 需要给代码的用户一份Apache Licence
  2. 如果你修改了代码,需要再被修改的文件中说明。
  3. 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
  4. 如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改。
SPICE协议的改进方案

压缩算法改进

澳门新葡8455最新网站 6

原始方案

澳门新葡8455最新网站 7

改进方案

优化视频数据传输方式(直接把视频数据以流媒体的方式发送到终端设
备的方法,避免服务端的解码操作)
图像渲染性能优化

关于GPL授权的详情,请参见这两个链接:

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

GNU GPL

通用性公开许可证(General Public License,简称GPL)。GPL同其它的自由软件许可证一样,许可社会公众享有运行、复制软件的自由;发行传播软件的自由;获得软件源码的自由,以及改进软件并将自己作出的改进版本向社会发行传播的自由。GPL还规定,只要这种修改文本的整体或者其某个部分来源于遵循GPL的程序,则该修改文本的整体就必须按照GPL流通,不仅该修改文本的源码必须向社会公开,而且对于这种修改文本的流通不准许附加修改者自己做出的限制。因此,遵循GPL流通的程序不能同非自由的软件合并。GPL所表达的这种流通规则称为copyleft,表示与copyright(版权)的概念“相左”。

果壳网:能否断言透明桌面项目组使用了你的代码?

GNU General Public Licence (GPL) 有可能是开源界最常用的许可模式。GPL 保证了所有开发者的权利,同时为使用者提供了足够的复制,分发,修改的权利:

约丹诺夫:是的,十分明显他们把我的软件整合到了他们的项目里,这从屏幕上的可绘制对象——Ctrl, Alt, Shift等等的位图按钮可以看出来,还有弹出的信息框(关于当前选择的输入模式的信息和分辨率)也能证明这一点。此外,他们所展示的功能,在我的软件里已经实现了。他们的项目的移动端和我的项目非常相似,几乎到了完全等同的地步(bordering on identical to my project)。

  • 可自由复制 你可以将软件复制到你的电脑,你客户的电脑,或者任何地方。复制份数没有任何限制。
  • 可自由分发 在你的网站提供下载,拷贝到U盘送人,或者将源代码打印出来从窗户扔出去(环保起见,请别这样做)。
  • 可以用来盈利 你可以在分发软件的时候收费,但你必须在收费前向你的客户提供该软件的 GNU GPL 许可协议,以便让他们知道,他们可以从别的渠道免费得到这份软件,以及你收费的理由。
  • 可自由修改 如果你想添加或删除某个功能,没问题,如果你想在别的项目中使用部分代码,也没问题,唯一的要求是,使用了这段代码的项目也必须使用 GPL 协议。

不过,我并没有下定论说他们是“盗窃”了这些代码。如果他们试图把源代码改换授权重新发布,或者发布了二进制软件而不同时发布源代码,那么这就算是盗窃,不过他们已经承诺不会这样做了。

需要注意的是,分发的时候,需要明确提供源代码和二进制文件,另外,用于某些程序的某些协议有一些问题和限制,你可以看一下 @PierreJoye 写的 Practical Guide to GPL Compliance 一文。使用 GPL 协议,你必须在源代码代码中包含相应信息,以及协议本身。

(编者注:此处的“承诺”,指的是认证微博账号“透明桌面项目组微博”在新浪微博发布的声明。)

我们很熟悉的Linux就是采用了GPL。GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代 码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种linux,包括商业公司的linux和linux上各种各样的由个人,组织,以及商 业软件公司开发的免费软件了。

话虽如此,鉴于他们获得了如此巨大的成功,如果他们能联系一下我,允许我参与进他们的项目组,我将十分荣幸——不过这并非我的明确要求。不管怎么说,如果没有我的工作,他们是没办法像现在这样在移动设备上展示他们的工作的。他们在透明桌面项目里展示的移动设备灵活性,大概是整个展示中最重要的一部分,而他们选择在视频的最后表演这一部分,大概是因为它的“哇哦指数”(wow-factor)最高吧。

GPL协议的主要内容是只要在一个软件中使用(“使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的“传染性”。GPL协议的产品作为一个单独的产品使用没有任何问题,还可以享受免费的优势。

果壳网:帮助文本也算吗?

由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。
GPL许可证是自由软件的应用最广泛的软件许可证,人们可以修改程式的一个或几个副本或程式的任何部分,以此形成基於这些程式的衍生作品。必须在修改过的档案中附有明显的说明:您修改了此一档案及任何修改的日期。 您必须让您发布或出版的作品,包括本程式的全部或一部分,或内含本程式的全部或部分所衍生的作品,允许第三方在此许可证条款下使用,并且不得因为此项授权行为而收费。 (这个似乎最严格,需要公开源代码)

约丹诺夫:这取决于帮助文本的授权。我的帮助文本和代码一样,是GPL授权的,也受限于以上所述同样的条件。这个例子里,我相信他们遵循授权就可以自由使用我的软件附带的帮助文本。

其它细节如再发布的时候需要伴随GPL协议等和BSD/Apache等类似。

果壳网:透明计算这个概念新吗?

GNU LGPL(GNU Lesser General Public License)

澳门新葡8455最新网站 ,约丹诺夫:现在透明计算这个想法已经不新了。VMWare(私有软件)和红帽(开源)各自都有一套方案,它们基本上都可以实现这个研究组所展现的内容。红帽的产品名为oVirt,和我的Opaque客户端联合使用,本质上就能达成他们所展示的所有功能。但由于语言因素,我无法准确得知他们研究组到底做出了哪些额外贡献,我非常希望他们能来联系我,甚至是寻求合作,这样让我能做出更大的贡献。

GNU 还有另外一种协议,叫做 LGPL (Lesser General Public Licence),它对产品所保留的权利比 GPL 少,总的来说,LGPL 适合那些用于非 GPL 或非开源产品的开源类库或框架。因为 GPL 要求,使用了 GPL 代码的产品必须也使用 GPL 协议,开发者不允许将 GPL 代码用于商业产品。LGPL 绕过了这一限制。

果壳网:如果GPL授权被违反了,开源社区会采取行动吗?

LGPL是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL 允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并 发布和销售。

约丹诺夫:鉴于透明桌面项目组出来澄清了他们的立场,并明确指出他们打算遵守GPL授权,我不认为开源社区会采取什么行动。不过,假如真的有人违反了GPL,那么一定会面对巨大的舆论谴责,广泛的讨论和声讨,甚至视具体情况有可能对簿公堂。但在这件事里我不认为这些会发生。

但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源 代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。

果壳网:你觉得他们如果不参考你的代码,能实现这些功能吗?

GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品。

约丹诺夫:实现任何功能都是有可能的,但代价是巨大的时间和人力。我认为他们的项目组在别人的成果基础上工作并不是什么过错——开源软件本来就是这样的呀!如果他们试图把这个想法当成完全原创的去宣传(对此我表示怀疑),那么这就是学术上的不端行为,但这和GPL授权的条款就没有关系了。就这个问题我没法发表评论,主要是因为语言障碍,我不能完全理解整件事情的来龙去脉。

BSD

果壳网:他们既然是使用了别人的代码,那有没有什么地方他们做得不好?

BSD 在软件分发方面的限制比别的开源协议(如 GNU GPL)要少。该协议有多种版本,最主要的版本有两个,新 BSD 协议与简单 BSD 协议,这两种协议经过修正,都和 GPL 兼容,并为开源组织所认可。

约丹诺夫:我注意到的一个奇怪的事情是,他们在移动端演示的输入法都是英文。我希望他们能开发一种输入汉字的办法。如果他们需要,可以来找我谈谈。我倒的确挺喜欢他们把用户有权访问的远程虚拟机展示出来的方式,我很希望这部分贡献也能反过来融合到我的项目里。

新 BSD 协议(3条款协议)在软件分发方面,除需要包含一份版权提示和免责声明之外,没有任何限制。另外,该协议还禁止拿开发者的名义为衍生产品背书,但简单 BSD 协议删除了这一条款。

果壳网:你的软件有多少用户呢?

BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。

约丹诺夫:我们的源代码库上的几个项目在Google Play、Blackberry World和Amazon App Store上都有下载。如果算上整个市场和所有子项目,那么迄今为止我的软件获得了250000次以上的独立下载。

但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:

果壳网:你为什么会想到做这个项目呢?

  1. 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
  2. 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
  3. 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。

约丹诺夫:有几个因素。

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

第一当然是迎接技术挑战、得到学习新技术的机会。这些项目和我作为职业程序员的全职工作完全不同,让我有机会能把时间用在全新的有趣的东西上。

MIT

第二是为全世界的人提供一项有益的服务。世界已经相互连通,把软件放在 Github这样的代码网站和Google Play、Blackberry World这样的应用市场上,能让它们很容易触及全球范围的用户,并产生影响。

MIT 协议可能是几大开源协议中最宽松的一个,除了必须包含许可声明外,再无任何限制,核心条款是:

第三是我想创造出能经历时间考验的软件,永远不会消失。对于私有软件,一次公司合并或者一次糟糕的商业决策,就能让它从市场上消失不见;但如果创造出优秀的开源软件,能和最好的私有软件竞争,这样的开源软件就能够永存。这也让年轻的程序员能从软件中学到东西,甚至为软件做出贡献。

该软件及其相关文档对所有人免费,可以任意处置,包括使用,复制,修改,合并,发表,分发,再授权,或者销售。唯一的限制是,软件中必须包含上述版权和许可提示。

这意味着:

  • 你可以自由使用,复制,修改,可以用于自己的项目。
  • 可以免费分发或用来盈利。
  • 唯一的限制是必须包含许可声明。

MIT是和BSD一样宽范的许可协议,作者只想保留版权,而无任何其他了限制。也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的。
Mozilla Public License

MPL License,允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者。这种授权维护了商业软件的利益,它要求基于这种软件得修改无偿贡献版权给该软件。这样,围绕该软件得所有代码得版权都集中在发起开发人得手中。但MPL是允许修改,无偿使用得。MPL软件对链接没有要求。

本文由澳门新葡8455最新网站发布于互联网,转载请注明出处:SPICE协议的理解,常见开源协议介绍

上一篇:从技术和业务视角,知悉数据平台 下一篇:没有了
猜你喜欢
热门排行
精彩图文