知识水平有限,仅供参考。
Windows Server 2008/2012,Oralce Database 11g,Oracle Weblogic 11g/12c,这咱就不谈了,堆钱就行了。
一般普通级别的 Java Web项目会用到的非商业软件,通常包含:
操作系统:Linux系列,
中间件:Apache Tomcat,
数据库:MySQL,
开发框架:Spring,MyBatis,
开发语言:Java。
自从Oracle收购了 Sun 公司和MySQL,连Java的使用都要考虑 侵权风险,MySQL也是。下面我们看看这几个软件的开源协议。
操作系统:
因为Linux是采用带有传染性的GPL协议发布的,所以所有采用Linux内核的操作系统都必须是GPL的,自然也就是开源的。这就包括比较流行的 CentOS,其它的Linunx内核的操作系统同理。操作系统是否开源并不影响我们发布的 Web 服务能否商用,毕竟我们又不是改写操作系统源码,重新发布个商业的操作系统。
中间件:
版权协议: Apache License version 2。简单说,商业友好,使用者可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售,也可以直接用在商业系统内。这就简单了,Tomcat可以随便折腾,反正使用是免费的,不会有法律风险,不过要遵守其版权协议的约定,该保留协议全文就保留协议全文,该保留某某组织名字就保留,保你平安。
数据库:
双协议:GPL和商业授权。简单说,GPL指本软件开源,若修改了本软件源代码或者在软件中使用本软件,该软件必须开源,该GPL协议有传染性。但是对于GPL协议的粒度,业内仍有争议,如下。
引用网址。
问题:
我们的商业软件,数据库采用社区版mysql。查看了mysql的许可协议是GPL,我的理解是因为软件使用了mysql官方的连接驱动包(mysql-connector),所以必须开源,与我的安装包是否包含mysql安装程序没有关系。那所有使用了mysql的数据库软件,只要提供给用户使用,都必须开源?我的理解对么?
回答:
取决于你的客户端driver,比如以java为例,虽然java 的jdbc driver也是GPL的,但是可以不受影响,因为JDBC是一个规范,mysql client driver只是其中一个实现,也就是说理论上你可以将mysql替换为其他任何一个数据库产品,mysql就不是你产品的必须部分,这在GPL的文档里有相关章节。
MarioDB的作者,也就是mysql的创始人专门写了一篇文章解释了这个问题。
你如果使用C,那么就需要开源了,因为不可替换。前面有人对PHP的解释我不确定,理论上,如果PHP执行代码需要直接在同一个进程内调用mysql的客户端代码,而mysql客户端代码是GPL, 就应该是被传染。中间层保护是常用手段,但是前提是非相同进程内调用。
其实GPL的解释在这块本身就是个灰色区域, Stallman认为任何二进制的引用,包括动态链接都应该受传染,而Linus则认为只受限于源代码级别,即如果只是在程序中调用一个二进制库的方法,而不是扩展和继承,则不应该受影响。但为了保险,大公司会认可stallman这种做法。
另外在产品包里可以随意包含mysql 的原始release package,这和是否GPL没啥关系。 我们公司的鬼子法务专家是这么给我们解释的。
既然有争议,也就意味着使用MySQL来提供商业用途的服务和产品,是存在法律风险的,但风险对于小型项目应该几乎为零的,大公司也不在乎这个,应该会跪舔某骨文数据库的。
开发框架:Spring、Hibernate、MyBatis 暂未查到。
开发语言:Java
Java目前已经是Oracle公司的商标。Java SDK8的2019年1月后的后续公开更新需要付费,Java SDK 11需要商业付费使用。免费的午餐没有了,建议使用 OpenJDK 11,毕竟Oracle的律师函可不是闹着玩的。【2019.7】
OpenJDK 11 采用 GPLv2协议。
各种协议的简单理解:
LGPL:【商业友好】,如 PySide
使用开源软件的库文件(别忘了LGPL最早的名字就是Library GPL),不对库本身进行任何修改,则不必公布自己的商业源代码。若修改库,修改的代码必须全部开源,且协议也为LGPL,但除了库源码之外的商业代码,仍不必公布。
Apache:【商业友好】,如 Tomcat
使用者可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售,也可以直接用在商业系统内。
GPL:【非商业友好】
GPLv3 :GPL3 主要卡得住的是固件和桌面软件,如果你是提供 Web Service 的,无视即可。参考。
参考:
1. 五种协议的比较[BSD,Apache,GPL,LGPL,MIT]。
2. 各种开源协议介绍 BSD、Apache Licence、GPL V2 、GPL V3 、LGPL、MIT.
《待编辑》