使用Apache协议的是*软件吗?

使用Apache协议的是*软件吗?

点击上方“开源社”关注我们

使用Apache协议的是*软件吗?

| 作者:卫sir

| 转载自:微月人话

| 编辑:黄欣宜

| 设计:刘颖洁

| 责编:王玥敏

大家都知道的是,使用 Apache 协议的是开源软件,但若问是不是*软件呢?

大多数人是很犹豫的。

因为“*”两个字,还挺吓人的。

很多人以为,只有采用 GPL 协议的软件才是*软件。

其实,采用 Apache  2.0协议的也是*软件。

只不过,*软件并不等同于 copyleft ,这才是人们容易搞混的东西。

本文就是简单搞明白一下什么是开源软件,什么是*软件,什么是 copyleft 。

01

谁掌管着定义?

“开源软件”和“*软件”的定义掌握在这两个组织手中。

1、开放源代码促进会 OSI ( Open Source Initiative ),维护着“开源”( Open Source )软件的定义以及其认可的许可证列表。OSI 的目标是促进和保护开源软件及开源社区,致力于提高人们对开源软件的认识和采用。

OSI 于1998年2月成立,创始人为 Bruce Perens 和 Eric S. Raymond 。

2、*软件基金会( FSF ),维护着“*软件”( Free Software )的定义以及其认可的许可证列表,旨在促进人们对计算机软件研究、分发、创建和修改的*。FSF 推崇 copyleft 的分享方式(如 GPL 规定的那样),不过,*软件大多不是 copyleft 的。

FSF 于1985年10月由 Richard stallman 建立。其主要工作是执行 GNU 计划,开发更多的*软件。

这两个组织都是民间组织,都是非营利组织。

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

不过,在我看来,两者可能强调的方面不一样,但效果是类同的。开源软件和*软件的差别不大,并没有本质上的不同。后面我们会看到这一点。

02

源码可得”就是开源吗?

对于完全不懂开源的人,他们只能从字面上去理解,他们认为,源码放出来了就是开源软件。

当然不是这样了。

一个软件,它的源码可以在互联网上免费得到,不代表他就是开源软件或者*软件,这种只能叫 source available ,可翻译为“源码可得”、“源码可用”、“有源软件”1等等。

一个源码可得的软件,究竟是什么性质,要看它的许可证是怎样的。

许可证就是一个书面协议,软件作者(或所有者)通过许可证,规定用户可以或不可以做哪些事,比如用户能否复制、能否修改、能够再次发布该软件等等。

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

被使用最多的许可证是下面这9个( OSI 统计3),其中又以前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 、 BSD 。

仔细看看这些许可证你就知道,它们都赋予用户充分的权利,并且要求不多,大多只是要求保留其版权、商标这些。最能引起争议的 GPL ,也只不过要求公开衍生作品的源码而已。

有人会问,我在 github 上,看到有很多软件不带许可证,这种算什么?

对于一个不带任何许可证的软件,我们就不知道它允许用户有什么权利,也就是说,复制、修改、分发它的权利都是不确定的,只有联系作者本人才能确定有什么权利。(当然,既然他已经把源码放在互联网上了,你看一看的权利还是有的。)如果该软件放在 Github 的公有( public )库中,则表明软件发布者已经接受了 Github 的服务条款,该条款赋予了其他 Github 用户一些基本权利,比如允许他们查看该项目库或 fork 等。

03

定义!定义!

OSI对开源软件的定义放在这里:https://opensource.org/docs/definition.php ,里面有十个标准,这里不一一列举,简单地说,开源软件,就是必须提供源代码,允许修改和再发布,允许别人销售或者免费送出,不区别对待任何人和任何领域,不以各种不一致的方法限制他人使用、复制、修改和再发布。

FSF对*软件的定义放在这里:https://www.gnu.org/philosophy/free-sw.html  , FSF 提出4项*,如果一个软件提供了下面这4项*,它就是*软件。

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

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

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

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

当然,因为涉及修改,*度1和*度3都暗含了对开放源代码的要求。

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

FSF 还强调,*软件允许商业用户、商业开发和商业发布。商业和*并不矛盾,钱可以收,但用户的*不可剥夺。由于源码是开放的,许可证又给予了他人种种*,所以并不存在那种因商业秘密或专利保护所带来的暴利,*软件的商业收费主要是复制软件的成本费、对软件提供维护的维保费、培训费等服务性费用,挣不了什么大钱。

但某些开源软件的企业版就不一样了,企业版通常并不开源,它们不是开源软件也不是*软件,它们用的是商业许可证,即便给你源码,也会有很多限制。

从上面的定义可以看出,开源软件和*软件其实差不多的。连FSF都在官网上承认了这点4

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

