假如你只是想学习使用一下开源项目,那么你可以跳过本节(了解一下更好^_^),但是假如你想在自己的产品(不管是开源的还是商业的)中集成开源项目,那么你必须了解许可协议。
开源项目的License可以分为三大类:
OSI-Approved Open Source:被开放源码组织()所批准的开放源码授权协议。像大家经常看到的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领域,选择余地还是比较大的(在以后的内容中会见到)。