GPL许可协议的主旨是说,如果你的软件使用了受GPL保护的代码,那么你的软件源代码也要公开出来。不同的开发者对GPL条款的诠释有所偏重,但不管怎样,遵循GPL协议是要付出一定代价的。Automattic创始人Matt Mullenweg和竞争对手Wix之间展开了一场关于违反GPL协议的骂战,由此可以引起我们对GPL许可协议的一些思考。
Automattic创始人Matt Mullenweg下载了一款由竞争对手Wix开发的iOS应用,他觉得这款应用看起来很眼熟,后来确认这款应用使用了来自WordPress的代码。于是他在博客上与对方展开争论,直指要点:
“你们应用里的编辑器使用了剽窃的代码,所以整个应用违反了GPL协议。”
Wix的CEO Avishai Abrahami没有针对此事做出正面回应,试图回避他们在产品里使用了未付费源代码的事实。他的一个工程师员工也避开正面回应,在是否违反协议的问题上纠缠不清,不愿意直接承担剽窃代码的后果。
有些人对使用“剽窃代码”和“窃贼”这样的字眼来形容违反GPL协议的行为有些异议,不过事实就是如此:源代码出现在Wix的产品里已成事实,但Wix并没有为此付出任何代价。
很多开发者(包括CEO)对使用受GPL保护的代码所产生的后果装作不在意。他们从对自己有利的角度来解释GPL条款:
“使用GPL代码没有任何问题,只要我们把改动的代码也贡献出来。”
“我们只使用了少量受GPL保护的代码,所以我们有权使用它们。”
“我们通过其它方式回报社区,这样就平衡了。”
以上这些说法,包括其它很多对GPL的误读,以及Wix CEO和他的工程师员工的辩解,都不符合GPL的协议精神。
遵循GPL协议的所要承担的义务是显而易见的,尽管有人在“链接代码”问题上争论不休。GPL的主旨很容易理解:如果你在自己的软件里使用了受GPL保护的代码,那么你也要公开自己的代码。在遵循GPL协议的前提下,你要把源代码提供给那些安装了你的软件的人。公开你的代码,这就是遵循GPL协议需要付出的代价。
大部分开发者认为为GPL付出的代价是完全合乎情理的,不过有些人则无法接受。这个需要在从他人的代码中获取的好处与公开你的代码造成的损失之间做出权衡。
英语原文:The Price of GPL
编译:Infoq
引用来自“Skiychan”的评论
意思是说,要是网站某个地方用了GPL协议的框架,就得把整个网站都开源出来吗?引用来自“getchoco”的评论
显然不是,依赖这个框架跟直接修改是两回事引用来自“Skiychan”的评论
我意思是,假如我网站里面只有一个静态页面里用了基于GPL的jquery(假设的),然后整个网站都要开源吗?引用来自“Raphael_goh”的评论
不需要1. 你没有修改jQuery本身
2. 你生产的代码是部署在自己服务器上的,而不是给别人使用的,所以不需要开源整个站点。
(可以说这算是GPL的一个漏洞,所以有一个叫AGPL的协议,不管软件有没有发布,只要你用了就必须开源,主要就是针对WEB服务的)
引用来自“Skiychan”的评论
无论是 GPL v2 还是 v3,第2个答案都成立吗?另外,不是给别人使用的意思是:
1. 这个站点不是卖给别人用的?
2.我做的这个站点 会员可以在网站上进行日志发布,商品发布?
对外提供服务这种gpl管不到,所以才有了AGPL
引用来自“张立鑫”的评论
包装一下就可以了,把要使用的代码创建一个新项目并GPL开源,然后再使用自己GPL开源的项目就不用把整个项目开源,我真聪明引用来自“xausky”的评论
不行的,你这个只能用于lgpl,gpl具有传播性,没法这样规避。引用来自“Skiychan”的评论
意思是说,要是网站某个地方用了GPL协议的框架,就得把整个网站都开源出来吗?引用来自“getchoco”的评论
显然不是,依赖这个框架跟直接修改是两回事引用来自“Skiychan”的评论
我意思是,假如我网站里面只有一个静态页面里用了基于GPL的jquery(假设的),然后整个网站都要开源吗?引用来自“Raphael_goh”的评论
不需要1. 你没有修改jQuery本身
2. 你生产的代码是部署在自己服务器上的,而不是给别人使用的,所以不需要开源整个站点。
(可以说这算是GPL的一个漏洞,所以有一个叫AGPL的协议,不管软件有没有发布,只要你用了就必须开源,主要就是针对WEB服务的)
引用来自“Skiychan”的评论
无论是 GPL v2 还是 v3,第2个答案都成立吗?另外,不是给别人使用的意思是:
1. 这个站点不是卖给别人用的?
2.我做的这个站点 会员可以在网站上进行日志发布,商品发布?
引用来自“Skiychan”的评论
意思是说,要是网站某个地方用了GPL协议的框架,就得把整个网站都开源出来吗?引用来自“getchoco”的评论
显然不是,依赖这个框架跟直接修改是两回事引用来自“张亦俊”的评论
也不是你这么一刀切的,GPL有V2和V3,V2对于动态链接(调用框架)的行为是不限制的,V3对于这件事是限制的。如果框架用的是GPL V3,那确实得把整个网站开源。最后回归一下法律层面的事,GPL是用英文写的授权,基于美国的著作权法,我国的著作权法跟美国的也类似,但是如果真的要对薄公堂,英文写的授权会很麻烦,要保证权益还是去写一份中文的授权更靠谱。引用来自“PHPOK企业站”的评论
其实我一直很纠结的,我一直理解的GPL就是,我用了这个协议的软件,我也软件也只能用于这个协议!然后我只能从其他服务方面赚钱!软件开发本身不赚钱的:)——我一直都是这么理解的!引用来自“Skiychan”的评论
意思是说,要是网站某个地方用了GPL协议的框架,就得把整个网站都开源出来吗?引用来自“getchoco”的评论
显然不是,依赖这个框架跟直接修改是两回事引用来自“Skiychan”的评论
我意思是,假如我网站里面只有一个静态页面里用了基于GPL的jquery(假设的),然后整个网站都要开源吗?1. 你没有修改jQuery本身
2. 你生产的代码是部署在自己服务器上的,而不是给别人使用的,所以不需要开源整个站点。
(可以说这算是GPL的一个漏洞,所以有一个叫AGPL的协议,不管软件有没有发布,只要你用了就必须开源,主要就是针对WEB服务的)
引用来自“张立鑫”的评论
包装一下就可以了,把要使用的代码创建一个新项目并GPL开源,然后再使用自己GPL开源的项目就不用把整个项目开源,我真聪明引用来自“Skiychan”的评论
意思是说,要是网站某个地方用了GPL协议的框架,就得把整个网站都开源出来吗?引用来自“getchoco”的评论
显然不是,依赖这个框架跟直接修改是两回事引用来自“SY泷涯”的评论
如果实在无法接受就不用,没人逼你要用GPL的代码引用来自“Skiychan”的评论
意思是说,要是网站某个地方用了GPL协议的框架,就得把整个网站都开源出来吗?(奇怪我刚刚发的被吞了?