开源软件自由软件CopyleftCC都是啥,傻傻分不清楚?

Posted vigor2323

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开源软件自由软件CopyleftCC都是啥,傻傻分不清楚?相关的知识,希望对你有一定的参考价值。

说实话,这些概念,确实你套着我,我套着你,很容易弄糊涂的。

简单地说,OSI认可的,就是正经八百的开源软件;FSF认可的,就是正经八百的自由软件;Copyleft的,不仅是自由软件,而且要求再次发布时,仍然得是自由软件;CC多用于文字和图片,有多个选项可以组合使用,其中有的是自由的,有的是Copyleft的。

当然,如果没有基础,上面这段也是看不懂的。

下面就用人话说说,这些到底都是啥,又是个啥关系。

争取让零基础的也看懂。

想看关系图的,直接跳到最后一章。

零基础的看一下

如果你对版权没有概念,可以看看这个例子1

小明拍摄了一张云南的风光照片,发布在自己的个人网站上。小红则正在制作一部宣传片,她发现了小明发布的照片。但小红无法联系到小明,所以不太敢使用这张照片,万一用了以后,被小明告了怎么办?

如果小明在发布照片的时候,用了CC BY,就表明了:只要署我的名,你可以随便用。小红看见这照片用的是CC BY,就可以放心大胆地使用,在宣传片末尾将小明的名字列出即可。

CC BY就是CC协议的一种,它是一种许可证,告诉使用者有什么权利和义务。

这个例子说明了小红的版权意识,以及小明处理自己作品版权的一种方法。本文所说的开源软件、自由软件、copyleft、CC等等,都是在说版权事宜的处理方法。

如果你想了解关于版权更多的知识,可以看看这篇文章:copyright到底是什么意思?

先得了解什么是许可证

一个软件,是什么性质,取决于它采用的许可证。

所谓许可证,就是一个书面协议,软件作者(或所有者)规定用户有哪些权利和义务:也即许可或不许可做哪些事。

Windows、微软Office用的是商业许可证,不给源码,不允许逆向,不允许修改,更不允许一个最终用户拿这个去卖钱。(让人卖那还了得?!)

而开源软件和自由软件都是给人源码,让人改,让人卖的(绝大多数),这境界,高下立判!

但并不是能从网上免费得到源码的就是开源软件或自由软件,能拿到源码的只是source available,可翻译为“源码可得”、“源码可见”、“有源软件”2等等。

有人统计过,对于源码可得软件,目前有大约2600多种许可证。这些许可证的绝大多数都不符合“开源”的定义3,然而,20个最常用的许可证覆盖了98%的源码可得软件,所以,我们只需要了解那些常用的许可证即可。

被使用最多的许可证是下面这9个(OSI统计4),其中又以前6个为最甚。

1、Apache License 2.0 (Apache-2.0) 2、3-clause BSD license (BSD-3-Clause) 3、2-clause BSD license (BSD-2-Clause) 4、GNU General Public License (GPL) 5、GNU Lesser General Public License (LGPL) 6、MIT license (MIT) 7、Mozilla Public License 2.0 (MPL-2.0) 8、Common Development and Distribution License 1.0 (CDDL-1.0) 9、Eclipse Public License 2.0 (EPL-2.0)

其中的Apache、GPL、MIT、EPL,我都写了人话版,点击上面的链接即可查看。

如果你写了个软件,源码放在github或者gitee或者互联网任何地方,你可以选一个许可证用,如果你都不满意,你也可以自己写一个许可证(一般人都懒的写)。

如你发布的软件不带许可证,就会有一点问题:别人不知道你允许他做什么,只有问你才知道他有什么权利。当然,既然你已经把源码放在互联网上了,别人至少是可以看、可以学习、可以评价的(比如他说你写的很好或者很烂),这都不犯法(著作权法)。

还要注意的是,开源软件的企业版一般都不是开源软件。企业版用的是商业许可证,是要用来挣大钱的!开源软件的社区版,通常才是开源软件!可不要傻傻分不清楚。

