diff --git a/chapters/01-start-project.md b/chapters/01-start-project.md index e8c1fbb..bc54ff5 100644 --- a/chapters/01-start-project.md +++ b/chapters/01-start-project.md @@ -1,32 +1,56 @@ 创建开源项目 === -人们创建 +人们出于不同的目的来创建开源项目,可不论目的是什么,过程都是一样的。 + +1. 首先,我们需要为我们的项目取一个名字。 +2. 然后,为我们的开源项目选择一个合适的 LICENSE +3. 然后再去创建项目 取一个好的名字 --- -### 保持命令规则 +取名字,从来就不是一件容易的事。 -个性化,如同 ID 一般。 +因此,我就长话短说,一般就是取一个有意义的名字,当然没有意义也没有任何问题。 + +通常而言,如果自己计划有一系列的开源项目,那么我们可以保持一定的命令规则。 挑选好 LICENSE --- -事实上,在我们看到的一些外版书籍上,如果拥有代码。那么作者一般就会在前言或者类似的位置里,指明书中代码的版权所属。 +> 在二十世纪而七十年代末和八十年代初,为了防止自己的软件被竞争对手所使用,大多数厂家停止分发其软件源代码,并开始使用版权和限制性软件许可证,来限制或者禁止软件源代码的复制或再分配。随后,Richard Matthew Stallman(Richard Matthew Stallman)发起了自由软件运动,他开创了 Copyleft 的概念:使用版权法的原则来保护使用、修改和分发自由软件的权利,并且是描述这些术语的自由软件许可证的主要作者。最为人所称道的是GPL(被z广泛使用的自由软件协议)。[^rms] -如: +(PS:关于自由软件及 RMS 的更多信息、历史,可以阅读《若为自由故:自由软件之父 - 理查德 斯托曼传》) -> 也许你需要在自己的程序或文档中用到本书的代码,但除非大篇幅地使用,否则不必与我们联系取得授权。例如,用本书中的几段代码编写程序无需请求许可,blabla。 +[^rms]: https://zh.wikipedia.org/wiki/%E7%90%86%E6%9F%A5%E5%BE%B7%C2%B7%E6%96%AF%E6%89%98%E6%9B%BC + +随后,便诞生了开源软件的概念,开源的要求比自由软件宽松一些[^gnu_gpl]。迄今发布的自由软件源代码都是开源软件,而并非所有的开源软件都是自由软件。这是因为不同的许可(协议)赋予用户不同的权利,如 GPL 协议强制要求开源修改过源码的代码,而宽松一点的 MIT 则不会有这种要求。 + +[^gnu_gpl]: https://www.gnu.org/philosophy/open-source-misses-the-point.zh-cn.html + +如下是不同开源许可证的市场占有率及使用情况。 ![License 使用情况](./img/permissive-vs-copylift-license-2.jpg) +又比如,在我们看到的一些外版书籍上,如果拥有代码。那么作者一般就会在前言或者类似的位置里,指明书中代码的版权所属。如:``也许你需要在自己的程序或文档中用到本书的代码,但除非大篇幅地使用,否则不必与我们联系取得授权。例如,用本书中的几段代码编写程序无需请求许可,blabla``。 + +于是,选择一个合理的 LICENSE,就变成了一个有趣的话题。为此,笔者做了一个如何进行开源协议选型的流程图: + +[![如何选择 License](./img/licenses.png)](https://github.com/phodal/licenses) + +简单地来说,这些 License 之间是一些权利的区别,如当你把代码放置到公有领域,就意味着任何人可以修改,并且不需要标明出注;可如果你想要别人标明出处及作者,你就需要 MIT 协议;而你希望别人闭源的话,那么你就需要 MPL 协议等等。 + +那么,下面让我们简单地介绍一下不同的几个协议。 + ### 公有领域 > WTFPL(Do What The Fuck You Want To Public License,中文译名:你他妈的想干嘛就干嘛公共许可证)是一种不太常用的、极度放任的自由软件许可证。它的条款基本等同于贡献到公有领域。[^wtfpl] [^wtfpl]: https://zh.wikipedia.org/wiki/WTFPL +这就意味着,对于拿到这些代码的其他人,他们想怎么修改就可以怎么修改。 + 这取决于 ### GPL @@ -39,23 +63,23 @@ 因此,一般而言,我使用的是 MIT 协议。至少我保留了一个署名权,即你可以修改我的代码,但是在 LICENSE 里必须加上我的名字。 +选用 MIT 特别有意思,特别是在最近几年里,发生过: + + - [iView “抄袭” Element UI 事件](https://zhuanlan.zhihu.com/p/25739512) + - [AndroidTVLauncher “抄袭” 事件](https://github.com/JackyAndroid/AndroidTVLauncher/issues/22) + +等等。这告诫了我们,如果你不想要有这种经历,那么就不要用 MIT 了。 + ### Creative Commons 是的,当我写 Markdown 的时候,考虑到未来会以纸质书的形式出现,便会使用 CC-BY-NC-ND 协议: - - cc -> Creative Commons - - by -> 署名(英语:Attribution,by) + - CC -> Creative Commons + - BY -> 署名(英语:Attribution,by) - NC -> 非商业性使用(英语:NonCommercial) - - 禁止演绎 ->(英语:NoDerivs)。 + - ND -> 禁止演绎(英语:NoDerivs)。 即,任何人可以使用我写的电子书来自由复制、散布、展示及演出,但是不得用于商业用途(作者本人可以)。它可以随意地放在他的博客上,他的各个文章里。但是必须标明出自,并且不得改变、转变或更改本作品。 如果你不介意的话,你可以使用公有领域(Public Domain)。可是这样一来,万一有一天,别人直接拿的作品出书,你就骂爹了。 -官方主页 ---- - -一个好的例子是 GitHub Pages - - -然后,创建 diff --git a/chapters/03-build-github-project.md b/chapters/03-build-github-project.md index 95f193d..bfbe0bd 100644 --- a/chapters/03-build-github-project.md +++ b/chapters/03-build-github-project.md @@ -1,10 +1,10 @@ -# 构建GitHub项目 +# 构建 GitHub 项目 -## 如何用好GitHub +## 如何用好 GitHub -如何用好GitHub,并实践一些敏捷软件开发是一个很有意思的事情.我们可以在上面做很多事情,从测试到CI,再到自动部署. +如何用好 GitHub,并实践一些敏捷软件开发是一个很有意思的事情.我们可以在上面做很多事情,从测试到CI,再到自动部署. -###敏捷软件开发 +### 敏捷软件开发 显然我是在扯淡,这和敏捷软件开发没有什么关系。不过我也不知道瀑布流是怎样的。说说我所知道的一个项目的组成吧: diff --git a/chapters/05-create-project-documents.md b/chapters/05-create-project-documents.md index 09d65d2..ba1978a 100644 --- a/chapters/05-create-project-documents.md +++ b/chapters/05-create-project-documents.md @@ -38,7 +38,7 @@ README通常会显示在GitHub项目的下面,如下图所示: * 如何参与贡献 * 协议 -## 在线文档 +## 官方首页与在线文档 很多开源项目都会有自己的网站,并在上面有一个文档,而有的则会放在[https://readthedocs.org/](https://readthedocs.org/)。 diff --git a/github-roam.md b/github-roam.md index 32cd337..9820f71 100644 --- a/github-roam.md +++ b/github-roam.md @@ -83,32 +83,56 @@ 创建开源项目 === -人们创建 +人们出于不同的目的来创建开源项目,可不论目的是什么,过程都是一样的。 + +1. 首先,我们需要为我们的项目取一个名字。 +2. 然后,为我们的开源项目选择一个合适的 LICENSE +3. 然后再去创建项目 取一个好的名字 --- -### 保持命令规则 +取名字,从来就不是一件容易的事。 -个性化,如同 ID 一般。 +因此,我就长话短说,一般就是取一个有意义的名字,当然没有意义也没有任何问题。 + +通常而言,如果自己计划有一系列的开源项目,那么我们可以保持一定的命令规则。 挑选好 LICENSE --- -事实上,在我们看到的一些外版书籍上,如果拥有代码。那么作者一般就会在前言或者类似的位置里,指明书中代码的版权所属。 +> 在二十世纪而七十年代末和八十年代初,为了防止自己的软件被竞争对手所使用,大多数厂家停止分发其软件源代码,并开始使用版权和限制性软件许可证,来限制或者禁止软件源代码的复制或再分配。随后,Richard Matthew Stallman(Richard Matthew Stallman)发起了自由软件运动,他开创了 Copyleft 的概念:使用版权法的原则来保护使用、修改和分发自由软件的权利,并且是描述这些术语的自由软件许可证的主要作者。最为人所称道的是GPL(被z广泛使用的自由软件协议)。[^rms] -如: +(PS:关于自由软件及 RMS 的更多信息、历史,可以阅读《若为自由故:自由软件之父 - 理查德 斯托曼传》) -> 也许你需要在自己的程序或文档中用到本书的代码,但除非大篇幅地使用,否则不必与我们联系取得授权。例如,用本书中的几段代码编写程序无需请求许可,blabla。 +[^rms]: https://zh.wikipedia.org/wiki/%E7%90%86%E6%9F%A5%E5%BE%B7%C2%B7%E6%96%AF%E6%89%98%E6%9B%BC + +随后,便诞生了开源软件的概念,开源的要求比自由软件宽松一些[^gnu_gpl]。迄今发布的自由软件源代码都是开源软件,而并非所有的开源软件都是自由软件。这是因为不同的许可(协议)赋予用户不同的权利,如 GPL 协议强制要求开源修改过源码的代码,而宽松一点的 MIT 则不会有这种要求。 + +[^gnu_gpl]: https://www.gnu.org/philosophy/open-source-misses-the-point.zh-cn.html + +如下是不同开源许可证的市场占有率及使用情况。 ![License 使用情况](./img/permissive-vs-copylift-license-2.jpg) +又比如,在我们看到的一些外版书籍上,如果拥有代码。那么作者一般就会在前言或者类似的位置里,指明书中代码的版权所属。如:``也许你需要在自己的程序或文档中用到本书的代码,但除非大篇幅地使用,否则不必与我们联系取得授权。例如,用本书中的几段代码编写程序无需请求许可,blabla``。 + +于是,选择一个合理的 LICENSE,就变成了一个有趣的话题。为此,笔者做了一个如何进行开源协议选型的流程图: + +[![如何选择 License](./img/licenses.png)](https://github.com/phodal/licenses) + +简单地来说,这些 License 之间是一些权利的区别,如当你把代码放置到公有领域,就意味着任何人可以修改,并且不需要标明出注;可如果你想要别人标明出处及作者,你就需要 MIT 协议;而你希望别人闭源的话,那么你就需要 MPL 协议等等。 + +那么,下面让我们简单地介绍一下不同的几个协议。 + ### 公有领域 > WTFPL(Do What The Fuck You Want To Public License,中文译名:你他妈的想干嘛就干嘛公共许可证)是一种不太常用的、极度放任的自由软件许可证。它的条款基本等同于贡献到公有领域。[^wtfpl] [^wtfpl]: https://zh.wikipedia.org/wiki/WTFPL +这就意味着,对于拿到这些代码的其他人,他们想怎么修改就可以怎么修改。 + 这取决于 ### GPL @@ -121,26 +145,26 @@ 因此,一般而言,我使用的是 MIT 协议。至少我保留了一个署名权,即你可以修改我的代码,但是在 LICENSE 里必须加上我的名字。 +选用 MIT 特别有意思,特别是在最近几年里,发生过: + + - [iView “抄袭” Element UI 事件](https://zhuanlan.zhihu.com/p/25739512) + - [AndroidTVLauncher “抄袭” 事件](https://github.com/JackyAndroid/AndroidTVLauncher/issues/22) + +等等。这告诫了我们,如果你不想要有这种经历,那么就不要用 MIT 了。 + ### Creative Commons 是的,当我写 Markdown 的时候,考虑到未来会以纸质书的形式出现,便会使用 CC-BY-NC-ND 协议: - - cc -> Creative Commons - - by -> 署名(英语:Attribution,by) + - CC -> Creative Commons + - BY -> 署名(英语:Attribution,by) - NC -> 非商业性使用(英语:NonCommercial) - - 禁止演绎 ->(英语:NoDerivs)。 + - ND -> 禁止演绎(英语:NoDerivs)。 即,任何人可以使用我写的电子书来自由复制、散布、展示及演出,但是不得用于商业用途(作者本人可以)。它可以随意地放在他的博客上,他的各个文章里。但是必须标明出自,并且不得改变、转变或更改本作品。 如果你不介意的话,你可以使用公有领域(Public Domain)。可是这样一来,万一有一天,别人直接拿的作品出书,你就骂爹了。 -官方主页 ---- - -一个好的例子是 GitHub Pages - - -然后,创建 # Git基本知识与GitHub使用 @@ -360,13 +384,13 @@ CLA即Contributor License Agreement,在为一些大的组织、机构提交Pul 他们都要求我签署CLA。 -# 构建GitHub项目 +# 构建 GitHub 项目 -## 如何用好GitHub +## 如何用好 GitHub -如何用好GitHub,并实践一些敏捷软件开发是一个很有意思的事情.我们可以在上面做很多事情,从测试到CI,再到自动部署. +如何用好 GitHub,并实践一些敏捷软件开发是一个很有意思的事情.我们可以在上面做很多事情,从测试到CI,再到自动部署. -###敏捷软件开发 +### 敏捷软件开发 显然我是在扯淡,这和敏捷软件开发没有什么关系。不过我也不知道瀑布流是怎样的。说说我所知道的一个项目的组成吧: @@ -1037,7 +1061,7 @@ README通常会显示在GitHub项目的下面,如下图所示: * 如何参与贡献 * 协议 -## 在线文档 +## 官方首页与在线文档 很多开源项目都会有自己的网站,并在上面有一个文档,而有的则会放在[https://readthedocs.org/](https://readthedocs.org/)。 diff --git a/img/licenses.png b/img/licenses.png new file mode 100644 index 0000000..066b5f2 Binary files /dev/null and b/img/licenses.png differ diff --git a/index.html b/index.html index 8e11196..a7653ca 100644 --- a/index.html +++ b/index.html @@ -77,16 +77,13 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
  • 创建开源项目
  • Git基本知识与GitHub使用
  • -
  • 构建GitHub项目