关于GPL协议的理解(开源与商用、免费与收费)

如果你使用并且修改了我的GPL软件,那么你的软件也必须要开源,否则就不能使用我的软件,你是否把你的软件商用和我没关系。比如,Oracle卖的不是软件的版权,而是技术服务。MySQL作为一个开源数据库,几乎所有的用户都只是通过自己的程序去操作这个数据库,而不是改动源码,所以根本不用去考虑是否要遵循GPL,只有在你修改了MySQL源码的情况下,才要考虑GPL。

导读:

网络上多数朋友担心甲骨文会对MySQL软件采用收费模式,多数朋友也不清楚MySQL开源到底是什么模式,开源=免费嘛?是很多的疑 问,MySQL是遵守双重协议的,一个是GPL授权协议,一个是商用授权协议(注释:为解决其他企业用MySQL软件牟利或引用了MySQL的源代码而不 想开源),虽然www.mysqlops.com也有写关于MySQL版权的来龙去脉,但是这篇文章写更透彻与详尽,特转载ITPUB上的帖子,希望大家 能够更加清晰!

最近刚把MySQL和GPL的玩法搞明白,很是惭愧,居然花了这么久的时间才想通。不过聊以自慰的是,搞明白这个玩法的人真是不多,尽管有些人已经搞了很多年。

看过GPL协议的人应该都会觉得一头雾水,究竟GPL在讲些什么。我看过好几遍,英文的原版、中文的各种译文,都没能真正理解,后来是从软件行业的 历史等等方面综合考虑,才算是理解了。先总结一下我对GPL的理解,我认为GPL的精髓就是开源,和是否商用,是否收费完全没有关系。GPL(General Public License), 其实从字面上就可以理解为公共许可证,也就是说遵循GPL的软件是公共的,其实不存在什么版权问题,或者说公众都有版权,GPL提出了和版权 (copyright)完全相反的概念(copyleft)。而我经常听到的说法是如果你的程序或系统引用了别的GPL软件,并且向用户收费,那么你就需 要向引用的GPL软件购买版权。听上去很合理,如果你用我的软件赚钱,那你当然应该向我支付一定的费用。但其实是错误的,正确的概念是如果你用了我的 GPL软件,那么必须你的软件也要开源,如果你不开源,那么就不能使用我的软件,你是否把你的软件商用和我没关系,如果你不能遵循GPL协议来开源,那么你付再多的钱也不能用GPL的软件, 事实上很多GPL软件是很多人共同完成的,每个人在前人的基础上做出自己的贡献,如果收费的话你把钱交给谁?提出 GPL协议的GNU希望做到的是通过开源来使软件行业得到一个好的发展,试想如果你要做一个大型的软件,不在前人的源码基础上开发,那必然会是旷日持久 的,也会有很多重复劳动,显然不利于软件技术的发展。所以理解了GNU的精神,也就能理解GPL在说些什么,其实就是开源。在现实生活中,我们受益于 GPL的地方,其实很多,几乎所有的操作系统,除了windows,其他的几乎都是基于linux开源代码改写的。

再来谈MySQL,这是个开源的数据库,做技术的应该都知道。MySQL最早是瑞典的一家叫做MySQL AB的公司开发的,它是以双授权的方式来发布MySQL。一种授权就是GPL,另一种授权就是商业授权。也就是如果你不能满足GPL,那么就走商业授权的 路线,向这个公司交钱。我觉得这公司有挂羊头卖狗肉之嫌,想借着GPL快速传播它的软件,但又留着商业授权这个收费的口。后来这家公司以10亿美金的价格 被Sun收购,接着Sun又被Oracle收购,MySQL成为了Oracle的东西。现在Oracle把MySQL分为三种产品,标准版、企业版和集群 版。不谈其中具体的差异,但都是以年度订阅(subscription)的方式来卖的。这个subscription引起了我的疑问,如果用户购买了一 年,那么第二年用户还要继续付费才能合法使用?这三种版本都包含了一年的服务,那么如果第二年用户只需要用软件而不需要服务,怎么办?Oracle官方没 有一个说得过去的说法。后来我想通了,其实Oracle卖的不是软件的版权,也不是寂寞,而是技术服务。所 有的GPL开源软件都不能卖版权,因为是公共版 权,当然不能卖了。所以像redhat这类的开源软件都是用subscription的方式来赚钱的。赚钱其实是合法的,GPL协议里面写了“Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish)我们的GNU通用公共许可证决意保证你有发布自由软件的自由(如果你愿意,你可以对此项服务收取一定的费用)”。但现在大众的误区是觉得购买的 是软件产品的版权而不是服务。其实你要用GPL软件在绝大部分情况下都是合法的,不存在版权问题,那么在什么情况下才算是非法的呢?

