如何选择开源许可证&如何修改项目使其符合某种开源许可证
作者:zyl910
很多文章介绍了详细的解说了各种开源许可证及它们的区别。但是,具体该选择哪一种许可证?如何修改项目使其符合某种开源许可证?就很少见到指导了。于是本文探讨这两个问题。
一、如何选择开源许可证
阮一峰《如何选择开源许可证?》中的图片清晰的展示了各种开源许可证的区别——
可是,对于新手来说,一下子见到这么多种许可证,还是会感到有些眼花缭乱,难以抉择。
于是,我建议最初时只关注三种开源许可证——
1) 如果您想为GPL世界添砖加瓦,或者项目引用了GPL许可证的模块,那么当然得使用GPL许可证;
2) 如果您想分享自己的编程心得,不想让许可证限制了知识的传播,这时可使用MIT许可证;
3) 如果您想更强的控制源代码,或者考虑商业化,那么推荐Apache许可证。
例如在写博客或写书时,可使用MIT许可证。
二、如何修改项目使其符合某种开源许可证
若要使项目使其符合某种开源许可证,一般需要做以下三步操作——
1) 【必须】 在项目根目录放置一个“LICENSE”文件。
2) 【可选】 修改各个源码文件,在文件顶部使用注释语句写上许可证的说明。
3) 【可选】 修改readme文件,写上许可证的说明。
注意只有第一步是必须的,后面两步的内容时可选的。
关于“LICENSE”文件的规范格式可参考各许可证的说明,见“参考文献”中的相关链接。
参考文献
~~~~~~~~
《GNU General Public License (GPL)》. http://www.opensource.org/licenses/gpl-license
《详细介绍 GPL 协议》. 红薯, 2009-11-30. http://www.oschina.net/question/12_2826
《The MIT License (MIT)》. http://www.opensource.org/licenses/mit-license.php
《详细介绍 MIT 协议》. 红薯, 2009-11-30. http://www.oschina.net/question/12_2829
《Apache License, Version 2.0》. http://www.apache.org/licenses/LICENSE-2.0
《详细介绍 Apache Licene 2.0 协议》. 红薯, 2009-11-30. http://www.oschina.net/question/12_2828
《The BSD 3-Clause License》. http://opensource.org/licenses/BSD-3-Clause
《The BSD 2-Clause License》. http://opensource.org/licenses/BSD-2-Clause
《详细介绍 BSD 开源协议》. 红薯, 2009-11-30. http://www.oschina.net/question/12_2825
《如何选择开源许可证?》. 阮一峰, 2011-05-02. http://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html
《9个主流的开源许可协议[整理]》. Univasity, 2011-12-05. http://univasity.iteye.com/blog/1292658
如何选择开源许可证&如何修改项目使其符合某种开源许可证的更多相关文章
- GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。
1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便 ...
- 82天突破1000star,项目团队梳理出软件开源必须注意的8个方面
近期,我们在GitHub上开源了微服务任务调度框架SIA-TASK,82天,收获了1000+个star!由于这是SIA团队第一次开源项目,开源的相关工作,团队之前并没有太多的经验,因此我们特别整理了本 ...
- 微软开源Kubernetes服务网格项目Open Service Mesh
尽管微服务环境提供可移植性,允许更快更频繁的部署周期,甚至还能让组织创建关注于特定领域的团队,但这也伴随着对于流量管理.安全以及可观测性等需求的增长.在整个生态系统中,针对这些需求的服务网格模式的实现 ...
- 开源巨献:Google最热门60款开源项目
文章整理于互联网.本文收集了 60款 Google 开源的项目,排名顺序按照 Github ★Star 数量排列. 0.机器学习系统 TensorFlow ★Star 62533 TensorFlo ...
- Android Studio修改项目名和包名
为了提高开发效率,有时候需要使用现有的一些开源项目,记录一下自己修改项目名和包名的方法. 1.首先,修改包名(清单文件里找), ①展开所有包 ②选中想要修改的包,shift+F6(也可右键Refact ...
- 如何成为一名合格的Apache项目Committer,参与Apache开源贡献的正确姿势
近日,孙金城老师在 "Open Source Promotion Plan - Summer 2020" 开源软件供应链点亮计划做了<如何成为一名合格的Apache项目Com ...
- myeclipse如何修改Web项目名称,eclipse如何修改项目名字
myeclipse如何修改Web项目名称 1.复制一个现有的项目,重命名项目名称 2.这里的项目名称重新命名了,但是Web项目本质下的名称还是没有改变的.所以需要更改,更改方法-->选择项目右击 ...
- eclipse下修改项目名导致tomcat内发布名不一致的解决方法 .
eclipse下修改项目名导致tomcat内发布名不一致的解决方法 . ------------------------------------------------------- 解决方案: 直接 ...
- 关于PowerBuilder 9.0中如何修改项目工程名字
关于PowerBuilder 9.0中如何修改项目工程名字,首先要找到三个文件,xxx.pbl.xxx.pbt.xxx.pbw这三个文件,为何要找这个三号个文件呢? 因为在使用PowerBuilder ...
随机推荐
- 专题:『Channel Bonding/team』——EXPERIMANTAL!!!
Linux内核支持的多网卡聚合方法——bond.team bond 优点:经过长时间的实践检验,具有较高的稳定性:kernel-2.4及以上内核均广泛支持 缺点:需要通过sysfs或发行版定制的网卡配 ...
- ifram,framset 互相调用JS
window.parent.frames["Indexbanner3"].aa(); http://blog.163.com/wenchangqing_live/blog/stat ...
- 【树上莫队】【带修莫队】【权值分块】bzoj4129 Haruna’s Breakfast
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using ...
- Linux 查杀进程
ps -eaf |grep "stoporder.php" | grep -v "grep"| awk '{print $2}'|xargs kill -9 # ...
- 怎么定义 logger
随便打开一个 spring 的 源文件,比如 PathMatchingResourcePatternResolver.class 里面是这样定义logger 的 import org.apache. ...
- Modifiers: virtual, override, new, abstract, sealed, internal
internal 声明类.类成员.接口或接口成员具有内部可见性. internal 修饰符使类.接口或成员仅在当前包中可见. 当前包之外的代码不能访问 internal 成员.只有在同一程序集的文件中 ...
- Webpack使用教程六(Plugins)
webpack可以通过插件进行功能扩展.webpack拥有很多的内置插件和第三方插件.下面以webpack自带的插件bannerPlugin为例,说明插件的简单用法.bannerPlugin可以将任何 ...
- elixir 高可用系列(一) Agent
概述 elixir 本身是一种 immutable 的语言,默认情况下,进程间是不共享任何状态的,进程之间通过消息来交互. 而 Agent 则封装了一种进程间共享状态的方式,通过这种方式,不用显式的写 ...
- 【Android开发】 第一课 环境搭建教程
Windows 开发环境部署: Android Studio 中文社区:http://www.android-studio.org/ 本教程将分为五个步骤来完成Android开发环境的部署. 第一步: ...
- 实验三 组合逻辑电路的VHDL设计
一.实验目的 熟悉QuartusⅡ的VHDL文本设计过程,学习简单组合逻辑电路的设计.仿真和测试方法. 二.实验内容 1. 基本命题 完成2选1多路选择器的文本编辑输入(mux21a.vhd)和仿真测 ...