本文讲开源项目的许可证(License)。

现在FOSS(Free Open Souce Software)的项目逐步增多,而且项目引进FOSS项目也越来越多,以提高我们开发的效率,避免重复造轮子。那么在我们开心享用这些FOSS项目时,感叹世界真美好,但我们有没有认真去研读过它们的许可证呢?

引进FOSS项目需要注意什么?

那么在引进FOSS的项目时,我们需要注意什么呢?对此不同的人有不同的答案。对此,我的看法是:

  1. 需要了解FOSS项目许可
  2. FOSS项目是否符合自己的需求。
  3. FOSS项目是否有人维护。
  4. FOSS项目的成熟度,社区的热度。
  5. FOSS项目的质量。
  6. FOSS项目的继承难度系数,以及是否能提高开发效率。

本文只关注这里的第一步:FOSS项目许可证。为什么把许可证放在第一条呢?因为我觉得如果许可证都不合适,下面其他要素不用考虑了。

License的重要性

无论作为个体还是公司,我们引进FOSS项目时,首先必须要考虑License的问题,如果不注意License的问题,自己的项目有可能会侵权,可能会把自己或者公司陷入法律风险的境地,如果真的这种事情发生,解决起来很麻烦。

一般怎么处理呢?首先如果是个体,我们必须把常见的License类型了解清楚,如果是公司,需要有法务部门来审核,但是一般公司可能没有法务部门,那需要开发人员自己去把握。我清楚的记得,在前东家里,我配合公司的法务部门核查每个项目使用FOSS项目的情况,就是为了让项目和公司不处于被动地位。(其实我也亲身碰到过专利侵权问题,不过不在本文之内)。

所以,我们在引进FOSS项目时,一定要仔细项目的许可证,我们自己得有法律意识,这根弦必须得绷住

License类型

现在开源项目的类型实在太多了,参看这里http://www.gnu.org/licenses/license-list.html, 估计有百种左右。但是,我们常见的许可证类型有以下几种

我们常见的软件是什么类型呢?我们看看:

  • Apache HTTPd ,许可证是Apache
  • Apache Tomcat, 也是Apache,似乎Apache Foundation都采用Apache许可。Dubbo也是,可以参看https://github.com/apache/incubator-dubbo/blob/master/LICENSE 。 
  • Spring Boot,也是Apache,https://github.com/spring-projects/spring-boot/blob/master/LICENSE.txt 
  • React,用的是MIT,https://github.com/facebook/react/blob/master/LICENSE 
  • Linux常用命令wget,用的是GPL,https://www.gnu.org/software/wget/ 
  • Linux操作系统, 用的也是GPL,https://www.kernel.org/category/faq.html 
  • QT,不同用途有不同的许可,包括LGPL,参看http://doc.qt.io/qt-5/licensing.html 
  • VI,用的就是BSD,https://www.freebsd.org/cgi/man.cgi?query=vi&sektion=1 

License介绍

光去阅读许可证的描述太抽象了,我借用阮一峰老师的文章:http://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html,以图胜千言。

深入浅出:远离法律风险,必须了解开源项目许可证-LMLPHP

12-07 23:06