为什么越来越少的开源项目使用 GPL 协议

来源: 投稿
作者: 王练
2017-02-17

前段时间,我在 RedMonk 上看到了一篇来自 Stephen O'Grady 的有趣推文,介绍了开源许可证目前的状态,以及此图表:

此图展示了从2010年到2017年开源许可证的使用情况。能很明显看到,GPL 2.0 的使用量已经减少了一半以上,更多的开发人员转向使用 MIT 和 Apache 许可证。而 GPL 3.0 有小幅增长。

所以,为什么?

当然,原因自然有很多,而我的猜测是,这主要是由于开源商业化的趋势,而 GPL 相对不具商业友好性。

GPL & 商业

在开始之前,必须申明:我是一个 GPL 支持者,我所写的软件都是在 GPL 协议之下开源的。这篇文章也不是为了强调 GPL 的实用性和价值,更多的是想分享自己对于行业和许可的认知。

四年前,我参加了一年一度的 Open Source Think Tank 。这是在加利福尼亚举办的一个小型的开源行业高管聚会,主要关注的是网络、建立联盟、确定和解决行业问题。聚会上有一个小组案例研究环节,参会者会被分成多个小组,并被要求推荐一个目前正被广泛使用的开源协议。我惊讶的发现,这些小组给出的建议中没有 GPL。

所以说,当时业界就已经有对 Apache 和 MIT 许可证的倾向趋势了。2015年 GitHub 许可研究也发现,MIT 许可证已成为最主要的一个选择。 在我的 XPRIZE 工作和作为社区顾问的工作中,我也看到了一个类似的现象,许多客户对于用 GPL 许可他们的代码表示不舒服。

社区 & 企业

说实话,GPL 人气不断下降并不很令人惊讶。

首先,随着开源产业的发展,大家都已经清楚的发现,找到社区参与的平衡以及客户需求的商业模式极为重要。在开源早期有一个误解,“如果你建立一个开源项目,客户就会来。确实,他们会经常来使用你的软件。但在大多情况下,他们不会给你钱”。

随着时间的推移,我们看到各种公司,如红帽、Automattic、Docker、Canonical、Digital Ocean 等等,都在探索不同的开源方式来实现盈利。包括分发模式,服务模式,开放核心模式等等。可以很清楚的是,传统的软件稀缺模式并不适用于开源项目,在收入和免费之间取得平衡对许多人来非常困难。

GPL 虽然是开源许可证,但它基本上是一个自由软件许可证。作为自由软件许可证,对 GPL 的管理和支持大部分是由自由软件基金会推动的,他们最终的焦点都是从软件绝对必须 100% 自由的角度出发。他们没有太多的妥协空间,甚至许多公认的开源项目(例如很多 Linux 发行版)都因为一小部分二进制固件而被认为是“非自由”。很少有企业认可自由软件基金会(或类似的组织)这种纯粹的意识,因此我怀疑企业不太愿意选择一个如此纯粹的许可证。

另外一个影响 GPL 使用的原因,我认为是随着增长开源的目的不再纯粹。在早期,开源项目建立的核心根本之一是关注开放性和软件自由性。 GPL 对于这类项目来说是一个非常自然的选择,如 Debian、Ubuntu、Fedora、Linux 等等。但近年来,我们已经看到了更新一代的开发形式,对他们来说自由什么的可能不太重要,开源是为了完成命令,又或者只是为了开放某个软件的一个组件。我觉得这也是为什么越来越多的使用 MIT 和 Apache 许可证的原因之一。

未来?

说到底,这对 GPL 意味着什么?

我认为,GPL 将继续是一个备受欢迎的许可证,但开发人员将越来越多地将其看成是一个纯粹的自由软件许可证。 对软件自由有道德承诺的项目将优先考虑 GPL ,但对于前面讨论的需要考虑平衡的企业,还是会更愿意使用 MIT 和 Apache 许可证。

无论如何,看到开源和自由软件在不断增长是非常令人兴奋的事情。虽然许可证的使用方式可能存在复杂性和变化,但对我们来说,更重要的是技术在日益变得越来越开放,每个人都可以去使用。

你最喜欢哪个许可证,或者你开源的项目正在使用的是哪个许可证?欢迎在下方评论区留言。

编译自:opensource.com

展开阅读全文
29 收藏
分享
加载中
精彩评论
其实不足为奇,早期自由软件运动解决的都是操作系统,基础软件,基础的类库,这样的软件用GPL,可以最大程度上保证软件的自由度。自由软件和开源软件发展到今天,基础性的软件都已经差不多了。更多的是面向应用的软件。这样的软件使用GPL强制开放代码,就不合适了。
2017-02-17 08:22
16
举报
以前的开源是纯粹为了分享,而GPL是为了防止有“拿来主义”,现在的开源是做成了诱饵,他们开源出来是为了无偿获取外界的劳动,当然不肯继承GPL协议,于是就兴起了MIT。上演了一出劣币驱逐良币的好戏,他们的目标怎么可能会是开源,廉价劳动力才是目的
2017-02-17 08:32
13
举报
Gnu/Screen的复活说明Gnu有其强大的生命力,如果一个人不想让自己的智力活动最终被公司买去,用完价值就扔进垃圾堆的话,那还是应该加入到一个能让软件系统自由进化的世界,毕竟在那里会留下你的痕迹和价值,即使没有价值,但终归还是一种成长路上的价值
2017-02-17 11:21
3
举报
开源在伸手党眼里就是免费的啤酒,它想喝的时候你还得为它开盖,觉得不好喝还要吐你一脸.

GPL系列授权协议能比较好地保护开源软件和开源软件厂商.

