从 React 将从 BSD 改 MIT 许可证,谈如何选择正确的开源许可

最近,知名 404 网站 Facebook 因为 React 的 License 问题而被受社区吐槽。而今早,React、Jest、Flow 和 Immutable.js,将会在接下来几周迁移到MIT许可证。

Facebook License

不过 React Native 并没有在这个列表里,这不禁让我陷入了深深的思考。

昨天,因为 Facebook License 的问题,我在为《GitHub 漫游指南》添加了一新的 LICENSE 相关的章节,也做了一个长长的 LICENSE 选择图。如下:

你可以在我的 GitHub 上: https://github.com/phodal/licenses,获得一个高清的 SVG 大图。

如何挑选好 LICENSE

在二十世纪而七十年代末和八十年代初,为了防止自己的软件被竞争对手所使用,大多数厂家停止分发其软件源代码,并开始使用版权和限制性软件许可证,来限制或者禁止软件源代码的复制或再分配。随后,Richard Matthew Stallman(Richard Matthew Stallman)发起了自由软件运动,他开创了 Copyleft 的概念:使用版权法的原则来保护使用、修改和分发自由软件的权利,并且是描述这些术语的自由软件许可证的主要作者。最为人所称道的是GPL(被z广泛使用的自由软件协议)。[rms]

(PS:关于自由软件及 RMS 的更多信息、历史,可以阅读《若为自由故:自由软件之父 - 理查德 斯托曼传》)

随后,便诞生了开源软件的概念,开源的要求比自由软件宽松一些[^gnu_gpl]。迄今发布的自由软件源代码都是开源软件,而并非所有的开源软件都是自由软件。这是因为不同的许可(协议)赋予用户不同的权利,如 GPL 协议强制要求开源修改过源码的代码,而宽松一点的 MIT 则不会有这种要求。

如下是不同开源许可证的市场占有率及使用情况。

License 使用情况

又比如,在我们看到的一些外版书籍上,如果拥有代码。那么作者一般就会在前言或者类似的位置里,指明书中代码的版权所属。如: 也许你需要在自己的程序或文档中用到本书的代码,但除非大篇幅地使用,否则不必与我们联系取得授权。例如,用本书中的几段代码编写程序无需请求许可,blabla

于是,选择一个合理的 LICENSE,就变成了一个有趣的话题。

如何选择 License

简单地来说,这些 License 之间是一些权利的区别,如当你把代码放置到公有领域,就意味着任何人可以修改,并且不需要标明出注;可如果你想要别人标明出处及作者,你就需要 MIT 协议;而你希望别人闭源的话,那么你就需要 MPL 协议等等。

那么,下面让我们简单地介绍一下不同的几个协议。

公有领域

WTFPL(Do What The Fuck You Want To Public License,中文译名:你他妈的想干嘛就干嘛公共许可证)是一种不太常用的、极度放任的自由软件许可证。它的条款基本等同于贡献到公有领域。[^wtfpl]

[wtfpl]: https://zh.wikipedia.org/wiki/WTFPL

这就意味着,对于拿到这些代码的其他人,他们想怎么修改就可以怎么修改。

GPL

由于 GPL 的传染性,便意味着,他人引用我们的代码时,其所写的代码也需要使用 GPL 开源。即:GPL 是有 “传染性” 的 “病毒” ,因为 GPL 条款规定演绎作品也必须是 GPL 的。

而如果我们只针对的是,他人可以使用库,而不开源,则可以用 LGPL。但是修改库则不适用。

MIT

因此,一般而言,我使用的是 MIT 协议。至少我保留了一个署名权,即你可以修改我的代码,但是在 LICENSE 里必须加上我的名字。

选用 MIT 特别有意思,特别是在最近几年里,发生过:

  • iView “抄袭” Element UI 事件
  • AndroidTVLauncher “抄袭” 事件

等等。这告诫了我们,如果你不想要有这种经历,那么就不要用 MIT 了。

Creative Commons

是的,当我写 Markdown 的时候,考虑到未来会以纸质书的形式出现,便会使用 CC-BY-NC-ND 协议:

  • CC -> Creative Commons
  • BY -> 署名(英语:Attribution,by)
  • NC -> 非商业性使用(英语:NonCommercial)
  • ND -> 禁止演绎(英语:NoDerivs)。

即,任何人可以使用我写的电子书来自由复制、散布、展示及演出,但是不得用于商业用途(作者本人可以)。它可以随意地放在他的博客上,他的各个文章里。但是必须标明出自,并且不得改变、转变或更改本作品。

如果你不介意的话,你可以使用公有领域(Public Domain)。可是这样一来,万一有一天,别人直接拿的作品出书,你就骂爹了。

[rms]: https://zh.wikipedia.org/wiki/%E7%90%86%E6%9F%A5%E5%BE%B7%C2%B7%E6%96%AF%E6%89%98%E6%9B%BC

[gnu_gpl]: https://www.gnu.org/philosophy/open-source-misses-the-point.zh-cn.html

那么问题来了,你的 KPI 还好吗?

原文发布于微信公众号 - phodal(phodal-weixin)

原文发表时间:2017-09-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏非著名程序员

【安卓早知道】谷歌发布Android6.0.1,当亲儿子就是好

?12月8日消息,今日谷歌已经开始为一众Nexus设备放出了Android 6.0.1更新,并提供了原厂镜像下载。支持更新的移动端设备包括Nexus 6P、N...

1908
来自专栏IT技术精选文摘

Node全栈为前端带来更多可能

2104
来自专栏飞总聊IT

从GitLab事件谈我的经历

先上个图,给各位程序猿们拜个年 ? 悲剧年年有,今年到GitLab家。著名的GitLab这几天在Tech界登上了头条,登上的原因是因为运维人员使用了rm -rf...

39810
来自专栏FreeBuf

七个黑你的理由

常识告诉我们,用户是IT风险管理中最薄弱的一环,特别针对是一些“天真勇敢”的用户……但是黑客究竟是如何利用这种天真(缺乏保护意识)进入用户终端和公司账户的呢?他...

1897
来自专栏程序员互动联盟

如何用一句话证明你是一个真正的程序员?

作为一个写了十几年代码的老程序员,其实编码生活简单而枯燥,每天做多少事情都可以掰着手指头说出来,特别是在一线城市的程序员更加的简单,早上急急忙忙挤上地铁,在地铁...

5892
来自专栏君赏技术博客

听了2017年 Swift 开发者大会一些感想

特别感谢@Flow.ci提供门票支持。 2017Swift 开发者大会在深圳举办了两天,第一天是外国嘉宾。因为需要上班,加上全天都是英文,去了也是听不懂,星期...

1262
来自专栏coding

初识opensuse

1363
来自专栏java一日一条

重新使用Java的七个理由

O’Reily正在庆祝Java7的发布,以及7月25日到27日即将在波兰开展的 OSCON Java 大会。

851
来自专栏罗超频道

用户隐私不可侵犯,但巨头也有躺枪的时候!

近日,江苏消保委对百度涉嫌违法获取消费者个人信息发起消费民事公益诉讼。百度已第一时间召开媒体沟通会,回应称“百度APP不会、也没有能力’监听电话’,而百度APP...

3458
来自专栏互联网数据官iCDO

少走弯路!科学构建URL,事半功倍!

译者:骆姿亦 审校:陈明艳 本文长度为3621字,预估阅读时间10分钟。 主编推荐:这是一个重要的话题,而且是很少有人系统阐述的话题。科学地构建URL,无...

2987

扫码关注云+社区

领取腾讯云代金券