资深工程师教你如何选择开源协议

网络 网络管理
现在市面上的开源协议很多,至少有 100 多种,但经过开源促进会认可的开源协议也多达70多种。今天简单的介绍一下,百度FEX 是如何选择开源协议,相信这会对你开源协议选择有所帮助。

践行开源

现在开源已经不仅仅是精神,很多国内外的公司已经真正的践行起来。包括FEX,目前已开源了20 多个产品,有赖于很多前端开发者的支持,在GitHub上的 Star 数量已经接近3000。 所以,自然也面临开源协议选择的问题。

 

现在市面上的开源协议很多,至少有100多种,但经过开源促进会 (Open Source Initiative)认可的开源协议也多达70多种。

今天简单的介绍一下,百度FEX 是如何选择开源协议,相信这会对你开源协议选择有所帮助。

WTFPL

“WTFPL”是“Do What The Fuck You Want To Public License”的简写,中文可以翻译成“你他妈的想干嘛就干嘛'公共许可证'”,是众多开源协议里“最黄最暴力”的一种。虽然这个协议用得并不多,但还是提一下,因为它是最极端的一种开源协议,完全没有 Copyright 和Copyleft 的概念。

什么是 Copyright 和 Copyleft

[[119524]]

在通常的商业软件中,Copyright (著作权)很常见,它的意思是保留所有权利,在这里不多作介绍。 而Copyleft(著佐权) 是一个由自由软件运动所发展的概念,是一种利用现有著作权体制来挑战该体制的授权方式。下图是它的标志,即 Copyright 中的“C”由右朝左了。

 

践行 Copyleft 最常见的的协议有GPL。即如果你使用了这份开源代码,要求使用者改作后的衍生作品必须要以同等的授权方式释出以回馈社会。这意味着,如果是商业软件使用这样的开源代码并改动,商业价值有可能会下降。而 Copyleft 也是很多开源协议的标志性特点。

六种常用开源协议

知道了 Copyright 和 Copyleft, 对主要的开源协议有非常重要的影响。下面介绍大多数公司用得最多的只有6种开源协议:LGPL、Mozilla、GPL、BSD、MIT、Apache。

乌克兰程序员 Paul Bagwell,画了一张分析图说明应该怎么选择。 只用两分钟能搞清楚这6种许可证之间的最大区别。阮一峰老师将它翻译成了中文,我在此也选用该图,此图也无需过多解释了:

案例:我们如何选择开源协议

案例:我们如何选择开源协议

我们最后选择是用 BSD 协议。它与 MIT 协议的区别在于是否用“你”的名字促销。也就是说,如果我们用MIT 协议,当别人修改完我们的代码时,可以用FEX的名义推广。

如果是针对个人而言,则是一个很好的扩散影响力的机会。但对于一个企业或组织来说,我们认为这可能是一个风险点。有人会问,你们为什么不用 GPL 协议?其实就是我上边说的 Copyleft 与 Copyright 的区别了。

我们认为,对于使用者来说。他自由选择是公开版权,会更有利于让更多前端开发者使用我们的开源产品,使用者越多也就能让我们得到更多的使用反馈,有助于我们第一时间发现并解决问题,也有利于 FEX“技术生态”建设,使技术长期的产出更有持续性。

目前我们每天可以收到 GitHub 上的 ISSUE 反馈多达 100 多条,这为 FEX 的产品打磨有非常重要的影响。WebUploader 就是一个非常典型的案例,从开源后到现在,它的兼容问题与上传性能稳定持续提升,目前已经是国内很多公司图片上传的首选了。

我也希望越来越多的公司走到开源阵营中来,让开源真正践行开,使大家都能获益。

责任编辑:林琳 来源: 刘平川
相关推荐

2013-12-02 14:04:23

2014-09-05 11:23:40

开源

2013-07-29 14:04:22

2020-10-23 07:43:04

开源协议开源

2019-04-12 13:56:30

物联网协议物联网IOT

2013-12-02 14:48:17

开源许可协议开放代码

2009-11-24 14:50:00

2018-06-28 16:33:58

团队工程师专家

2020-03-06 08:33:49

开源协议开源软件

2010-05-11 09:28:01

MySQL

2013-07-29 14:20:28

开源开放代码

2019-09-02 22:34:48

2011-08-22 15:57:00

运维刘晗昭负载均衡

2016-09-22 16:14:45

前端设计Photoshop

2015-05-04 09:59:31

资深工程师双目失明

2024-01-22 12:30:58

AI模型

2021-06-07 09:35:11

架构运维技术

2018-05-21 08:40:58

华为资深工程师程序员

2013-03-14 09:44:41

ONFOpenFlowSDN

2019-02-15 20:00:49

软件测试工程师面试
点赞
收藏

51CTO技术栈公众号