前文一直提到“用”GPL软件的情况,这个“用”可能并不合适,GPL的原文“the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program”保证你的共享和修改自由软件的自由”。可以理解为你使用开源软件并不受GPL约束,只有在你基于开源软件,修改开源软件的源码的时候才受 GPL约束。MySQL作为一个开源数据库,几乎所有的用户都只是通过自己的程序去操作这个数据库,不涉及到改动源码的问题,根本不用去考虑是否要遵循 GPL的问题。只有在你修改MySQL源码的情况下,才需要考虑GPL。

如果我根据MySQL的源码开发出了一个新的数据库,我觉得自己开发的源码非常的优秀,想靠这个卖钱,不想公开源码。那么这种情况就无法满足GPL 的规定,我没法发布我的数据库。好在MySQL有个非常流氓的双授权,我就可以购买其商业授权来达到我的目的。为什么说这是流氓行为?因为既然MySQL 是根据GPL开源发布,多多少少有各路人马贡献自己的源码才成为今天的MySQL,卖别人的劳动成果来让自己受益,这就是流氓的做法。

所以GPL就是一个为了保护软件自由的一个协议,它强调的是开源,与钱无关。MySQL是一个双授权的软件,Oracle现在卖的是年度的服务(编者加注:另外主要收入来源是销售数据库维护工具), 如果你只是使用MySQL而不是改写MySQL,那么在这些情况下你应该考虑购买Oracle的商业版本,一是Oracle的商用版本提供的附加组件(监 控器、备份工具等)对你有价值,二是Oracle的年度技术支持是你需要的,三是各种潜规则。而不应该是你想合法的使用MySQL才去购买其商业版本。另 外,如果你是基于MySQL的源码开发你自己的产品,那么你需要购买的是商业授权,而不是subscription这些商业版本。

转自:http://blog.csdn.net/szwangdf/article/details/27191085

原文地址:https://www.cnblogs.com/goldenstones/p/8780091.html

时间: 2024-08-28 03:33:43

关于GPL协议的理解(开源与商用、免费与收费)的相关文章

关于GPL协议的理解(开源与商用、免费与收费的理解)

编者:请特别注意看暗红色粗体标注的那几句话,总结下来有下面几点: 如果你用了我的 GPL软件,那么你的软件也必须要开源,否则就不能使用我的软件,你是否把你的软件商用和我没关系 Oracle 卖的不是软件的版权,而是技术服务 MySQL作为一个开源数据库,几乎所有的用户都只是通过自己的程序去操作这个数据库,不涉及到改动源码的问题,根本不用去考虑是否要遵循 GPL的问题. 只有在你修改MySQL源码的情况下,才需要考虑GPL 导读: 网络上多数朋友担心甲骨文会对MySQL软件采用收费模式,多数朋友也

GPL协议的MySQL数据库

