如果你只是想学习使用一下开源项目,那么你可以跳过本节(了解一下更好^_^),但是如果你想在自己的产品(不管是开源的还是商业的)中集成开源项目,那么你必须了解许可协议。
开源项目的license可以分为三大类:
osi-approved open source:被开放源码组织(www.opensource.org)所批准的开放源码授权协议。像大家经常看到的apache,gpl,lgpl,mit licence,都属于osi-approved的授权协议,osi 的要求之一是二进制文件和源代码的自由发放。
other/proprietary license:其他的,私有的授权协议。指软件作者提供源代码,但是对软件的分发和发布有其他的限制。
public domain:公共域授权。将软件授权为公共域,表示作者完全放弃版权,任何人都可以随意使用。
大部分开源工程都属于osi-approved open source,下面对常见的license做简单的介绍:
对商业友好的license,这些license虽然保留版权申明,但是不但免费修改、免费重新发布,而且允许商业使用,允许商业修改后不公布修改的软件代码(拿到商用产品中就不用担心了^_^)。这些license包括:apache license,artistic license,bsd license,python license,xwindows license,zope license等。
gpl license,允许免费修改、免费重发布,但要求修改代码必须也遵守gpl。这样非gpl license的项目就不能使用gpl license的源码。这种授权方式大大限制了从开源中牟利的手段,因此是对商业不友好的授权。gpl授权的项目特别多,包括有linux、gnome、kde、gcc等。lgpl license对比gpl较为宽松,允许商业代码链接lgpl项目的库。
mpl license,允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者。这种授权维护了商业软件的利益,,它要求基于这种软件得修改无偿贡献版权给该软件。这样,围绕该软件得所有代码得版权都集中在发起开发人得手中。但mpl是允许修改,无偿使用得。mpl软件对链接没有要求。
还有部分开源项目有多重协议,比如mysql(著名的开源数据库)同时拥有commercial license和gpl license,如果是gpl项目,那么可以免费使用mysql,但是在商业软件中使用mysql则要购买commercial license。
总之,当你准备在商用项目中使用开源项目,就需要仔细阅读它的license,看是能否能够免费使用。(不能免费,估计老板就不同意了^_^)从商用的角度看,当然是选择对商业友好的license比较好,比如apache license,bsd license,mpl,另外lgpl也是可以使用的。在我们关注的java领域,选择余地还是比较大的(在以后的内容中会见到)。
联系作者: dawanjia@126.com
