前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从 React 将从 BSD 改 MIT 许可证,谈如何选择正确的开源许可

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

作者头像
Phodal
发布2018-01-29 14:10:24
1.5K0
发布2018-01-29 14:10:24
举报
文章被收录于专栏:phodalphodal

最近,知名 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 还好吗?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 phodal 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何挑选好 LICENSE
    • 公有领域
      • MIT
        • Creative Commons
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档