在 OSI 的官网上5,维护着 OSI 认为符合开源软件定义的许可证列表,上面那9个都是符合开源软件定义的许可证。

在 FSF 的官网上6,维护着 FSF 认为符合*软件定义的许可证列表,上面那9个都是符合*软件定义的许可证。

你还可以在 SPDX 这个网站获取分类信息7,它维护了一个有接近400个许可证的列表,里面列出了哪些是 FSF 认可的,哪些是 OSI 认可的。

此外,还可以*的“ Comparison of free and open-source software licences ”词条中查看。8

04

什么是copyleft

现在我们知道,使用 Apache 许可证的软件是*软件,那它是 copyleft 软件吗?

答案:不是。

copyleft 不好翻译,目前有“版权开放”、“版权属左”、“左版”、“著佐权”、“版权左派”,“版责”等多种翻译,但并没有被普遍接受和采纳的。

先说一下什么是 copyrigh 。

copyright即版权,亦称著作权,是指作者对其作品的权利。从字面上看, copyright 尤其关注copy的权利( right ),一个软件卖给某用户后,除非作者同意,用户是不能随意复制(比如说让你在这个机器上用,你就不能在另外一台机器上再装一套)的,除此之外,除非作者许可,也不能修改、不能对外发布等等。

所以,传统上,一般我们都能看到这样的表述:Copyright  © 2004 XXXX.  All rights reserved . 此即“版权所有”,就是说版权拥有者对其作品的权利都是保留的,仅仅开放他所许可的内容。

下面是一个版权声明的样例。

使用Apache协议的是*软件吗?

copyleft 要大方的多,基本上所有权利都让渡给用户了, Richard Stallman 曾说明过 Copyleft 一词的由来:

“1984或1985年, DonHopkins (一个很有想像力的家伙) 给我写了一封信。在信封上他写了一些逗趣的话, 其中包括:copyleft —all rights reversed(copyleft-反转所有权利)。于是,我就用 copyleft 一词以命名当时我正考虑的软件发行概念。” 9

和*软件一样, copyleft 也没有很严格的定义,都属于很宽泛的概念。  FSF 对 copyleft 的定义: “ copyleft 是一种通用的方法,通过它,使某个程序成为*软件,并要求其衍生程序(对该程序进行修改和扩展后产生的程序)也是*软件。”10

Copyleft is a general method for making a program free software and requiring all modified and extended versions of the program to be free software as well.

从该定义看, copyleft 软件天然是一个*软件,但比*软件多了一项对用户的要求,就是 copyleft 许可证要求修改后的 copyleft 软件,也必须以 copyleft 软件发布。这就是人们常说的“传染”,你用了一个开源软件,你也必须把自己的修改和补充都开源出来。

注:本文中, copyleft 许可证是指满足 copyleft 定义的许可证,如 GPL 许可证。copyleft 软件是指采用 copyleft 许可证的软件,如 Linux (采用 GPL 许可证)。

值得注意的是, copyleft 并不是说没有版权, copyleft 仍然是有版权的,只不过除版权外,所有其他权利都已开放,也即 left 给世人,有人把这个形象的说为 all rights released 。

在我看来,作者只给自己留了一个版权,所以 copyleft 就是“版权仅留”。

copyleft 给了程序员*,也限制了他们的*(不得对修改闭源),在FSF看来,限制程序员的*,是为了给世人更多的*,所以这是正义的。

copyleft 要保障*软件能始终给人们*,一个 copyleft 软件,从生到死,从源头到支流,应该永远都是*的。从上游到下游,*顺畅地流动,毫无阻塞,如遇阻塞,则可立即以违背 copyleft 许可为名发起控诉。

FSF 说:“商业软件通过版权剥夺了用户的*,我们使用版权来给予他们*。这就是为什么我们把 copyright 改称 copyleft ”。

FSF 还专门说明为什么不直接把软件放到公共领域中(版权人完全放弃了版权及一切权利,作品就进入公共领域即 public domain ), FSF 认为,把软件放在公共领域内,会有人通过修改部分或极少量的方式,将衍生品私有化,从而减少了人们应有的*。

在 Stallman 的哲学理念中,信息资产(包括程序、软件)就像数学公式、定理一样,应该是公有的,而不应是私有财产。像操作系统、编译器、数据库、浏览器、 TCP/IP 协议等等所有这些,都应该开源,让任何人都可以使用和改进,而且改进后的东西仍应公有。从本质上讲,其观念是全地球人共同拥有软件生产资料(主要指软件,如 gcc )、共同生产并共同拥有劳动产品(如 Linux ),这在本质上是左派( left )的要求,和右派( right )倡导的私有制截然对立。

现在你可以思考一下,是谁更害怕*?

05

一些copyleft许可证

最著名的 copyleft 当然非 GPL 莫属。

