开源协议与开源软件以及如何选择
本文于2021年1月7日由AlvinCR更新
文章导引
1 开源协议
1 内容
开源协议规定了你在使用开源软件时的权利和责任,也就是规定了你可以做什么,不可以做什么。
1.1 为什么要开源
于作者而言:
开源协议中一般都包含免责声明(禁止代码的作者承担代码使用后的风险及产生的后果),假设开源了一个对社会有潜在破坏的代码,如果有人利用这个做坏事,作者无需承担责任的。
于使用者而言:
一目明了:使用者快速了解哪些操作是被允许的,哪些不被不允许。
2 协议选择
2.1 图片
https://www.iteye.com/blog/sosuny-1026575
可以闭源许可:BSD许可,MIT许可,Apache许可
必须开源许可:LGPL许可,Mozilla许可,GPL许可
https://www.gcssloop.com/tips/choose-license(图片水印是自动打上的,并不是我的图)
2.2 文字
具体内容参考附录,下面是个人总结:参考网站:https://choosealicense.com/
- 对于社区工作。如果项目没有许可证,添加许可证。
- 许可宽松且简单。MIT许可证很短,重点突出。可以进行各种操作(例如制作和分发封闭源代码版本,也是与GNU GPLv3的区别)。Babel, .NET Core和 Rails 使用MIT许可证。
- 对于共享较为宽容。在GNU GPLv3同上但是不能进行分发封闭源代码的版本。Ansible, Bash和 GIMP 使用GNU GPLv3。
小结:
GNU+Apache+Mozilla协议是我常见的三大类别协议:
GPL 许可协议,也就是必须开源免费,并不适合商用软件。
Apache 协议在为开发人员提供版权及专利许可的同时,允许用户拥有修改代码及再发布的自由。
Mozilla协议必须开源免费,不能闭源收费,但是不能采用同样的许可还要提供文档说明修改点。
2.3 自动选择网站
https://creativecommons.org/choose/
通过这个网站我就可以直接筛选出适合我的协议,例如:不可商用,可以修改后分享但是修改后的文章也要共享(便于他人学习使用)。
3 注意事项
你默认接受发布文章/内容平台本身的协议,无论你是否愿意采用该协议,发出内容即默认你采用该协议。
知识共享协议也是版权协议的一种,是作者保障自己权益的一种方法,但是知识共享协议不适用于开源软件。
你在百度上发表的任何东西,不论是百度知道,百度文库或者是贴吧,百度自动拥有版权,可以随意使用这些内容,而在知乎上的回答,文章等则是作者拥有版权,知乎拥有使用权,当然了,前提是你为原创作者。
2 开源软件
1 WIKI定义
开源软件(英语:open source software,缩写:OSS)又称开放源代码软件,是一种源代码可以任意获取的计算机软件,这种软件的著作权持有人在软件协议的规定之下保留一部分权利并允许用户学习、修改以及以任何目的向任何人分发该软件。开源协议通常符合开放源代码的定义的要求。一些开源软件被发布到公有领域。开源软件常被公开和合作地开发。开源软件是开放源代码开发的最常见的例子,也经常与用户生成内容做比较[1]。 开源软件的英文“open-source software”一词出自自由软件的营销活动中[2]。
从上可以看出,开源软件是开源的一部分,此外开放源代码软件并不是公开源代码的软件,注意不要混淆。
2 开放源代码与自由软件
开放源代码有时不仅仅指开放源代码软件,它同时也是一种软件开放模式的名称。使用开放源代码开放模式的软件代表就有Linux操作系统。
来自:https://zh.wikipedia.org/wiki/%E5%BC%80%E6%BA%90%E8%BD%AF%E4%BB%B6
开放原代码包括自由软件,自由软件是开放源代码的一种形式,任何软件都可以以自由软件的形式进行发布。但是要让一个软件成为自由软件,需要以自由软件许可证的形式进行发布。这里使用的是自由软件许可证而非开源许可证的原因是:如果某些开源条件过于严格,导致用户权限受限严重,那么就不再被称为自由软件。
3 优点
开源软件的优点 优点 说明 低风险 使用闭源软件无疑是把命运交给他人,一旦封闭的源代码没有人来维护,你将进退维谷;而且相较于商业软件公司,开源社区很少存在倒闭的问题。 高品质 相较于闭源软件产品,开源项目通常是由开源社区来研发及维护的,参与编写、维护、测试的用户量众多,一般的 bug 还没有等爆发就已经被修补。 低成本 开源工作者都是在幕后默默且无偿地付出劳动成果,为美好的世界贡献一份力量,因此使用开源社区推动的软件项目可以节省大量的人力、物力和财力。 更透明 没有哪个笨蛋会把木马、后门等放到开放的源代码中,这样无疑是把自己的罪行暴露在阳光之下。 http://c.biancheng.net/view/2943.html
4 补充
GNU project致力于开发hurd(微内核)自由软件。但是hurd开发太烂跟不上计算机发展,紧急情况GNU引入第三方开发的Linux(宏内核),这个第三方就是指Linux之父(Linus torvalds,中文名:林纳斯)。但是Linux是GPL v2许可证,并非v3,所以Linux某部分闭源。GNU一怒之下改造出了Linux-Libre谈判Linux,Linux-Libre真正做到100%自由软件(上文说,自由软件更加宽松舒适)。举个例子,parabola、gnewsense就是100%自由的Linux-Libre发行版。Linux的logo是一只黑白皮毛的企鹅,Linux-Libre却是一只淡蓝色皮毛的企鹅。
https://www.zhihu.com/question/42117033/answer/196355713
附
1 开源协议具体内容
翻译原文:https://choosealicense.com/,下面的声明是我常见到的(GNU+mozilla公共许可+未经许可),此外还有其它的开源协议就不列举了。
GNU AGPLv3
Copyleft许可条件是提供许可作品和修改的完整源代码,其中包括在同一许可下使用许可作品的较大作品。版权和许可声明必须保留。贡献者明确授予专利权。使用修改后的版本通过网络提供服务时,必须提供修改后的完整源代码。
权限 | 条件 | 局限性 |
---|---|---|
|
|
GNU GPLv3
copyleft许可条件是提供许可作品和修改的完整源代码,其中包括在同一许可下使用许可作品的较大作品。版权和许可声明必须保留。贡献者明确授予专利权。
权限 | 条件 | 局限性 |
---|---|---|
|
|
GNU LGPLv3
copyleft许可条件是在同一许可或GNU GPLv3下提供许可作品和修改的完整源代码。版权和许可声明必须保留。贡献者明确授予专利权。但是,通过许可作品提供的界面使用许可作品的较大作品可能会以不同的术语分发,而没有大型作品的源代码。
权限 | 条件 | 局限性 |
---|---|---|
|
|
Mozilla公共许可证2.0
copyleft许可条件是提供可用的许可文件的源代码,以及在同一许可下(或在某些情况下为GNU许可之一)对这些文件的修改。版权和许可声明必须保留。贡献者明确授予专利权。但是,使用许可作品的较大作品可能会以不同的条款分发,并且没有为较大作品中添加的文件提供源代码。
权限 | 条件 | 局限性 |
---|---|---|
|
|
Apache许可2.0
其主要条件要求保留版权和许可声明。贡献者明确授予专利权。许可的作品,修改和更大的作品可能以不同的条款分发,并且没有源代码。
权限 | 条件 | 局限性 |
---|---|---|
|
|
未经许可
无条件的专用于公共领域的许可。未经许可的作品,修改和更大的作品可能会以不同的术语分发,并且没有源代码。
权限 | 条件 | 局限性 |
---|---|---|
|