目前有多种开源协议包括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等

[ 编辑 | 历史 ]
最近由“jilili”在“2019-05-23 00:52:23”修改