什么是开源软件

“开源软件”的定义掌握在OSI手中,毕竟是人家提出的这个概念(Open Source)。

OSI即开放源代码促进会(Open Source Initiative),成立于1998年2月,创始人为大名鼎鼎的Bruce Perens和大名鼎鼎的Eric S. Raymond,其目标是促进和保护开源软件及开源社区,致力于提高人们对开源软件的认识和采用。

开源软件的定义有10条,我用人话说了一遍:开源定义是什么?,有兴趣可以看一看。

这篇文章里,我大致总结了一下OSI的开源精神:

我们就是要提供免费的源码,而且是无差别的提供,我们要把开源推进到每个国家、每个地区,推进到每个领域、每个行业,我们要让开源造福社会、造福人类,我们不歧视、不限制,我们推崇自由、平等,我们要的是全人类的共同繁荣和进步!

看上去是不是很崇高?

OSI会审查并批准某个许可证是不是“开源许可证”,一个软件是不是开源软件,看它所用的许可证是不是OSI认可的就可以。

OSI认可的许可证列表在这里:

https://opensource.org/licenses/

我大致看了一下,目前大概有113个吧,BSD、MIT、Apache、GPL、LGPL、MPL、CDDL、EPL都赫然在列。我们常用的,都是开源软件许可证。

(虽然你还是要仔细看一下,可能某个许可证的某些版本是不认的)

总结一下:

只要用开源许可证的,就是开源软件。

只要是OSI认可的,就是开源许可证。

满足开源定义的,一般都会被OSI认可。

什么是自由软件

自由软件的定义,掌握在FSF手中,FSF就是自由软件基金会(Free Software Foundation),于1985年10月由大名鼎鼎的Richard stallman建立。其主要工作是致力于推广自由软件、促进计算机用户的自由。

Stallman是非常推崇用户自由的,他认为,软件生产出来,就应该给用户源码,就应该让用户有改进软件的自由。在他看来,专有软件(闭源的)是不公正的,是凌驾于用户之上的,专有程序的开发者控制着程序,并对用户产生了一种控制权,用户在试图自己动手修改软件时,由于没有源码,就不得不屈服于专有软件所带来的“枷锁”。

如果用户有源码,并且可以修改,他就可以自由地自己修改(或让其他人来修改),用户就不再祈求拥有源代码的那家公司或那个程序员来帮他修改,就没有人再处于垄断的地位。

FSF说,如果一个软件提供了下面这4项自由5,它就是自由软件。

自由度0:用户可以按照自己的意愿,自由地运行该软件,而不论出自何种目的。

自由度1:用户可以自由地学习该软件,可以按照自己的意愿修改该软件。

自由度2:用户可以自由地分发该软件的拷贝,这样就可以帮助他人。

自由度3:用户可以自由地分发该软件修改后的拷贝,这样,他人可以从中受益。

定义中所谓“自由”,意味着这些行为(运行、学习、修改、分发)不必事先征得任何人的许可,也不必为此额外支付任何费用。

FSF还强调,商业和自由并不矛盾,钱可以收,但用户的自由不可剥夺,源码要给用户。

在FSF的官网上,维护着FSF认可的自由软件许可证列表:

https://www.gnu.org/licenses/license-list.html

和OSI列表一样,BSD、MIT、Apache、GPL、LGPL、MPL、CDDL、EPL也都赫然在列。

(虽然你还是要仔细看一下,可能某个许可证的某些版本是不认的)

也即,这些常用的开源软件许可证,也是自由软件许可证!

对的,差别不大的。

开源软件和自由软件的关系

Perens曾希望OSI可以向普通人(非软件业人士)介绍自由软件的原则,但是Richard Stallman不这样认为,他觉得OSI在理念上和自己有很大不同,认为OSI太过实用化,而不是像FSF这样强调自由。

