在使用开源代码的时候,也需要注意其对应的开源协议,特别是在商业级应用中。下面就我个人针对各个常见的开源协议做个简单的汇总和理解。
假设我们使用的开源代码为 A,我们自己开发的为 B,其中使用到了A
BSD协议
1。若B开源,B中带有A的代码,则B在发布时必须带有A的BSD协议声明。
2。若B闭源,B中带有A的代码,则B在发布时必须在文档/版权声明中带有A的BSD协议声明。
3。不允许用A的作者或者任何其他信息作为B的市场推广。
总结:自由度很大,很适合商业用途。
Apache协议:
1。B发布时需要给用户一份apache许可。
2。若修改了A的代码,则需要在该代码文件里注明。
3。在B中需要带有A的协议、商标、专利声明以及A中一切要求衍生软件/类库声明的内容。
4。B中包含一个Notice文件,里面包含Apache许可证及你自己要求声明的内容。(该内容不可与apache协议本身冲突)
总结:自由度也很大,适合商业用途。
GPL协议:
1。B必须符合GPL协议(传染性),B必须开源、免费。
2。B发布时必须声明自己是GPL协议。
3。允许在B中修改A的内容。
总结:不适合商用,必须是开源、免费。
LGPL协议:
1。B若修改了A的内容,修改部分及额外衍生代码必须符合LGPL协议。
2。允许B中部分闭源,链接(Link)到A或A的衍生部分。
总结:适合一定范围内商用。
分享到:
相关推荐
#### 二、常见开源协议介绍 1. **LGPL (GNU Lesser General Public License)**: - **特点**: LGPL 是 GPL 的一个变体,适用于库和其他辅助程序。与 GPL 不同的是,LGPL 允许将 LGPL 许可下的代码与其他类型的许可...
在IT行业中,开源软件已经成为...总的来说,理解Python的开源协议对于开发者至关重要,它关乎到软件的合规使用、代码的共享以及项目的可持续发展。在参与开源世界的过程中,了解和遵守这些协议是每个程序员的基本素养。
对于Java程序员而言,了解并熟悉常见的开源协议至关重要。这不仅能帮助他们在项目中正确地使用开源软件,还能避免潜在的法律风险。以下将详细介绍七个最为关键的开源协议。 #### 1. Mozilla Public License (MPL) ...
本文将分析几种常见的开源协议,包括GPL、BSD、MIT、Mozilla(MPL)、Apache 2.0和LGPL,帮助开发者理解它们的特点和适用场景。 首先,BSD开源协议赋予了使用者极高的自由度。它允许使用者自由地使用、修改源代码,...
总结,工业通信modbus协议的开源代码是宝贵的资源,它不仅提供了理解和实现Modbus协议的途径,而且通过支持Linux和ARM处理器,极大地扩展了其应用范围。对于工业自动化领域的开发者而言,这是一个学习、创新和优化...
**UVC开源协议详解** UVC,全称为Universal Video Class(通用视频类),是USB Implementers Forum(USBIF)制定的一种标准,旨在提供一个统一的接口,使得不同设备间的视频流传输变得更加简单和标准化。USBIF是一...
LAStools的开源性质对学术研究和行业应用都具有积极影响,降低了点云处理的门槛,促进了点云技术的广泛应用。同时,由于其灵活性和可扩展性,LAStools也是开发者进行点云算法研发和创新的理想平台。通过不断学习和...
开源电调程序SimonK与BLHeli是无人机和遥控模型飞机领域中常见的电子调速器(ESC)软件。这些程序负责控制电机的速度和方向,是飞行控制系统的关键组成部分。SimonK和BLHeli都是由社区驱动的开源项目,允许爱好者和...
通过阅读这些开源代码,我们可以深入理解内核调度、进程管理、内存管理、文件系统、网络协议栈等核心模块的工作方式。这不仅有助于提升开发者的技术水平,还能激发他们对操作系统底层机制的兴趣。 首先,Linux内核...
DXF是一种常见的矢量图形格式,广泛应用于工程绘图、建筑规划以及计算机辅助设计(CAD)领域。DXFLIB提供了一套API,使得开发者能够读取、创建和修改DXF文件中的几何数据和其他元数据。 首先,我们要理解DXF文件的...
学习这些开源项目,可以帮助开发者理解物联网协议、设备交互等关键点。 在实际学习过程中,开发者可以按照以下步骤进行: 1. **阅读文档**:每个开源项目通常都有详细的文档,先理解项目的基本架构和功能。 2. **...
1. **音乐格式转换**:将常见的音频文件如MIDI、WAV等转换为51MCU可执行的音乐数据。 2. **音效优化**:针对51MCU的性能限制,MusicEncode能进行音频压缩和优化,以获得最佳播放效果。 3. **内存管理**:考虑51MCU的...
【标题】:“基于HTTP协议的开源中文分词系统,64位” 【描述】:“基于HTTP协议的开源中文分词系统,64位,详细请见http://blog.s135.com/httpcws_v100/3/1/” 这个标题和描述提到的是一个专门针对中文文本处理的...
9. **开源协议**:了解并遵循项目所采用的开源协议(如MIT, GPL, Apache等),确保合规使用和分发反编译后的代码。 通过对"Common"项目反编译代码的学习和研究,开发者可以弥补项目中的缺失,同时也能深化对通用...
该控制器的独特之处在于其开源性质,采用Apache 2.0开源协议,鼓励用户进行二次开发和创新。 2.2 驱动板支持的电机选型 这款控制器设计灵活,可兼容多种电机类型。由于其高功率输出和广泛兼容的编码器支持,包括IIC...
灯哥开源FOC控制器是一款遵循Apache 2.0开源协议的硬件设计,主要目标是提供一个低成本的双路无刷电机FOC驱动方案。其双路总功率达到240W,单路最高功率120W,可满足多数云台电机的需求。控制器支持IIC和ABI编码器...
该开源协议模拟器是一款简洁而强大的工具,它允许用户模拟TCP和UDP这两种最常见的网络传输协议。在项目提供的文件中,我们看到了四个批处理文件(UDP_Server_localhost.bat、TCP_Server_localhost.bat、UDP_Client_...
开源意味着该项目的源代码对公众开放,允许开发者查看、学习、修改以及分发代码,这为技术爱好者和专业人士提供了深入理解软件工作原理的机会,同时也鼓励社区协作和创新。 【描述】:“一个JAVA写的开源播放器,...
1. 许可协议:不同的开源控件可能有不同的许可协议,确保你理解并遵循这些协议,避免法律问题。 2. 兼容性和稳定性:检查控件是否与你的开发环境和目标平台兼容,以及其稳定性,避免因控件问题导致的软件缺陷。 3. ...