`

常见的开源软件许可

阅读更多

GPL

GPL授予程序接受人以下权利,或称“自由”:

* 以任何目的运行此程序的自由

* 以学习程序工作机理为目的,对程序进行修改的自由(能得到源代码是前提)

* 再发行复制件的自由

* 改进此程序,并公开发布改进的自由(能得到源代码是前提)

相反地,随版权所有软件的最终用户许可证几乎从不授予用户任何权利(除了使用的权利),甚至可能限制法律允许的行为,比如逆向工程。

GPL与其他一些更“许可的”自由软件许可证(比如BSD许可证)相比,主要区别就在于GPL寻求确保上述自由能在复制件及演绎作品中得到保障。它通过一种由Stallman发明的叫copyleft的法律机制实现,即要求GPL程序的演绎作品也要在GPL之下。相反,BSD式的许可证并不禁止演绎作品变成版权所有软件。

copyleft

GPL不会授予许可证接受人无限的权利。再发行权的授予需要许可证接受人开放软件的源代码,及所有修改。且复制件、修改版本,都必须以GPL为许可证。

这些要求就是copyleft,它的基础就是作品在法律上版权所有。由于它版权所有,许可证接受人就无权进行修改和再发行(除合理使用),除非它有一个copyleft条款。如果某人想行使通常被法律所禁止的权利,只需同意GPL的条款。相反地,如果某人发行软件违反了GPL(比如不开放源代码),他就有可能被原作者起诉。

copyleft利用版权法来达到与其相反的目的:copyleft给人不可剥夺的权利,而不是版权法所规定的诸多限制。这也是GPL被称作“被黑的版权法”的原因。

许多GPL软件发行者都把源代码与可执行程序捆绑起来。另一方式就是以物理介质(比如CD)为载体提供源代码。在实践中,许多GPL软件都是在互联网上发行的,源代码也有许多可以FTP方式得到。

copyleft只在程序再发行时发生效力。对软件的修改可以不公开或开放源代码,只要不发行。注意copyleft只对软件有效力,而对软件的输出并无效力(除非输出的是软件本身)。不过这在GPL版本3中可能会有改动。

LGPL

GNU宽通用公共许可证,简称LGPL(GNU Lesser General Public License),被用于一些(但不是全部)GNU程序库。这个许可证以前被称为GNU库(Library)通用公共许可证。

LGPL是GPL的变种,也是GNU为了得到更多的甚至是商用软件开发商的支持而提出的。与GPL的最大不同是,可以私有使用LGPL授权的自由软件,开发出来的新软件可以是私有的而不需要是自由软件。所以任何公司在使用自由软件之前应该保证在LGPL或其它GPL变种的授权下。

Apache License

Apache License是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件:

* 需要给代码的用户一份Apache License

* 如果你修改了代码,需要再被修改的文件中说明

* 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议、商标、专利声明和其他原来作者规定需要包含的说明

* 如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache License。你可以在Notice中增加自己的许可,但不可以表现为对Apache License构成更改

Apache License也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。

BSD

BSD授权许可证(FreeBSD Copyright Information)具有多种授权许可证。总的来说你可以对软件任意处理,只要你在软件中注明其是来自于那个项目的就可以了。也就是说你具有更大的自由度来处置软件。如果你对软件进行了修改,你可以限制其他使用者得到你修改的软件的自由。

BSD授权许可证没有实现"通透性"自由,也就是其不保证软件源代码开放的连续性。这样如果你希望采用别人开发的BSD软件,进行一些修改,然后作为产品卖,或者仅仅保密自己的做的一些除了软件开发以外的工作,那么你就可以从中得利。

当一个非程序员仅仅理解一个程序的功能,但是不了解程序是如何做的时,即使你没有在开发软件中做任何工作那你就可以通过高超的市场技巧将软件卖给该用户。比如拿最流行的桌面操作系统作为例子,你就能很好的理解一个没有很好的程序技巧的软件公司只要具有高超的市场营销策略同样可以将垃圾卖给客户。如果你不具有很强大的编程能力,但是具有很强的市场能力和能将其他开发者的软件包括到自己的系统,而同时不将自己的修改开放出来将是非常强大的能力。从赚钱为目的的商务角度看来,如果你使用了BSD授权许可证的软件,那么你就可以任意进行。你可以更好地控制你的OS系统,并且防止其他人拷贝你的商业产品。

总结一下

简单的说,就是你使用了GPL许可证的软件,那么你的软件产品就被GPL“传染”了,也必须“自由”!这对国内的商业软件开发商来说是很难接受的。

但是LGPL, Apache License, BSD就不存在这个问题,后两者只要求你对软件原作者的工作进行必要的认可和尊重就行了,所以这是适合商业应用的。

所以在选择应用开源软件时,一定要明白自己的用途,选择合适许可证下的软件。 

分享到:
评论

相关推荐

    开源软件的许可证介绍

    开源软件的许可证是开源世界中的重要组成部分,它们规定了用户可以如何使用、修改和分发开源软件。了解这些许可证对于开发者、公司和个人来说都至关重要,因为它们定义了代码的使用规则,确保了开源社区的协作与创新...

    各操作系统开源授权许可协议.docx

    随着开源软件的普及,各种开源授权许可协议也相应地出现了。常见的开源授权许可协议有GPL、LGPL、Apache、BSD等。每种协议都有其特点和要求,对于开发者来说,了解这些协议非常重要。 GPL协议 GPL(General Public...

    开源软件法律风险分析与防范1

    虽然最初以OSIA认证的许可证为主,但现在许多个人和企业也会制定自己的开源许可证,这些都构成了开源软件的广义范畴。 开源许可证是开源软件的重要组成部分,它是软件发布者与用户之间的法律约束文件,规定了软件的...

    开源软件知识产权风险防控研究报告(2019年).zip

    开源软件是指源代码可以自由查看、修改和分发的软件,通常遵循特定的开源许可证。这些许可证规定了用户如何使用、修改和分发软件,以及在何种条件下必须公开源代码。例如,GPL(GNU General Public License)和...

    开源软件库源码 软件应用源码 软件库app源码 软件库后端源码

    当然,需要注意的是,在使用任何开源软件库时,都应该仔细阅读其许可协议,确保符合法律法规的要求。此外,积极参与开源社区的活动也是一种非常好的学习和发展方式。希望本文能对你在软件开发领域的探索有所帮助。

    了解开源和免费软件许可Understanding Open Source and Free Software Licensing

    在探讨开源和免费软件许可的过程中,我们首先需要理解这些概念的基本定义、发展历程以及它们在现代技术生态中的作用。本文将围绕“了解开源和免费软件许可”这一主题展开深入讨论,并结合给定的部分内容链接...

    开源软件在教育中的应用.pdf

    3. **允许修改**:许可证允许对开源软件进行修改,并确保修改后的版本同样遵循相同的许可条件。 4. **保持源代码完整性**:如果许可证允许同时发布补丁文件和原始源代码,那么在不重新命名软件的情况下,不得修改...

    开源软件与云计算的关系分析.pdf

    通过理解开源软件的核心概念、标准与规范、许可证类型及其商用性、“传染性”问题以及产业主体之间的关系,我们可以更好地把握开源软件与云计算领域的现状和发展趋势。在未来,随着技术的进步和市场需求的变化,开源...

    中国开源软件法治建设状况分析.pptx

    中国的开源软件法治建设正处于快速发展阶段,通过不断完善法律法规、强化开源许可证的应用和理解、加强开源社区的建设和管理等方式,正逐步建立起一套健全的开源软件生态环境。随着国内企业和个人对开源理念的认识...

    免费开源的小额贷款管理软件

    “更易于二次开发和维护”是开源软件的一大优势。由于源代码开放,开发者可以根据实际需求进行定制,添加新的功能或者优化现有流程。同时,开源社区的存在可以提供技术支持和更新,确保系统的长期稳定性和适应性。 ...

    制造开源软件-如何成功运营自由软件项目

    开源软件是指遵循特定许可协议发布的源代码,允许用户自由查看、修改和分发这些代码。开源项目的价值不仅体现在技术层面,还体现在社区建设和创新促进上。通过开放共享的方式,可以吸引全球范围内的开发者参与进来,...

    NetBeans平台开发的开源股票软件

    2. `LICENSE.txt`:这是AIOTrade自身的开源许可文件,可能采用的是GPL、MIT、Apache等常见开源许可协议之一。用户和开发者可以依据此文件了解使用、修改和分发该软件的具体条件。 3. `README.txt`:这是项目的基本...

    开源软件知识产权风险防控研究报告.rar

    报告还会分析常见的开源风险,如许可证冲突、合规性挑战、代码污染(即开源软件中的闭源或专有代码)以及法律责任。企业可能在整合多个具有不同许可证的开源组件时面临挑战,必须确保所有组件都遵循一致的合规流程。...

    财务软件源码 财务软件开源代码

    1. **成本节约**:开源软件免除了许可费用,降低了企业的软件投入。 2. **灵活性**:源码开放,可以根据企业特性进行个性化定制。 3. **社区支持**:庞大的开发者社区提供了丰富的资源和解决方案,遇到问题可以...

    开源软件供应链安全风险研究报告

    开源软件供应链安全风险研究报告主要关注的是在信息技术领域中,如何保障开源软件的供应链安全,以及如何有效管理和控制其中的风险。报告深入探讨了四个关键方面,包括开源漏洞的发展现状与趋势、开源组件生态的安全...

    2018年开源许可证使用指南.pdf

    在使用开源许可证时,还可能遇到一系列常见问题,如引入开源软件的合规性、使用和分发开源软件时的限制等。企业和个人应确保对所使用的开源软件的许可条款有充分的理解。 现有开源许可证存在的问题包括语言差异、...

    开源软件协议列表.docx

    - **定义**:CDDL是一种专为开源软件开发而设计的许可证,特别适用于Java平台。它允许修改和分发软件,但有一些限制条件。 - **示例**: - **Glassfish**:一个开源Java EE应用服务器。 ##### 4. MIT License - *...

    使用开源软件 自己动手写操作系统

    开源软件的选择是这个项目的关键,它们通常具有自由的许可证,允许用户查看、修改和分发源代码。在杨文博的版本中,可能会使用到诸如GCC(GNU Compiler Collection)作为编译器,QEMU或Bochs作为模拟器来运行和测试...

    22年春季开源软件设计与开发课程仓库。.zip

    首先,课程可能会介绍开源软件的基础概念,如开源许可证(如GPL、MIT、Apache等)及其对软件分发和修改的法律影响。理解这些许可证是确保软件合规性的重要一步,因为它们规定了代码可以如何被使用、修改和重新分发。...

Global site tag (gtag.js) - Google Analytics