背景:github是一个支持开源的平台,我们可以通过上传自己的代码,借鉴别人的代码,为别人的代码打补丁等方式参与到社会化编程的洪流中去,为建设美好的社会做出自己的一份力量。但是不同的代码是有不同的权利限制的,这个限制就是通过repository中的license文件来进行声明的。
文章目录
没有license文件
假如repository中没有license文件,那么就默认这个文件是受到版权法(copyright)保护的,你对你的代码拥有一切权利,没有你的允许任何人不能够拷贝,重新发布,或者在原来的代码基础之上做二次开发。目前,私人仓库对于个人而言已经免费开放,那么想要更好的保护自己的代码的话还是私人仓库更可靠一点(别人无法搜索和fork私人仓库),毕竟copyright只对于想要遵守的人有效。
其他的license文件类型
当然,github是支持开源代码的,假如想要开源自己的代码,那么就需要添加一个license文件让别人清楚他们能对这些代码做什么事。那么如何选择合适的license文件呢?
这个github的一个网址很好的说明了自己如何选择一个适合自己的授权文件。
关于public和license之间的关系
public的repository不表示它是开源的,其他人没有权限使用其中的代码。只有利用license文件对其进行授权别人才有权对其中的代码进行二次开发等。
license文件的作用以及如何选择
license文件主要是用来告知别人,他们可以对这些软件做什么.
假如你不知道如何去选择license文件的时候,那么选择MIT license就不错(上面提到的网站推荐)。因为它短小精悍,易于理解,在保持这个license的前提下,任何人都可以对他进行修改。
当你的repository对其他的代码有所依赖,比如你要开源一个node.js代码,那么你需要用来三方的库,这些三方库有着自己对应的授权标准,假如三方库也是开源的,允许修改(permissive),那么你可以使用任何自己想要的license文件。注意三方源应该是permissive的license,常见的permissive license有:MIT,Apache2.0,ISC,BSD.
当三方库有着较强的版权保护,那么你需要使用和它们一致的license,常见的保护版权的license有GPLv2,GPLv3,AGPLv3。
更换license文件(个人理解)
当开发环境发生了变化(需要增强版权),自己需要更改自己的license文件内容。此时需要考虑自己将要使用的license文件与原来的license文件的兼容性。注意:这里分为两种情况,一种是把之前所有的release全部都更换license,另一种是只给新的release添加新的license,旧的release不进行修改。只对新的release的license进行修改时,我理解的网站上的叙述是可以直接修改,但是要考虑到其他相关人员的使用不便。
当需要对之前的release进行修改的时候,我们首先需要考虑我们新的license与旧的license之间的兼容性,两者兼容则直接修改即可。假如目前的license是permissive(宽松)的,那么在原来的license基础之上添加新的版权条款。假如目前的license是not permissive(较为严格)的,并且你不是唯一一个代码的所有者,那么需要所有者们(比如其他的commiter)共同通过license的修改。
当你是这个代码的唯一所有人,那么你可以将它修改为任何你想的license类型。
license文件的位置
一般情况下license文件会被放置在repository的根目录下,也就是跟你的.git在同一个文件夹下。一般直接命名为license,license.md,license.txt均可。有时候,在自己的README.md下可以添加自己对于license的声明:比如直接剔除,我的这个项目是在什么样的license下进行授权的"this project is licensed under the terms of the MIT license"。github官网还是建议直接利用license文件来进行授权,而不是简单的在README里提一句。
如何添加license文件
首先来到自己的repo下
登录
找出自己的目标repo,然后进入(可以直接左侧搜索)
选择Add file–>Create new file
在红框中输入license,不区分大小写,然后会看到右侧自动出现choose a license template字样,选择Choose a license template
添加文件
选择choose a license template之后会跳转到一个选择授权模板的文件
我们可以在左侧选中我们的license类型,中间会出现该类型的license适用的类型以及其他介绍。最右侧可以通过review and submit将我们的license模板提交到我们的授权文件中
此时回到输入内容的界面,我们此时可以输入我们自己的授权要求
提交授权文件
在页面的最下方可以看到
我们有两种选择方式,第一种直接在网页端提交一个commit,把这个文件添加进去。第二种是创建一个新的branch,然后提交一个新的pull request请求。
通过request检查之后可以看到绿色字体(Able to merge),我们添加自己的评论之后点击下方的 create pull request即可。
看到我们的pull request这里出现了一个消息,就跟聊天似的。然后点击下方的merge pull request即可将这个license文件合并到我们的文件里。
此时我们也完成了一个pull request,pull request是社会化编程的完美表现形式。
先写到这,未完待续!