但,在笔者看来,两者其实差不多,顶多是着重点不同。一个强调开放(open),一个强调自由(free)。

所以,最终,连FSF都在官网上承认了这点6

“开源软件和自由软件或多或少是同一类软件,虽然并不是完全相同:开源所接受的一些许可证我们看来限制过多,还有一些我们认可的自由软件他们不认可。但不管怎样,差异是很小的:几乎所有的自由软件都是开源软件,几乎所有的开源软件都是自由软件。”

另外,如果你对一个许可证是不是开源的、是不是自由的,心存疑虑,你可以在这两个地方查一下,有人已经整理得很好了:SPDX7、维基百科8

什么是copyleft

首先强调一下:自由软件和copyleft,是两个概念!

copyleft不好翻译,目前有“版权开放”、“版权属左”、“左版”、“著佐权”、“版权左派”等多种翻译,但并没有被普遍接受和采纳的,所以大多数场合下,不翻译,直接用。

先说说它所谓的“对立面”:copyright,此即版权,亦称著作权,是指作者对其作品的权利。从字面上看,copyright尤其关注copy的权利(right),一个软件卖给某用户后,除非作者同意,用户是不能随意复制(比如说让你在这个机器上用,你就不能在另外一台机器上再装一套)的。一个作品,作者拥有最多的权利,作者不给,你就没有,也即我们常看到的All rights reserved。

copyleft是反着来的,Richard Stallman曾说明过copyleft一词的由来:

“1984或1985年,DonHopkins给我写了一封信。在信封上他写了一些很有趣的话, 其中包括:copyleft — all rights reversed(笔者注:注意是reverse!)。于是,我就用copyleft一词以命名当时我正考虑的软件发行概念。” 9

FSF对copyleft的定义是这样的: “copyleft是一种通用的方法,通过它,使某个程序成为自由软件,并要求其衍生程序(对该程序进行修改和扩展后产生的程序)也是自由软件。”10

从定义看,copyleft软件天然是一个自由软件,但比自由软件多了一项对用户的要求,就是copyleft许可证要求修改后的作品,也必须以copyleft许可证发布。这就是人们常说的“传染”(比较好的说法是“互惠”),你加了点代码,那这些代码也得贡献出来。

值得注意的是,copyleft并不是说没有版权,copyleft仍然是有版权的,只不过作者基本只保留了署名权,以及要求保持软件自由,其他所有权利都已开放,都已left给世人。

比较著名的copyleft许可证有:GPL、LGPL、AGPL、Watcom-1.0、GFDL、CC-BY-SA。

Linux内核就是copyleft的,因为Linux内核用的是GPL。

在Stallman的哲学理念中,信息资产就像数学公式、定理一样,应该是公有的,开放的,应该让任何人都可以使用和改进。他说:“商业软件通过版权剥夺了用户的自由,我们使用版权来给予他们自由。”,懂政治学的同学知道,这在本质上确实是左(left)的。

CC是个啥

CC的创始人是Lawrence Lessig,他认为,“美国人多少是有些精神分裂的”,一方面,他们重视自由,鼓励共享,但另一方面,他们却采取极端保护主义的版权法律架构,保护知识的垄断。copyright动不动all rights reserved,copyleft却几乎all rights released,这都是比较极端的做法,Lessig试图走出一条灵活的、有弹性的中间路线,让作者根据自己的偏好,选择保护“部分权利”。

他于2001年创立了知识共享组织(Creative Commons),开展CC的维护和推广,目前CC的版本为4.0版本(2013年发布)。

不过,CC一般不用于软件,也不宜用于软件。CC通常用于文字、图像、音乐、视频等。

CC有4个选项可以选择和组合,这四个选项分别是:BY(署名)、NC(非商业性使用)、ND(禁止演绎)、SA(相同方式共享):

BY的意思是:我允许你们分发我的作品,但要署上我的名。

NC的意思是:不能商用(如果确实想商用可以来找我谈合作)。

