程序员开源协议

2017/9/18 posted in  Android

自由软件

自由软件是一种可以不受限制地自由使用、复制、研究、修改和分发的软件。注意,自由并不代表着免费。正是这种开放、开源的精神,计算机软件才得以如此飞快地发展。

开源协议

为保护自由软件原作者的相关知识产权,在作者与用户之间设立的一种虚拟合同,或者称之为授权方式。其中的条款内容,就是用来限制软件使用者的使用方式等。他人如有违反协议,作者有权利发起诉讼,维护自身权益。

开源届定义有几百种不同的开源协议,宽松程度不一,用以满足开源项目的各种使用场景。比如,是否允许商用,是否允许修改,修改后是否需要继续开源,开源是否必须继续使用相同协议授权等。

不过,作为普通用户,无论你是作为开源作者造轮子,还是作为普通用户借轮子,我们只需要知道比较流行的那几种,并能够加以区分即可。否则,上百种协议真要细分的话,绝非易事。

早期一名乌克兰程序员画有一张分析图,简单明了地描述出六种流行开源协议的使用区分。阮一峰老师翻译如下:

20171030150929343199353.png
20171030150929343199353.png

更简单点的话,也可以参考这张图,更加通俗易懂:

20171030150929351771005.png
20171030150929351771005.png

更多的开源协议,我们还可以参考这张图(目前只发现英文版):

20171030150929356264898.png
20171030150929356264898.png

至于使用的话,不妨借助 GcsSloop 制作的开源协议网站:

choosealicense.online

如图所示:

20171030150929362375011.png
20171030150929362375011.png

选择所需要的协议,一键复制即可。

说完这些,回过头来想想,估计很多人都会有疑惑:开源协议与我何干?但是,作为一名程序员,开源协议还真与你我关系紧密。

如果你是 GitHub 重度依赖者,如果你稍作留意,不难发现,基本上出名的开源项目根目录中都有一个协议文件:LICENSE.txt,而在 README.me 说明文件底部伴随着 License 内容。这就是你需要留意的地方,使用任意开源项目之前,记得阅读一下该项目的开源协议。

市场上部分 App 也会在应用中增加第三方开源项目时的使用版权说明,比如支付宝安卓版。这也是一种查看优秀 App 都使用哪些开源项目的途径之一。

如果你也是一个作者,准备开源自己的项目时,那就更得注意,想想自己需要选择哪一个开源协议更加合适。比如,大名鼎鼎的 Linux 系统采用便是 GPL 协议;作为安卓程序员,我们当然知道,我们赖以生存的 Android 开源系统,其内核采用的就是 Linux 内核。