技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 其他 --> 为什么GPL是更好的开源许可证?

为什么GPL是更好的开源许可证?

浏览:3079次  出处信息

    1.

    让我从一件新闻讲起。

    2009年,计算机业界发生了一件大事:甲骨文公司以74亿美元收购SUN公司。

    

    消息宣布后,有一个人坚决反对这笔交易。他叫Michael Widenius,是数据库软件MySQL的主要创始人。

    

    他为什么要反对呢?因为MySQL现在归SUN公司所有,一旦收购成功,就将属于甲骨文公司所有。但是,后者的主要产品是Oracle数据库,与MySQL是竞争关系。所以,甲骨文公司不可能扶持MySQL的后继开发,甚至有可能杀死MySQL。

    Michael Widenius不能接受这个事实,他发起万人签名,提交请愿书,要求欧盟委员会否决这项交易。具体情况可以参见HelpMysql.org

    

    2.

    去年12月28日,他写了一篇很长的文章“Help keep the internet free”,解释为什么反对这项交易。他是这样写的:

    "If Oracle were allowed to acquire MySQL, we would be looking at less competition among databases, which will mean higher license and support prices."

    “如果甲骨文得到了MySQL,数据库市场的竞争将会减少,最终导致更高的价格和收费。”

    你觉得这句话对不对?

    我觉得不对。我认为,甲骨文公司杀不死MySQL,数据库市场的竞争不可能减少。这并非由于甲骨文公司不想这样做,而是因为MySQL是无论如何都不可能被杀死的(假定始终存在市场需求的话)。

    3.

    为什么MySQL是杀不死的?

    答案非常简单。因为它的许可证是GPL。

    GPL明确规定,任何源码的衍生产品,如果对外发布,都必须保持同样的许可证。这就是说,任何人只要发布MySQL的修改版本,他就必须公开源码,并且同意他人可以自由地复制和分发。

    现在让我们假想一下:

    第一种情况:甲骨文公司决定中止MySQL的开发,会怎么样?

    一定会有其他人接手,继续推出MySQL的后续版本,这是GPL许可证允许的,完全合法。虽然不能再叫MySQL这个名字,但是只要代码完全兼容,名字又有什么关系呢。事实上,Michael Widenius自己的公司,现在的产品MariaDB就是基于MySQL的。

    第二种情况:甲骨文公司决定,MySQL的后续版本不再开源,或者整体并入Oracle数据库,会怎么样?

    答案更简单,不可能发生这种情况。因为根据GPL许可证,只要发布基于原代码的新产品,就一定必须开源。

    4.

    所以,我实际上觉得,Michael Widenius没有竭力反对的必要。不管甲骨文干什么,MySQL都不可能灭绝。

    相反的,真正感到倒霉的人,应该是甲骨文公司才对,因为它花钱买来自己无法控制的财产。任何的代码,只要置于GPL之下,就不再受作者或所有者控制了,想杀也杀不死了。

    5.

    如果一个程序员想将自己的代码开源,他有许多种选择,大致可以分成三类:

      1. 选择GPL许可证,要求衍生代码必须开源。

      2. 将代码放入“公共领域”(public domain),彻底放弃版权。

      3. 选择更宽松的许可证,比如BSD和Apache许可证,不要求衍生代码开源。

    许多人认为,选择后两种做法比选择GPL更值得赞扬,因为更加大公无私。但是,这样的看法是错误的,实际上GPL要好于后两种选择。

    让我们再来假想一下,如果MySQL的源码处于公共领域,或者BSD许可证之下,那会怎样?

    那样的话,许多站长恐怕都会感到大难临头了。他们不得不做出选择,将来到底是升级到第三方小公司推出的、质量没有保证、支持力量薄弱、互相不兼容的基于MySQL 5.x版本的各种衍生数据库,还是升级到甲骨文公司推出的、与Oracle兼容的、号称具备各种新功能和最佳性能、并且广告满天飞的MySQL 6.0版本。

    在BSD许可证或者公共领域代码的情况下,甲骨文公司可以从容地将MySQL 6.0变为闭源产品,推出你只有花钱才能买到的新特性和后继版本,并且只要你复制给他人使用,就要起诉你。使用开源软件的用户,将因此变为依赖甲骨文公司的用户。只有这种情况发生,才真正有必要,竭力反对甲骨文收购SUN公司。

    当程序员放弃代码的版权,或者选择BSD许可证,他可能认为自己做出了世界上最无私的行为。很大程度上,事实确实如此。但是,我们要知道,这个世界是一个商业利益占主导的世界。一旦发生像甲骨文拥有MySQL这一类的事情,你的代码的价值将大大削弱,大公司先是免费利用它们,然后再设法推出取代它们的私有产品。你以为自己奉献了爱心,但是实质上变成了为大公司无偿打工。

    从这个角度看,GPL是更好的开源许可证。它保证了自由始终是自由,既无法被剥夺,也不是一种圈套或陷阱。

    6.

    有的朋友读到这里,可能会提出疑问。如果GPL许可证真的这么好,那么为什么GNU基金会还推出了LGPL许可证

    所谓LGPL许可证,全称是Lesser General Public License,直译就是“限制更少的GPL许可证”,1991年时与GPL(第二版)同时发布。它近似于BSD许可证,允许将代码用于闭源产品。

    这就产生了一个很有趣的问题。为什么像Richard Stallman这种坚持自由丝毫不可侵犯的人,会同意将自己的代码用于闭源产品?

    说起来,这其实是他的策略,主要与GNU C library有关。1991年的时候,市场上有很多C语言库可以选择。如果GNU的C库是GPL许可证,那么很多私有软件不会选择它,因为一旦选择了它,就意味产品本身一定要开源。所以为了保证开源软件得到使用和推广,并且闭源软件中有开源的成分,总比一点没有好,所以才诞生了LGPL许可证。

    Richard Stallman说得很清楚:

    "After all, there are plenty of other C libraries; using the GPL for ours would have driven proprietary software developers to use another―no problem for them, only for us."

    “毕竟,市场上的C库有的是。GPL许可证将迫使私有软件去使用他人的库,这不会给他们带来困扰,只会给我们带来困扰。”

    所以,策略是这样的:整体软件,或者没有替代品的代码库,一定要使用GPL许可证;有替代品的代码库,可以使用限制较少的开源许可证,但是在取到足够市场份额之后,也应该转为GPL许可证。这就是为什么javascript的代码库,大多数都是类似BSD的许可证,而不是GPL许可证的原因,因为可替代自己的竞争者实在太多了。

    总之,如果你想把自己的软件开源,只要不属于上面这种例外情况,GPL就是更好的选择。

    (完)

建议继续学习:

  1. 15个最好的免费开源电子商务平台    (阅读:10992)
  2. 介绍几个QQ开源项目及协议下载    (阅读:8882)
  3. 晒晒我们的开源项目    (阅读:4404)
  4. 我对开源的看法    (阅读:3812)
  5. 谁说开源不能赚钱?    (阅读:3725)
  6. 如何选择开源许可证?    (阅读:3656)
  7. 三款面向 Amazon S3 的开源文件同步工具之对比    (阅读:3077)
  8. 开源在线编辑器推荐    (阅读:2880)
  9. 五大开源许可协议    (阅读:1817)
  10. 从WordPress看开源平台的发展    (阅读:1729)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1