GPL(General Public License)协议主要特点:
- 所有的源代码都是公开的,可以自由使用。但是是有版权的
- 如果对GPL的开源代码进行修改,就必须把修改之后的代码进行开源
- 如果引用了GPL的代码库,就必须开源你引用部分的代码。相当于你的代码中如果有一行代码引入了GPL协议的库函数,就必须把整个代码开源。就是所说的传染性
- 如果使用的是GPL产品,没有上面的限制。这个说实在的,我觉得真不好界定。例如java中的openjdk,如果你只是使用他的编译器编译你的java程序,是没有必要开源你的java程序
- GPL是free(自由的),但是是可以收费的。我们经常认为开源的就是免费的,这个是不对的。
从上面的限制来看,GPL开源协议还是有很大的传染性的。如果一个商业公司引用了开源代码或者库函数,就必须开源引用它的整个代码。有一些公司不愿意开源咋办,就不能用了。毕竟对于商业公司来说,代码是我的资产,我没有必要开源,所以这个协议对商业公司不是很友好
LGPL(GNU Lesser General Public License):是GPL的变种,这个是宽松的GPL,对于商业公司比较友好,如果使用了LGPL的库,可以不开源的你的代码。与GPL的最大不同是,可以私有使用LGPL授权的自由软件,开发出来的新软件可以是私有的而不需要是自由软件。所以任何公司在使用自由软件之前应该保证在LGPL或其它GPL变种的授权下。
BSD(FreeBSD Copyright Information):这个算是宽松的协议了,你可以使用和修改它的源代码,注明使用了他就可以了,你自己的代码是可以私有的。只要别侵权就可以,比如直接copy了源代码,说是你自己写的,这样就不对了。
Apache Licene:这个和BSD差不多,但是要注意几点,如果修改了源代码,要注明修改了什么。开源代码的商标,专利,所有权都要保留的,不能说修改了开源apache 协议的开源代码,就直接把代码的作者写成你,这样是不对的。发布产品的时候,对于自己修改的apache 开源代码,不能够变成其他的开源协议。
MIT:这个说实在的,我个人见的比较少,这个算是最自由的协议了,和BSD一样,但是修改了MIT源码,可以加入自己的授权。
相关推荐
开源协议是软件开发领域的重要组成部分,它规定了代码的使用、修改、分发等行为的法律框架。在开源世界中,正确理解和应用这些协议对于开发者、企业以及整个社区的健康发展至关重要。以下是对五个主要开源协议——...
C语言是系统编程的常用语言,因此这个开源项目特别适合硬件开发者和嵌入式系统的工程师。 ZigBee协议栈通常包括以下层次: 1. **物理层(Physical Layer, PHY)**:负责无线信号的传输和接收,包括调制解调、频率...
"个人常用开源软件"这个主题涵盖了多种类型的工具,这些工具广泛应用于日常工作和生活中。以下是一些可能包括在压缩包中的开源软件,以及它们各自的知识点: 1. **Linux操作系统**:Linux是开源操作系统的代表,如...
本文将深入探讨五种最常用的开源协议:BSD、Apache、GPL、LGPL以及MIT,分析它们的特点、适用场景及对开源项目的影响。 #### BSD许可证 BSD许可证是一种非常宽松的许可证,允许用户自由使用、修改和分发软件,而...
BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。 但”为所欲为”的前提当你发布使用了BSD协议的代码,或...
"VB开源常用图标"集合提供了一系列可供开发人员在创建VB应用时使用的图标资源,这些资源通常是免费的,允许开发者根据开源协议进行使用和修改。 图标在软件开发中的作用: 1. **增强用户体验**:直观的图标可以帮助...
同时,它的符号设计独特,如大括号{}、引号""等编程常用符号形状明确,易于区分,减少了编码时的误判可能。此外,Inconsolata还提供了多种语言的支持,包括各种编程语言的特殊符号,增强了其在不同项目中的适应性。 ...
5. **FileUpload**:这个标签可能指的是Apache Commons FileUpload库,它是Apache Commons项目的一部分,专门处理HTTP协议中的多部分/表单数据,即文件上传。它能够处理大文件上传,避免了内存溢出问题,并提供了...
ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和...
lib60870是一个开源的、实现了IEC60870-5系列协议的库,版本2.0.1包含了对101、102和104协议的支持。这个库为开发者提供了一个便捷的工具,帮助他们快速集成IEC60870协议到自己的软件中,无论是构建主站还是子站应用...
它集成了一系列常用通信协议,如标准的Modbus协议、电力行业协议、水务行业协议以及主流的PLC(可编程逻辑控制器)协议,以满足不同场景下的设备连接需求。平台不仅能够有效地采集各类设备的数据,还具备公式计算...
这些jar包遵循开源协议,允许用户免费使用、修改和分发,极大地促进了软件开发的共享与协作。 在Java开发中,开源jar包扮演着至关重要的角色。例如,Apache Commons Lang是一个提供实用工具类的开源库,它包含各种...
4. **Thymeleaf**或**FreeMarker**:这两个是常用的模板引擎,用于生成动态Web内容。它们可以将HTML模板与Java代码结合,方便地生成HTML页面。 5. **Maven**或**Gradle**:作为项目构建工具,它们管理项目的依赖,...
1. 开源许可证:开源软件的核心在于它的许可证,通常遵循GPL(GNU General Public License)、MIT或Apache等开源协议。这些许可证规定了用户如何使用、修改和发布源代码,确保了软件的开放性和共享精神。 2. 技术栈...
### 常用协议及端口查询知识点 #### 一、引言 在网络通信中,端口号用于标识网络服务,并确保数据包能够准确无误地发送到正确的接收者。不同的端口对应着不同的网络服务或应用程序。了解这些常用端口及其对应的服务...
SSL(Secure Sockets Layer)和其后继者TLS(Transport Layer Security)是网络安全领域最常用的数据加密和身份验证协议。它们主要用于保护网络通信,确保数据的隐私性和完整性,防止中间人攻击和数据篡改。SSL/TLS...
4. `LICENSE`:文件中包含了该项目的开源许可协议,可能是MIT、GPL、Apache等,决定了其他人可以如何使用、修改和分发该软件。 5. `composer.lock`:此文件记录了项目所有依赖的确切版本,确保在不同环境中构建项目...
在C#编程环境中,开发Windows桌面应用程序时,WinForms是一个常用的选择。WinForms提供了一个丰富的控件库,但有时为了实现更加美观或者功能强大的界面,开发者可能会寻求第三方UI库来扩展其功能。本资源就是一个...