ND的意思是:不许演绎,也不能修改。

SA的意思是:如果你演绎了,你修改了,你必须按照本选项组合来共享你的修改。(比如某组合是BY-SA-NC,再分发时也必须是BY-SA-NC)

注意,ND和SA是不能组合在一起的,因为一个不许修改,一个允许修改。

一般情况下,有这么6种CC可供使用:CC BY、CC BY-NC、CC BY-ND、CC BY-NC-ND、CC BY-SA、CC BY-NC-SA。

在FSF看来,由于NC、ND,是不让商用或不让演绎,所以含有它们的组合不是自由的。所以上面6种组合中只有CC BY和CC BY-SA是自由的,其中,CC BY-SA更是copyleft的。(FSF批准的是4.0版本)

OSI没有批准任何CC组合。

除了上面这6种CC,还有一种特殊的叫CC0,这个连BY都不要了,此时,作者放弃了一切版权,作品落入公用领域(Public Domain),任何人只要不违法,都可以随意使用此作品。(同样地,CC0不建议用于软件。)

虽然公用领域的作品大多没有许可证,但如果你明确说此作品落入公用领域,那是非常好的做法。(比如用unlicense11、CC012、甚至是WTFPL13来说明)一般认为,公用领域是自由的14,部分是开源的。(unlicense是15开源的,CC016因为专利问题导致争议,WTFPL未被认可17

能否用一张图表示一下

可以。

简单解释一下上图:

软件分提供源码的,和不提供源码的;在提供源码的里面,有的是开源软件,有的是自由软件,其余的只能叫源码可得软件;开源软件中的大部分都是自由软件;自由软件中有一类是copyleft的;开源软件和自由软件,都允许被商用;CC通常用于文字、图像、影视、音乐等,根据其选项,有些允许商用,有些不允许;有些是自由的,有些不自由,其中一种组合是copyleft的。

总之:

开源软件强调开放,自由软件强调自由,两者其实差不多。开源所给予人们运行、复制、修改、再发布的自由,正是自由软件要给人们的。

copyleft是自由软件的一种,它要求自由世代相传。

CC通常不用于软件,多用于文字、图像等,有些是自由的,有些是copyleft的。

现在,你是不是清楚了很多?

如果又不清楚了,就再来看一遍。

文|卫剑钒

本文采用CC BY发布。

关注本公众号,看更多相关文章。


  1. https://zhuanlan.zhihu.com/p/20641764 

  2. https://zhuanlan.zhihu.com/p/20784520 

  3. https://www.synopsys.com/content/dam/synopsys/sig-assets/reports/2020-ossra-report.pdf 

  4. https://opensource.org/licenses/category 

  5. https://www.gnu.org/philosophy/free-sw.html 

  6. https://www.gnu.org/philosophy/categories.html.en 

  7. https://spdx.org/licenses/ 

  8. https://en.wikipedia.org/wiki/Comparison_of_free_and_open-source_software_licences  

  9. https://www.gnu.org/gnu/thegnuproject.html 

  10. https://www.gnu.org/licenses/copyleft.en.html 

  11. https://unlicense.org 

  12. https://creativecommons.org/publicdomain/zero/1.0/legalcode 

  13. http://www.wtfpl.net/about/ 

  14. https://www.gnu.org/licenses/license-list.en.html#PublicDomain 

  15. https://opensource.org/licenses/unlicense 

  16. https://opensource.org/faq#cc-zero 

  17. https://opensource.org/minutes20090304

以上是关于开源软件自由软件CopyleftCC都是啥,傻傻分不清楚?的主要内容,如果未能解决你的问题,请参考以下文章

UNIXGNU自由软件Linux开源软件UbuntuAndroidGitHub等自由及开源软件FOSS十大事件

GNU和GPL是啥

GPL是啥意思?急

GNUGPLFSF自由软件开源软件

一 linuk系统简介

什么是开源软件?