AGPL是比GPL更严格的开源协议,可以理解为修改了原有程序代码,不管你发布与否,都必须开源. 比GPL更严格的AGPL协议主要针对的是那些把GPL软件当作服务(SaaS)来提供而规避开源的公司. 当然,也可以让那些自己不想开源却又想利用人家的开源产品赚钱的伸手党缩手. GPL/AGPL软件开发商可以额外提供不需要开源代码的商业授权实现营收. 比如采用GPL授权的MySQL和采用AGPL授权的MongoDB.

比方说,你开发了一套商城,以GPL开源,那你的竞争对手就可以直接拿你的程序提供SaaS服务却不违反授权协议,换成AGPL协议后只要部署了程序开放访问,也得开源,不想开源,那好,你可以购买商业授权.也就是说AGPL特别适合搭配商业授权使用.AGPL下你可以用,你可以学,可以借鉴参考,但不可以据为己有.

真要让用户爱怎么用怎么用,除了用"DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE ",不是还可以像SQLite用Public Domain么?
2017-02-17 15:37
2
举报

引用来自“开源春哥”的评论

其实不足为奇,早期自由软件运动解决的都是操作系统,基础软件,基础的类库,这样的软件用GPL,可以最大程度上保证软件的自由度。自由软件和开源软件发展到今天,基础性的软件都已经差不多了。更多的是面向应用的软件。这样的软件使用GPL强制开放代码,就不合适了。

引用来自“海诺者”的评论

@开源春哥 同意你的看法,感觉开源更多的只是开放 商业属性决定了,它不是自由软件 ,开放之规定了 源代码的释放 并没有说明 代码使用受限情况或者隐含说明代码使用受xxx制限

引用来自“我的上铺叫路遥”的评论

那为啥LGPL也没兴起呢?
Library之类的类库现在都用MIT这样宽松的协议了。LGPL在这方面其实没有什么优势了。
一个类库如果不可被替代,可以用GPL保证其自由性。
一个类库如果可以被替代,用LGPL反而显得多此一举了,用MIT会更友好。
2017-02-17 11:17
1
举报
最新评论 (26)
我喜欢GPL和MIT许可证,前者可以保护好软件的自由度不被破坏,后者适合那些小型的自由软件。我始终认为GPL是最完美的自由软件许可证,它的CopyLeft特性,可以使得用户得到基于同样授权方式的衍生版自由软件,不允许私有化是对自由的保障,而且对于原作者来说,这样可以去查看修改版的代码,以便更好的改进原版!
2017-05-19 17:02
0
回复
举报
我认为,GPL的纯自由软件的许可方式更适合公益性的,非盈利性质的软件作品,不适合商业。程序员在业余时间开发的非营利性质的软件,使用GPL或者AGPL是再好不过的。☺
软件等作品未必就一定是要用来赚钱的,也可以是非盈利的,公益性的。抽出一些休息时间,开发一些GPL/AGPL自由软件,带给全世界人的大量的好处,当然是非常棒的。
2017-05-12 15:07
0
回复
举报
其实,很简单,apache是好多开源网站的默认选项,对大部分人来说,哪个协议没多大影响。
2017-03-21 00:02
0
回复
举报
总之,如果看到是以gpl协议写的代码,通常质量是可以接受的,有保证的。而按apache/mit协议写的代码,普遍代码质量参差不齐,使用不是很放心。
2017-02-19 09:07
0
回复
举报
所以,严谨而不考虑商业化的开源作者,都会使用gpl。当然一旦使用gpl,要再商业化,那是晕头转脑的事情,gpl协议开宗明义不喜欢商业化,还要求代码要保证质量。。。
2017-02-19 08:39
0
回复
举报
总之,那些希望保护自己开发成果的,就使用gpl协议,而那些喜欢炫技术的,就会使用宽松多的协议,这最著名的就是sqlite,想咋用都行,当然官网的sqlite是有保证的,其它乱改的sqlite就没保证了。而按照gpl协议的各种分支代码,都不得不提供保证,否则就违反gpl协议,是可能会被告上法庭的。
2017-02-19 08:36
0
回复
举报
对于开源作者来说Apache比MIT好一点, 分享来说MIT更自由
2017-02-17 16:36
0
回复
举报
开源在伸手党眼里就是免费的啤酒,它想喝的时候你还得为它开盖,觉得不好喝还要吐你一脸.

GPL系列授权协议能比较好地保护开源软件和开源软件厂商.

AGPL是比GPL更严格的开源协议,可以理解为修改了原有程序代码,不管你发布与否,都必须开源. 比GPL更严格的AGPL协议主要针对的是那些把GPL软件当作服务(SaaS)来提供而规避开源的公司. 当然,也可以让那些自己不想开源却又想利用人家的开源产品赚钱的伸手党缩手. GPL/AGPL软件开发商可以额外提供不需要开源代码的商业授权实现营收. 比如采用GPL授权的MySQL和采用AGPL授权的MongoDB.

比方说,你开发了一套商城,以GPL开源,那你的竞争对手就可以直接拿你的程序提供SaaS服务却不违反授权协议,换成AGPL协议后只要部署了程序开放访问,也得开源,不想开源,那好,你可以购买商业授权.也就是说AGPL特别适合搭配商业授权使用.AGPL下你可以用,你可以学,可以借鉴参考,但不可以据为己有.

真要让用户爱怎么用怎么用,除了用"DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE ",不是还可以像SQLite用Public Domain么?
2017-02-17 15:37
2
回复
举报
更多评论
26 评论
29 收藏
分享
返回顶部
顶部