开源闹出乌龙事件,可能你不知道这五种开源协议

玩转GitHub

共 2588字,需浏览 6分钟

 ·

2022-07-13 15:34




前言

这事还得从华为的一个乌龙事件说起。

19年8月31号的时候,华为在自己官网开源了方舟编译器。方舟编译器的厉害,相信大家都有所耳闻!

当时的华为开发者大会人满为患,刷屏朋友圈,所以华为方舟编译器的开源受到IT界前所未有的关注。在这举世瞩目的关键时刻,华为闹了一个小小的“乌龙”。

方舟编译器在开源3分钟之后就关闭了访问权限,原因是有人发现华为将zlib的版权声明信息修改成了华为的。下图来自知乎网友@默然的爆料。

因为zlib的第三方开源的软件,根据它使用的开源协议,使用和修改它是需要保留版权声明信息的。正因为这个小小的过失,让华为遭受了很多自媒体的过度解读,各种夹枪带棒冷嘲热讽,甚至恶意抹黑说华为公然抄袭等等。华为不得不在开源3分钟之后关闭了访问权限,修正排查之后再重新开源。

这是华为的一个小小的“过失”,但完全没有必要过度解读。因为一个已有的项目开源,肯定要先整理一下格式,包括编码规范、版权声明、代码注释等。

清清楚楚的告诉你这个是第三方代码,并且zlib的readme文件完整保留,对zlib的作者、版权交代的清清楚楚。

什么是许可协议?

虽然这事事不关己,但是一些参与开源项目的作者应该就会感同身受,自己的项目被人抄袭了,连名字都不该,还包装成自己的!

这事确实有很多,太多了,我都记不清发生了多少次!

什么是许可,当你为你的产品签发许可,你是在出让自己的权利,不过,你仍然拥有版权和专利(如果申请了的话),许可的目的是,向使用你产品的人提供 一定的权限。

而开源许可协议使这些事情变得简单,开发者很容易向一个项目贡献自己的代码,它还可以保护你原始作者的身份,使你 至少获得认可,开源许可协议还可以阻止其它人将某个产品据为己有。

现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种(http://www.opensource.org/licenses /alphabetical)。我们在常见的开源协议如BSD, GPL, LGPL,MIT等都是OSI批准的协议。如果要开源自己的代码,最好也是选择这些被批准的开源协议。

这五种开源协议你应该知道

目前流行的开源许可证主要有:BSD、MIT、GNU GPL、Apache 和 MPL,这里简单做一下介绍。

1.BSD

开源协议(original BSD license、FreeBSD license、Original BSD license)

BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。

”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:


    1. 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。

    1. 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。

    1. 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。

BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售。

因此是对 商业集成很友好的协议。

2.MIT

全称 MIT license。最宽松的声明,只需要包含原始版权声明即可,其他的随便弄。

该软件及其相关文档对所有人免费,可以任意处置,包括使用,复制,修改,合并,发表,分发,再授权,或者销售。唯一的限制是,软件中必须包含上述版 权和许可提示。你可以:

  • 你可以自由使用,复制,修改,可以用于自己的项目。
  • 可以免费分发或用来盈利。
  • 唯一的限制是必须包含许可声明。MIT 协议是所有开源许可中最宽松的一个,除了必须包含许可声明外,再无任何限制。

3.Apache

Apache 协议 2.0 和别的开源协议相比,除了为用户提供版权许可之外,还有专利许可,对于那些涉及专利内容的开发者而言,该协议最适合(这里有 一篇文章阐述这个问题)。

Apache 协议还有以下需要说明的地方:

  • 永久权利 一旦被授权,永久拥有。
  • 全球范围的权利 在一个国家获得授权,适用于所有国家。假如你在美国,许可是从印度授权的,也没有问题。
  • 授权免费,且无版税 前期,后期均无任何费用。
  • 授权无排他性 任何人都可以获得授权 *授权不可撤消 一旦获得授权,没有任何人可以取消。比如,你基于该产品代码开发了衍生产品,你不用担心会在某一天被禁止使用该代码。

分发代码方面包含一些要求,主要是,要在声明中对参与开发的人给予认可并包含一份许可协议原文。

4.MPL

全称 Mozilla Public License 2.0 。

修改版本必须保持其原始版权声明。如果发布了编译后的可执行文件,那么必须让对方可以取得MPL协议下程序的源码。

  • MPL可以通过在自己源代码库上加一个接口,除了接口程序的源代码以MPL许可证的形式对外许可,源代码库中的源代码就可以不用强制对外
  • MPL允许被许可人将获得的源代码与自己的代码混合得到自己的软件程序
  • MPL不反对软件专利,但是要求源代码作者不能提供已经受到专利保护的代码(除非本人是专利人,且书面向公众授权),也不能将这些源代码开源许可后再去申请相关专利。
  • 所有再发布者必须有一个专门的文件丢源代码修改的时间和修改方式有描述

5.GNU GPL

GNU General Public Licence (GPL) 有可能是开源界最常用的许可模式。GPL 保证了所有开发者的权利,同时为使用者提供了足够的复制,分发,修改的权利:

  • 可自由复制 你可以将软件复制到你的电脑,你客户的电脑,或者任何地方。复制份数没有任何限制。
  • 可自由分发 在你的网站提供下载,拷贝到U盘送人,或者将源代码打印出来从窗户扔出去(环保起见,请别这样做)。
  • 可以用来盈利 你可以在分发软件的时候收费,但你必须在收费前向你的客户提供该软件的 GNU GPL 许可协议,以便让他们知道,他们可以从别的渠道免费得到这份软件,以及你收费的理由。
  • 可自由修改 如果你想添加或删除某个功能,没问题,如果你想在别的项目中使用部分代码,也没问题,唯一的要求是,使用了这段代码的项目也必须使用 GPL 协议。
浏览 5
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报