gpl可以商用吗_一文看懂开源许可证,能不能商用再也不抓瞎

在github中闲逛,宝藏多福利好。不过心里或许总有小忐忑,这么多开源项目,我的产品里能不能用呀!

其实想知道项目能不能用看下项目的开源许可证就清楚了(即使是非软件产品比如数据、媒体、资料等也可以通过开源许可证知道它们的可用范围)。

cda30be34bc95ef2d8651a56aafd10f4.png

开源许可证

先举两个例子,这两位应该是最常用的许可证了:

  • MIT许可证:只为作者保留版权,而无任何其他了限制。它使人们几乎可以对您的项目进行任何操作,即时是制作和分发封闭源代码版本。Babel,.NET Core和 Rails 使用MIT许可证。
  • GNU GPLv3:让人们可以做几乎任何他们想要做的项目,不能分发封闭源代码的版本。Ansible, Bash和 GIMP 使用GNU GPLv3。

如果你的工作是在开源社区开发项目,使用社区常用的许可证就可以了。

如果希望商用则特别要注意下,许可的范围。以下都是常用许可证类型的概要信息:

081c39d3bd38ff0dbca95de08eda5a50.png

Apache Licese @ opensource.org

  • Apache License 2.0 :商业软件最爱, 主要条件是要求保留原始版权和许可声明。同时向贡献者明确授予专利权。使用者可以自由修改,进行商业使用,大型项目可以不同的条款分发,没有开源要求,修改源代码需要记录变更。
  • BSD 3-Clause "New" or "Revised" license:允许商业发布和销售。使用者可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。主要条件是要求尊重代码作者的著作权,即包含原始版权和免责声明(二进制形式分发必须分发文档中包含版权申明及免责声明),且未经事先特别书面许可,不可以用开源代码的“作者/机构的名字”或“原来产品的名字”做市场推广。
  • BSD 2-Clause "Simplified" or "FreeBSD" license:比3-Clause少一个条目,去掉了“不可以用开源代码的“作者/机构的名字”或“原来产品的名字”做市场推广。”.
  • GNU General Public License: 商业软件绕开,GPL不允许修改后和衍生的代码做为闭源的商业软件发布和销售。
  • GNU Library or "Lesser" General Public License (LGPL):允许商业软件代码动态link到LGPL类库。注意:不可以静态链接,否则你的代码也必须用LGPL协议开源。(即:商业软件可以动态使用,但不能修改)
  • Mozilla Public License 2.0:修改的版本需要保持原始版权申明。编译版本需和可获得MPL协议下的源码。修改源代码需要记录变更。
  • Common Development and Distribution License:商业软件可用,也可以修改。可以自行发布许可,允许公共版权使用,提供专利保护,无专利费
  • Eclipse Public License version 2.0:商业软件可用,也可以修改,无需开源。不过将本程序包含在商业产品中的贡献者需要承担因代码而产生的侵权责任,及对所有其他贡献者的相关损失

一般开源许可证中会说明以下权限、使用条件和责任限制:

  • 商业使用(Commercial use):该软件及其衍生产品可用于商业目的。
  • 分发(Distribution):该软件可以被分发。
  • 修改(Modification):该软件可能会被修改。
  • 专利使用(Patent use):该许可证提供了明确的专利权授予。/该许可明确声明它不授予贡献者专利的任何权利。
  • 私人使用(Private use):该软件可以私下使用和修改。
  • 开源(Disclose source):分发软件时必须开源。
  • 许可及版权声明(License and copyright notice):该软件必须随附许可证和版权声明的副本。
  • 分布式网络使用(Network use is distribution):通过网络与软件进行交互的用户被授予接收源代码副本的权利。
  • 相同许可证(Same license):分发软件时,必须以相同的许可证发布修改。在某些情况下,可以使用类似或相关的许可证
  • 状态变更(State changes):对代码所做的更改必须记录。
  • 责任限制(Liability):该许可包括责任限制。
  • 商标使用(Trademark use):该许可证明确声明它不授予商标权,即使没有此类声明的许可证可能不授予任何隐含的商标权。
  • 保证(Warranty):许可证明确声明不提供任何保证。
7030a24a3fa2fe7ad954c02b26dbaf27.png

