目前有多种开源协议包括GPL、LGPL、BSD、MIT、Apache等协议,怎样在自己的软件中合理的使用开源软件?
GPL协议
GPL许可协议(GNU General Public License):只要软件中包含有其他GPL协议的产品或代码,那么该软件就必须也采用GPL许可协议且开源及免费。
Linux是GPL协议发布的为什么能商用?
我们自己编写的可以在Linux下运行的软件是否必须要开源?是否可以商用?
- 曾经被 Linux 内核的作者 Linus Torvalds 以及内核开发人员多次澄清“普通系统调用”为“非GPL”的作用范围,甚至固化在 Linux 内核的源码 COPYING 文档中,为 Linux 用户空间的程序采用非 GPL 的授权许可证打下了基础;
如果我们的程序未用到其它第三方GPL库,或仅使用了系统调用我们的产品不必遵守GPL;
-
链接使用了其他GPL的类库的程序属于衍生产品。包括源代码包含,静态链接和动态链接三种情况;
-
Linux 内核动态载入的模块 LKM(Loadable Kernel Modules)被定性为衍生产品,包括以此方式开发的驱动程序。
Android为什么能使用其它许可协议发布甚至闭源
Android目前大部分内容采用的是Apache Software License 2.0许可,是怎样规避GPL的?
应用软件层面:Linux操作系统之上构建软件一般都会需要c运行时库的支持,而glibc是GPL协议的,Android采用了bionic作为运行时库;
驱动方面:Android采用了一个HAL层,将用户驱动运行在userspace,通过系统调用完成驱动,把本来跟Linux内核一起运行的驱动变成了驱动运行在Linux之上;
使用OpenJDK开发的软件需要遵守GPL吗?
OpenJDK使用的是GPL+CE协议,使用了类路径例外,所以仅仅引用了JDK提供的类不受GPL限制;
类路径例外是由自由软件基金会的 GNU/类路径项目制订的(请参见 http://www.gnu.org/software/classpath/license.html)。它允许您将依照任何许可证提供的应用程序链接到依照 GPLv2 许可的软件中包含的库,而该应用程序不受 GPL 要求公开其本身的限制。
Python使用什么协议
Python使用的是PSF协议,这个协议跟GPL兼容,与GPL不同的是,所有Python许可都允许您分发修改后的版本,而不需要对所做的更改进行开源,兼容GPL是为了使采用了GPL协议的软件可以一起使用;
PSF协议商业友好,允许以任何形式分发,只要在分发中保留版权信息。
其它商业友好的协议
BSD license、MIT、Apache Software License等