目前国内开源项目正在逐渐升温,中国也开始有不少优秀的开源项目突显出来。在大家摩拳擦掌准备加入开源大军时,也要知道这个圈子里的规则。技术人员不能只是研究技术,任何圈子都有规则,要知道了才能玩得好。前段时间有件关于开源软件的事情挺热闹的,关于国内一个开发者把自己作品开源出来被别的公司的人拿去包装成自己的产品高价卖出去。大部分做开源软件的开发者都不太怎么关注版权这些,具体微博如下:
hoowa_sun:
做开源后,发现大部分都被别人拿去学习,然后copy,然后自己闭源卖出去。这里不缺乏大公司,有一家公司拿我的开源系统修改后卖给了一个国内的运营商,卖的还非常贵至少几十万一套。所以我郑重的建议大家,做软件还是要英文版开源,中文版封闭不要开源。
在国内大家习惯了使用盗版、破解,看到这种免费的软件也觉得是理所当然的拿来主义,甚至直接封装到自己的商业组件卖出去。如果你正在这样做,马上停下来研究一下使用的这些开源组件的许可协议,不然某一天你会意外收到一封法院的传票。如果你在开发或者准备开发开源软件,但尚对开源许可协议不了解,也看下这篇文章,选择一种开源许可协议保护你的开源软件。
常见的开源许可协议有:GPL、LGPL、BSD、Apache Licence vesion 2.0、MIT。这些协议有什么区别呢?
- GPL,全称 GNU General Public License。它的主要内容为:只要在一个软件中使用(“使用”指类库引用或者修改后的代码) GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这个协议就不太适合商用软件,或者准备使用GPL开源组件的商用项目。基于这个协议的项目,极大的提高了开源软件的数量。上面那个微博的案例,如果作者使用了GPL协议,而使用方没有公开源代码就是违反了协议。目前用的多的是GPLV1,GPLV2。这两个什么区别看后面那张树形图。采用这个协议的开源软件有:Linux、 MySQL 。
- LGPL,最初是Library GPL的缩写,后来改称作Lesser GPL。由于GPL太严格,限制了很多商用软件使用GPL组件才推出了这个LGPL。LGPL允许商业软件通过引用类库的方式使用LGPL组件(不直接使用源代码),这样可以不需要开源商业软件的代码。但是如果要修改原始组件的代码,则涉及修改部分的代码和基于原来代码衍生的代码都必须采用LGPL协议。LGPL不适合以LGPL协议为基础的代码进行二次开发的商业软件,但是商用软件可以采用编译后的类库引用就不需要公开源代码了。采用这个协议的开源软件有: JBoss、 FCKeditor 、 Hibernate。之前extjs就因为从LGPL转换到GPL带来了不少的震动。详情点击。
- BSD,全称 Berkeley Software Distribution。这个协议相对上面两个协议宽松很多,允许使用者修改和重新发布代码,也允许使用或在BSD代码基础上开发商业软件发布和销售,因此是适用于商业软件的。使用者别太高兴,使用时还必须做到满足三个条件:
1)如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
2)如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
3)不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。适用BSD协议的开源软件有: nginx、CruiseControl、Redis。
- apache Licence vesion 2.0,这个协议除了为用户提供版权许可之外,还有专利许可。与BSD协议权限类似, 允许代码修改,再发布,适用商业软件。但是也需要满足以下条件:
1)需要给代码的用户一份Apache Licence。
2)如果你修改了代码,需要再被修改的文件中说明。
3)在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
4)如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改。
除了这些条件它还有这些好处:
1)永久权利 一旦被授权,永久拥有。
2)全球范围的权利 在一个国家获得授权,适用于所有国家。假如你在美国,许可是从印度授权的,也没有问题。
3)授权免费 无版税, 前期、后期均无任何费用。
4)授权无排他性 任何人都可以获得授权
5)授权不可撤消 一旦获得授权,没有任何人可以取消。比如,你基于该产品代码开发了衍生产品,你不用担心会在某一天被禁止使用该代码
使用apache Licence vesion 2.0协议的开源软件有:Hadoop 、apache httpserver、Spring Framework、MongoDB 。
- MIT,源自麻省理工学院(Massachusetts Institute of Technology, MIT),又称X11协议。MIT与BSD类似,但是比BSD协议更加宽松,是目前最少限制的协议。这个协议唯一的条件就是在修改后的代码或者发行包包含原作者的许可信息。适用商业软件。使用MIT的软件项目有:jquery、Node.js。
列出了常用协议,还有一些比较常用的大家就谷歌了,比如: Mozilla Public License、Creative Commons、Eclipse Public License 1.0等。
有一篇博客的树形图很好阐述了当前主流许可协议的区别。
另附一张目前github上项目采用的许可协议比例图:
下一篇介绍一下如何在项目网站上添加开源许可协议。
参考:
http://www.aqee.net/a-short-guide-to-open-source-and-similar-licenses/
http://www.iteye.com/news/27616
原创文章,转载请注明:转载自LANCEYAN.COM
本文链接地址:实战做项目如何选择开源许可协议(一)-了解协议
相关推荐
开源项目-osrg-gobgp.zip 是一个包含Go语言实现的边界网关协议(BGP)软件包。Gobgp是OSRG(Open Source Routing Group)组织开发的一个强大的、灵活的BGP实现,它旨在为研究、开发和生产环境提供服务。这个开源项目...
5. **许可信息**:开源项目通常会有一个`LICENSE`文件,明确该项目的许可条款,例如MIT、Apache 2.0或GPL等。这决定了用户可以如何使用、修改和分发代码。 6. **README文件**:`README.md`或`README.txt`通常会包含...
7. `LICENSE`:开源许可证文件,定义了项目可以被使用的条款。 8. `.gitignore`:列出应当被Git忽略的文件或目录。 9. `.travis.yml`或`circleci.config.yml`等:持续集成/持续部署(CI/CD)配置文件,用于自动化...
开源项目-buraksezer-gdoc.zip是一个包含Go语言编写的命令行工具,用于搜索和阅读GoDoc....通过参与和贡献,开发者不仅能学习到Go语言的实战经验,还能深入了解开源社区的工作模式,提升自己的编程技能和团队协作能力。
作为一个开源项目,gen2brain-goiv应该遵循某种开源许可协议,如MIT、Apache 2.0等,允许他人自由使用、修改和分发源代码。具体许可证信息通常在项目根目录的LICENSE文件中。 通过研究gen2brain-goiv的源代码,...
【标签】"开源项目"表明了letsencrypt-boulder是开放源代码的,这意味着任何人都可以查看、使用、修改其代码,并根据开源许可证贡献回项目,促进了代码的透明度和社区协作。 在【压缩包子文件的文件名称列表】中,...
2. `LICENSE`:通常包含该项目的开源许可协议,比如MIT、Apache 2.0或GPL,这决定了他人可以如何使用和分发项目代码。 3. `README.md`:这是一个文档,用于介绍项目的目的、安装步骤、使用方法、贡献指南等,是了解...
`License`文件通常包含了项目的授权信息,可能是MIT、Apache 2.0等开源许可证,这决定了其他人可以如何使用和分发项目代码。 `Changes.md`或`CHANGELOG.md`通常记录了项目的更新历史,包括每次版本迭代的主要改动和...
4. `LICENSE`:这是项目的授权文件,通常包含开源软件使用的许可协议,如MIT、Apache 2.0或GPL等。这些协议定义了其他人可以如何使用、修改和分发你的代码。 5. `format_count.sh`:这是一个脚本文件,很可能用于...
在本Java电商实战项目中,你将深入了解到Java技术在电商平台开发中的应用,以及如何通过源码学习实际项目开发流程。这个项目不仅涵盖了基础的Java编程,还涉及到Web开发、数据库设计、前后端交互等多个重要领域。...
7. **开源文化与社区**:项目遵循开源许可协议,如Apache 2.0或MIT,鼓励社区成员贡献代码、提出问题和建议,促进项目持续发展。 这个系统可能涉及的流程包括需求收集、系统设计、编码实现、测试调试、部署上线以及...
7. `LICENSE`:项目使用的开源许可协议。 【知识点详解】 1. **Java Web基础**:理解Servlet、JSP、Filter、Listener等基本概念,以及它们在Web应用中的作用。 2. **MVC设计模式**:学习如何在Java Web项目中应用...
1. **LICENSE**: 这个文件通常包含了项目的许可协议,规定了其他人可以如何使用、修改和分发项目代码。这可能是开源许可证,如MIT或Apache 2.0,允许自由地使用和改进项目。 2. **README.md**: 这是一个项目介绍和...
- `LICENSE`:项目使用的开源许可协议。 通过分析和理解这些信息,开发者可以快速地搭建和运行这个电商后端项目,并进一步学习和实践相关技术。同时,对于初学者,这是一个很好的实战项目,可以了解完整的电商系统...
对于代码部分,则遵循了3项条款的BSD许可协议,允许开发者在遵守许可协议的情况下自由使用和修改代码。 对于想要开始学习Go语言的Web开发初学者来说,这本书提供了丰富的入门知识,它从基本的Web开发概念讲起,逐步...
综合以上,文档《一周学会Linux实战》为初学者提供了一个快速入门Linux的渠道,涵盖了Linux的基本概念、发展历程、用户管理、命令操作等基础知识,让初学者能够在短时间内对Linux有一个全面的了解,并能够进行基本的...
8. **LICENSE.txt**:开源项目的许可证文件,通常会明确用户可以如何使用、修改和分发软件。对于OEMSHOP,用户需要遵守其中的规定,例如可能是GPL、MIT或Apache等开源协议。 9. **安装说明.txt**:这是引导用户进行...
【谷歌mytrack开源项目源码】是一个源自谷歌的开源项目,专注于实现GPS定位功能并可视化显示轨迹。这个项目对于那些想要深入理解地图开发、移动设备上的位置追踪技术以及Android应用程序开发的开发者来说,是一个...
如果有LICENSE文件,那就表明了该项目的开源许可协议,如MIT、Apache 2.0等,规定了他人可以如何使用和分发这些代码。 学习这样的开源项目,我们可以深入理解一个完整的博客系统是如何构建的,包括前端框架的选择、...
8. **许可证合规**:作为开源项目,它必须遵循特定的开源许可证,开发者在使用项目时需要了解相关许可条件,以避免法律风险。 在实际应用中,开发人员可以将这个插件集成到他们的Flume配置中,利用其提供的空值分析...