CC-BY-4.0

此外还有一些属于非软件许可证:

  1. 数据,媒体等内容:CC0-1.0,CC-BY-4.0和CC-BY-SA-4.0是开放许可证,用于从数据集到视频的非软件内容。这里CC-BY-4.0和CC-BY-SA-4.0 不应用于软件产品。
  2. 文献资料:任何开源软件许可证或媒体开放许可证也适用于软件文献资料。如果您为软件及其文档使用不同的许可证,请确保指定文档中的源代码示例也已获得软件许可证的许可。
  3. 字体:SIL Open Font License 1.1 保持字体开放的同时,允许它们在其他项目自由使用。

如果您的项目包含软件和其他部分的混合,您可以通过说明明确各个许可证适用于项目的不同部分。


总结一下:开源许可证存在的主要意义就是保护项目贡献者和使用用户。倘若没有许可证保护,企业和开发人员一般就不会接触项目,开源社区也很难繁荣起来。如果要更全面的了解和选择开源许可证,可以去大本营查看所有已批准的许可证包括:如专用许可证、被取代的许可证或失效的许可证。

按名称排序(按字母顺序):https://opensource.org/licenses/alphabetical

按类别排序:https://opensource.org/licenses/category

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305331.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 Tye 辅助开发 k8s 应用竟如此简单(一)

最近正巧在进行 Newbe.Claptrap 新版本的开发,其中使用到了 Tye 来辅助 k8s 应用的开发。该系列我们就来简单了解一下其用法。安装 Tye 首先,确保已经正确安装了 netcore 2.1 或以上版本的 dotnet SDK。Tye 目前还处于开发阶段,因此&#xff…

np变题了。但我过了

前天5月14号,一个平静的日子。我去参加了np的bsci考试,但不幸的是一进去看到考题就发晕了。题变了,后来才知道,我去考试的时间是变题的第二天。但万幸的是经过艰苦的努力,我终于看到了Congratulations,出来…

mysql修改主键生成策略信息_常用Hibernate 主键生成策略

1.AssignedAssigned方式由程序生成主键值,并且要在save()之前指定否则会抛出异常特点:主键的生成值完全由用户决定,与底层数据库无关。用户需要维护主键值,在调用session.save()之前要指定主键值。2.HiloHilo使用高低位算法生成主…

php上传文件很慢的原因_PHP编码安全:上传文件安全

一次性付费进群,长期免费索取教程,没有付费教程。进微信群回复公众号:微信群;QQ群:460500587教程列表 见微信公众号底部菜单 | 本文底部有推荐书籍 微信公众号:计算机与网络安全ID:Computer-net…

RabbitMQ 入门:2. Exchange 和 Queue

上文RabbitMQ 入门:1. Message Broker(消息代理)提到过 RabbitMQ 实现了 AMQP 这个协议(RabbitMQ 所支持的 AMQP 的版本是 0.9.1),这个协议的内容很多,但为了构建入门级的分布式应用&#xff0c…

【组图】地震前线归来--心中的震撼

5.12号获悉家乡发生大地震,不放心在成都的家人朋友,于13日从北京赶回成都,再了解事态严重性,并确定家人情况后,14日与众多志愿者一起从成都出发,取道彭州市,通济镇,白水河镇&#xf…

mysql数据库密码错误_MySQL数据库经典错误六 数据库密码忘记的问题

数据库密码忘记的问题[rootzs ~]# mysql -uroot -pEnter password:ERROR 1045 (28000): Access denied for user ‘root’’localhost’ (using password: YES)[rootzs ~]# mysql -uroot -pEnter password:ERROR 1045 (28000): Access denied for user ‘root’’localhost’ (…

前端 input怎么显示null_小猿圈WEB前端之HTML5+CSS3面试题(一)

学习是一件非常充实的过程,特别是把自己的乐趣变成工作的时候,很多朋友就喜欢学习web前端,所以学习前端,也希望从事前端的工作,但是因为缺少实战经验,所以很多都是卡在面试这关上,下面小猿圈总结…

使用AXIS开发Web Service的示例