网络上多数朋友担心甲骨文会对MySQL软件采用收费模式,多数朋友也不清楚MySQL开源到底是什么模式,开源=免费嘛?是很多的疑问?MySQL是遵守双重协议的,一个是GPL授权协议,一个是商用授权协议(注释:为解决其他企业用MySQL软件牟利或引用了MySQL的源代码而不想开源),虽然mysqlops也有写关于MySQL版权的来龙去脉,但是这篇文章写更透彻与详尽,特转载ITPUB上的帖子,希望大家能够更加清晰! 如果你用了我的 GPL软件,那么你的软件也必须要开源,否则就不能使用我的软件,你是否把

GPL协议

GPL-General Public License 它是自由软件许可(Free Software Licence),保证最终使用者能够自由的引用,学习,拷贝,甚至修改软件.在理解这之前需要了解什么是copyleft CopyLeft 相比copyright,copyleft指向的是自由软件.[任何不受版权法保护的东西是不能赋予 copyleft特性的,也就不能适用copyleft协议]自由软件之于copyleft,相当于作品之于copyright.Free Soft中的Free的含义在于“自由

Http协议与TCP协议简单理解

在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解. TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求.Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的.所以Http连接是一种短连接,是一种无状态的连接.所谓的无状态,是指浏览器每次向服务器发起请求的时候,

(转)基于即时通信和LBS技术的位置感知服务(二):XMPP协议总结以及开源解决方案

在<基于即时通信和LBS技术的位置感知服务(一):提出问题及解决方案>一文中,提到尝试使用XMPP协议来实现即时通信.本文将对XMPP协议框架以及相关的C/S架构进行介绍,协议的底层实现不再本文的讨论范围. 一.什么是XMPP? 介 绍XMPP之前,我们先来聊聊GTalk.GTalk是Google推出的IM(Instant Messaging,即时通讯)软件,类似于QQ和MSN.从技术角度来说,GTalk与QQ和MSN的差异是使用了不同的通讯协议,QQ使用了自己的私 有协议(未公开),MSN也

对OAuth1.0协议的理解

OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用.协议地址为:http://oauth.net/core/1.0/#rfc.section.A.5 研究的是OAuth1.0,因为2.0褒贬不一,连创始人都宣布脱离关系了...而1.0基本各个大网站都支持的不错 具体举个例子: 比如我们手机用虾米app来听歌,想要登录虾米但又不想注册一个新的账号,可以选择第三方登录,也就是用微博号登录.

基于HTTP协议的轻量级开源简单队列服务:HTTPSQS[转]

HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key/Value 数据库来做数据的持久化存储. 项目网址:http://code.google.com/p/httpsqs/ 使用文档:http://blog.zyan.cc/httpsqs/ 使用环境:Linux(同时支持32位.64位操作系统,推荐使用64位操作系统) 软件作者:张宴 队列(Queu

简述Socket,IP,TCP三次握手,HTTP协议(有助于理解、记忆和学习)

我在这里简述Socket,IP,TCP三次握手,HTTP协议(有助于理解.记忆和学习面试时方便回答) 1.socket原理 Socket支持网上点对点的通信 服务的一种技术,服务端端实现监听连接.client实现发送连接请求,建立连接后进行发送和接收数据. 服务器端建立一个serversocket.设置好本机的ip和监听的port与socket进行绑定,并開始监听连接请求,当接收到连接请求后,发送确认,同client建立连接.開始与client进行通信. client建立一个socket.设置好

开源不是免费的午餐,新变化背后的趋势是什么?

到目前为止的科技创业创新还是以软件为核心,这是因为硬件本质上是把软件固化,而且硬件的创新创业成本相对比较高.周期长.壁垒高.挑战也大.对于很多创业公司来说,软件开发就是站在巨人的肩膀上进行弯道超车的机会,而这个"巨人"的肩膀在很多时候就是指开源软件. 开源软件意味着四种自由:第一,不管出于何种目的,都可自由运营程序:第二,自由研究软件运行机制,按照自身需求自由修改:第三,自由传播副本,帮助他人:第四,自由改进程序,公开发布修改成果,造福整个社区.当然,相应有开源许可证,作为商业使用或者