LGPL 也是 copyleft 的,但相对要弱一点,如果你的软件仅仅是链接 glibc (采用 LGPL ),就不用开源自己的代码。

AGPL 是很强的 copyleft 许可证,只要你用*软件提供云服务,即便你不发布,也要公开源代码。

Watcom-1.0 许可证( Sybase Open Watcom Public License 1.0 )是更强的 Copyleft 许可证,只要你“部署”(该许可证对部署有定义),你就要公开源代码,即便你并不提供云服务,只是自己公司内部用用。

copyleft 的概念本身比较宽泛,不仅可以用于软件,也可以用于文档。GFDL 是 GNU 提出的*文档许可证,使用了 GFDL 的文字作品,允许他人*使用、修改、转载等,包括可以商业使用,但条件是衍生作品也必须使用 GFDL 。

CC-BY-SA 也是符合 copyleft 定义的,和 GFDL 有点类似,但并不互相兼容,因为两者都要求衍生作品使用自己的许可证。具体可以看一下这篇文章:“ Copyleft 和 GFDL 许可证”11

06

为什么不支持*呢!

最后,为了对比,我们看一个专有软件(和开源软件、*软件、 copyleft 软件相对立的)的许可证。了解一下专有软件对用户*的限制。

在微软的软件许可条款中,有一部分专门描述对用户的权利限制12

SCOPE OF LICENSE.

The software is licensed, not sold. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you will not (and have no right to):

1.work around any technical limitations in the software that only allow you to use it in certain ways;

2.reverse engineer, decompile or disassemble the software;

3.remove, minimize, block, or modify any notices of Microsoft or its suppliers in the software;

4.use the software in any way that is against the law or to create or propagate malware; or

5.share, publish, distribute, or lend the software, provide the software as a stand-alone hosted solution for others to use, or transfer the software or this agreement to any third party.

翻译过来就是:

许可范围。

本软件授予使用许可,而非出售给使用者。Microsoft 保留本协议未明确授予的所有权利,除非适用法律赋予您权利,否则您不得(也无权)做以下这些事:

1.不得绕过本软件的技术限制,你只能按照本软件所允许的方式使用本软件;

2.不得实施反向工程,不得反编译、反汇编本软件;

3.不得删除、最小化、阻拦、修改 Microsoft 或其供应商在软件中的任何声明;

4.不得以任何违法的方式使用该软件;不得创建或传播恶意软件;

5.不得共享、发布、分发或出租本软件;不得将本软件单独作为托管方案提供给他人使用;不得将本软件或本协议转让给任何第三方。

看到没有,即便只是一个二进制文件,专有软件都要设置设种种限制,目的是保护其盈利的能力。

而*软件不仅给你源代码,还赋予你种种*,目的是促进整个人类的*。

有什么理由不去珍视和支持这种*呢!

文末奉上这张图,一图看懂不同类型软件之间的关系,来自 FSF 。13

使用Apache协议的是*软件吗?

现在,你的心里是不是亮堂多了。

开源软件、*软件其实差不多的, copyleft 则有着更强烈的理想信念。

不管怎样,选一个你喜欢的许可证,开干吧!

注:题图来自《硅谷》第5季剧照


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

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

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

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

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

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

  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. http://www.ruanyifeng.com/blog/2008/04/copyleft_and_gfdl.html 

  12. https://support.microsoft.com/en-us/office/microsoft-software-license-terms-5476247d-05e5-4ac7-b77c-1b8cd229e91a 

  13. https://www.gnu.org/philosophy/categories.zh-cn.html

使用Apache协议的是*软件吗?

开源社线上直播 “源”来如此 报名方式

扫描下方二维码通过活动行报名填写信息,添加小编微信号:chatbot-yuan,回复OS,进入“源”来如此粉丝群。相信你可以在这里和志同道合的伙伴们愉快交流!
 
8月9日14:00-16:00,我们不见不散!


使用Apache协议的是*软件吗?

开源社简介

开源社是由国内外支持开源的企业,社区及个人,依“贡献,共识,共治”原则,所组织的厂商中立、纯志愿者、非营利的开源联盟,旨在共创健康可持续发展的开源生态体系,并推动中国开源社区成为全球开源软件的积极参与及贡献者。我们专注于开源治理、国际接轨、社区发展和开源项目。

相关阅读 | Related Reading

使用Apache协议的是*软件吗?

重磅推荐 | SkyWalking未来初探(文末有福利哦)

使用Apache协议的是*软件吗?

GitHub 标星 10,000+,Apache *项目 ShardingSphere 的开源之路

使用Apache协议的是*软件吗?

“源”来如此第一期 带你走进开放式协作

使用Apache协议的是*软件吗?

喜欢本篇内容请给我们点个在看

使用Apache协议的是*软件吗?