我想一个人代码水平提升的路上,必然伴随着使用开源协议!
部分开源协议
下面图片来自于阮一峰。
Apache License
Apache License
(Apache
许可证),是Apache软件基金
会发布的一个自由软件许可证。
Apache Licence
是著名的非盈利开源组织Apache
采用的协议。该协议和BSD
类似,同样鼓励代码共享和最终原作者的著作权,同样允许源代码修改和再发布。但是也需要遵循以下条件:
需要给代码的用户一份
Apache Licenc
。如果修改了代码,需要再被修改的文件中说明。
在衍生的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
如果再发布的产品中包含一个
Notice
文件,则在Notice
文件中需要带有Apache Licence
。你可以再Notice
中增加自己的许可,但是不可以表现为对Apache Licence
构成更改。Apache Licence
也是对商业应用友好的许可。使用者也可以再需要的时候修改代码来满足并作为开源或商业产品发布/销售。
使用这个协议的好处是:永久权利 一旦被授权,永久拥有。
全球范围的权利 在一个国家获得授权,适用于所有国家。假如你在美国,许可是从印度授权的,也没有问题。
授权免费 无版税, 前期、后期均无任何费用。
授权无排他性 任何人都可以获得授权
授权不可撤消 一旦获得授权,没有任何人可以取消。比如,你基于该产品代码开发了衍生产品,你不用担心会在某一天被禁止使用该代码
BSD
BSD
是”Berkeley Software Distribution
“的缩写,意思是”伯克利软件发行版”。
BSD开源协议
:是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。
当你发布使用了BSD协议
的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:
- 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
- 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
- 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
BSD代码鼓励代码共享,但需要尊重代码作者的著作权。BSD
由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。
GPL
GPL
(GNU General Public License) :GNU通用公共许可协议
。
Linux
采用了 GPL
。
GPL协议
和BSD
, Apache Licence
等鼓励代码重用的许可很不一样。GPL
的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种linux
,包括商业公司的linux
和linux
上各种各样的由个人,组织,以及商业软件公司开发的免费软件了。
GPL 协议
也发展出了很多分支,其中 GPL v3
是最为激进的,基本上跟原始代码沾点边的代码就必须也得是 GPL
的,例如,最极端的,如果我的代码调用了 GPL
的库,那么我的代码就必须是 GPL
的。这基本意味着如果我是一个商业软件系统,那么我就没有权利使用 GPL v3
的代码了。v3
的背后是 GPL
之父 Richard Stallman
不断在宣传推进,代表了开源激进派的最前沿。
MIT
MIT
是和BSD
一样宽范的许可协议,源自麻省理工学院(Massachusetts Institute of Technology, MIT),又称X11协议。作者只想保留版权,而无任何其他了限制。MIT与BSD类似,但是比BSD协议更加宽松,是目前最少限制的协议。这个协议唯一的条件就是在修改后的代码或者发行包包含原作者的许可信息。适用商业软件。使用MIT的软件项目有:jquery
、Node.js
。
MIT
与BSD
类似,但是比BSD协议
更加宽松,是目前最少限制的协议。这个协议唯一的条件就是在修改后的代码或者发行包包含原作者的许可信息。适用商业软件。使用MIT的软件项目有:jquery、Node.js。
如果没有特别要求,可以使用 MIT
。
在 github 上使用开源协议
在 github
上新创建一个一个文件。
然后文件名字输入 LICENSE
,在右边会自动弹出一个按钮
点击后,就可以自己选择协议了。
如何使用别人的开源项目
在使用开源项目的时候,对开源项目的操作要参照其代码的 LICENSE
,如果,github
项目没有这个文件,默认该代码是原作者所有。
在这里我引用一个 BSD
的开源项目引用说明。
1 | Copyright (c) 2017, Jun-Yan Zhu and Taesung Park |
在这个例子中,我们可以看到,这个项目是对前面两个项目的迭代。
- 在
pix2pix
迭代了DCGAN
的BSD
说明 - 在
pytorch-CycleGAN-and-pix2pix
迭代了pix2pix
的BSD
说明
所以,对于 BSD
还是 MIT
我们在使用项目的时候,最好在 LICENSE
中尽行引用说明,也不要随便删除代码中 autor
的信息。做到相互尊重。