1)先下载Axis的文件包 :http://ws.apache.org/axis/2)新建web工程 名称为:axis 拷贝Axis包中 webapps/axis 目录中的所有文件到工程目录的 webroot 目录中, 然后 刷新 工程 新建一个 java 文件,文件名称为:HelloClient…

聊聊Interlocked.CompareExchange吧?

【导读】私下空余时间一直在研究开源框架,当然也就少不了学习优秀源码,本文也是我查看有关源码时,触碰到我个人知识盲区,做此记录,分享下Interlocked.CompareExchange这玩意用法被讲的很烂了,为何再次被提及…

sae 本地环境 mysql数据库_SAE本地环境与真实环境的差别

其实从刚开始用的时候就发现本地环境和真实环境有不同,导致本地环境我都没怎么用。1、本地环境的php是32bit版本的,真实环境是64bit的。这是我发现的第一个不相同的地方,就是因为这个,直接导致我的应用绝大部分调试工作都是在把代…

winform 统计大量数据重复的元素个数_面试系列:十个海量数据处理方法大总结...

本文将简单总结下一些处理海量数据问题的常见方法。当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优,如果你有更好的处理方…

C# 实现一个基于值相等性比较的字典

C# 实现一个基于值相等性比较的字典Intro今天在项目里遇到一个需求&#xff0c;大概是这样的我要比较两个 JSON 字符串是不是相等&#xff0c;JSON 字符串其实是一个 Dictionary<string, string> 但是顺序可能不同&#xff0c;和上一篇 record 使用场景中的第一个需求类似…

RIAMeeting第六次开发者交流活动。

5月的一场大地震带给我们过多的悲痛&#xff0c;但国家还要兴起&#xff0c;技术还要进步&#xff0c;让广大RIA开发者化悲愤为力量&#xff0c;继续开创中国的RIA事业吧&#xff01; 本月的25日&#xff0c;RIAMeeting将举办第六次开发者交流活动&#xff0c;本次活动邀请到了…

java字符串转时间_java字符串和时间转换

import java.text.SimpleDateFormat; import java.util.Date; //将long字符串转换成格式时间输出 public class LongToString {public static void main(String argsp[]){String time="1256006105375"; Date date=new Date(Long.parseLong(time)); SimpleDateFormat …

java 堆栈_Java中线程与堆栈的关系

栈是线程私有的&#xff0c;每个线程都是自己的栈&#xff0c;每个线程中的每个方法在执行的同时会创建一个栈帧用于存局部变量表、操作数栈、动态链接、方法返回地址等信息。每一个方法从调用到执行完毕的过程&#xff0c;就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。其…

巧用lock解决缓存击穿的解决方案

背景缓存击穿是指缓存中没有但数据库中有的数据&#xff08;一般是缓存时间到期&#xff09;&#xff0c;这时由于并发用户特别多&#xff0c;同时读缓存没读到数据&#xff0c;又同时去数据库去取数据&#xff0c;引起数据库压力瞬间增大&#xff0c;造成过大压力。解决方案1、…

ISA禁止了symantec的LiveUpdate的使用

从我们服务器将symantec升级到10.1.5.5000后&#xff0c;就发现ISA客户端的用户&#xff0c;用LiveUpdate没法升级&#xff0c;点击按钮后也会运行升级&#xff0c;但是到最后总是出现一个红色的大叉&#xff0c;说升级失败。这样客户端就只剩下手动用升级包升级或者是通过服务…

java怎么将前端的数据存到关联的表中_Java程序员最可能被考到的14个面试题

1. 如何只扫描一遍就找到位于一个链表正中间的元素&#xff1f; 这是最受欢迎的算法题之一&#xff0c;经常在电话面试中被问到。很多程序员会想&#xff0c;要知道链表的长度&#xff0c;就要先扫描一遍链表&#xff0c;然后在第二遍中取其正中的元素。所以被要求只扫描一遍就…

java 监听文件内容_java 监听文件内容变化

有时候&#xff0c;我们需要确定某些文件是否有变化而做出一些对应的动作&#xff0c;例如&#xff0c;曾经开发的一款服务器中&#xff0c;由于模块比较多&#xff0c;在运行期间有时候需要单独的输出某个模块日志&#xff0c;但又不可能总是开着日志。log4j中已经实现了可以动…