哪种开源许可证最适合商业化?

选择最佳开源许可证是为新项目所做的最重要的决定之一。大多数开发者会选用 MIT、BSD 或 Apache 等流行的宽松许可证(permissive license)。对于商业项目而言,这种选择不错,因为这能减少用户对项目的抵触情绪。

当应用于开源项目时,默认采用宽松许可证或许会影响到你从你的创作中获得价值的能力。为了成功实现商业化,除了你自家的免费产品外,你还需要在项目上赶超其它友商。许多成功的 OSS 公司(比如 Redis、Elastic 和 MongoDB)通过采用更具创造性和/或限制性的许可方案来应对这一挑战。

对于入门级(entry level)项目,通常会担心选择限制性较强(如版权向左)的许可证,诸如 GPL 之类的,会阻止潜在用户选择使用你的软件。这一担忧是合理的,就像 Google 这样的组织将完全禁止使用 AGPLv3 许可的软件。如果没有人使用你的软件,那么你就输在起跑线上了。

毫无疑问,软件能被广泛采用是所有新开源公司的首选目标,但还不清楚你的许可证应针对什么问题进行优化。如果你的目标是将价值最大化,那么你该选择什么样的许可证?选择限制性较少的还是能获取高价值的许可证?

用数据说话

为回答这一问题,我们首先来看看 OSS.cash 的数据,它是收入超过 1 亿美元的 OSS 公司指数。截止到 2018 年 11 月为止,我们的数据已跟踪了总值约  1400 亿美元的商业 OSS 数据。

首先,我们可以按照许可构成的百分比简要细分许可证的选择:

尽管大多数商业 OSS 公司都选择使用较为宽松的许可证,但 GPL 和安全向左的许可证似乎占据了较大比例的价值。这不足为奇,直观地讲,具有限制性的许可证可以让你从作品中获得更多直接价值。

如果我们按照许可证类型划分平均估值细目,那么许可证的知名度似乎就会大大下降:

相比之下,与快送许可证软件相比,版权向左许可证的软件显示出更高的平均估值。实际上,即使 AGPL(一种不那么受欢迎的许可证)的平均估值也与宽松的 Apache 2.0 相似,甚至能使 BSD 许可证的公司黯然失色。

最后,我们来看一下许可证下的业务模型:

这张图很有意思。首先,它根据业务模型建议最佳的许可证选择。但更为有意思的是,许可证的选择可以看出公司如何将其 OSS 产品商业化的思路。

比如,如果你通过在 OSS 项目上销售技术支持和轻量级企业产品(开放核心)来获利,那么你实际上就是非常直接地把你的产品商业化了。另外,如果你必须将资金投入到构建(building)、销售、维护(maintaining)和支持(supporting)一个单独的专有 SaaS 产品,那么你的商业化就是比较间接的。自然地,直接模型(direct model)依靠限制性许可证来控制获利能力,因为没有专有的对等物可以用于单独销售。

我们应默认版权向左么?

现在默认为每个新项目或现有的业务模型推荐版权向左许可证还为时尚早。这一分析有其局限性:

  1. 我们的数据依旧有限,OSS.cash 目前只跟踪了 38 家企业;

  2. GPL 在那些早期较成熟的公司中更受欢迎(2007 年之前有 40% 选择版权向左,在 2017 年之后仅 25%);

  3. 成熟企业(如红帽公司)的离群值扭曲了数据,从而使强大的版权向左许可证更具主导地位。实际上,弱版权许可(MPL、LGPL、CPAL)似乎达到了最佳平衡。

尽管有这些限制,但依旧可以肯定的是,版权向左许可证在商业上是可行的。虽然我们不能说限制性的许可证会助你企业成功,但它已帮助许多公司收入突破 1 亿美元,并在开源界占据最大份额。

题外话

  1. 商业版权向左 OSS 是可行的,尽管很多公司使用宽松许可证,但大多数 OSS 的成果都来自于版权向左许可的软件;

  2. 在依赖核心项目(core project)上直接获利的商业模式中,版权向左许可证更占据主导地位(即,开放核心/支持服务就相当于直接,Saas 相当于间接);

  3. 许可证的选择会产生影响,但不会对项目的可选项产生决定性作用。专注于创造出色的软件,然后遵循业务模型/许可证模式。

原题:Which open source license is best for commercialization?

原文:

https://fossa.com/blog/which-open-source-license-is-the-best-for-commercialization/

作者:Kevin Wang


开源许可证相关推荐:

1)一文读懂常用开源许可证
2)一文读懂开源许可证异同

3)一文读懂 Copyleft 开源许可证

4)十问十答 Apache 许可证

5)十问十答 CDDL 许可证

6)十问十答 GPL 许可证

7)十问十答 BSD 许可证

8)十问十答 Ms-PL 许可证

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/310456.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++泛型编程实现哈希表(开散列法)

代码如下: #include <iostream> #include <vector> using namespace std;template<typename K> struct HashNode {typedef HashNode<K> Node;K _val;Node * _next;HashNode(const K & val):_val(val),_next(nullptr){} };template<typename K&…

数据结构与算法--分治算法-最大子序列和问题

分治算法 用于设计算法的一种常用技巧–分治算法&#xff08;divide and conquer&#xff09;。分治算法由两部分组成&#xff1a; 分(divide)&#xff1a;递归然后借机较小的问题&#xff08;基础情况除外&#xff09;治(conquer)&#xff1a;然后从子问题的解构建原问题的解…

请把我不会,换成我可以学

点击蓝字关注&#xff0c;回复“职场进阶”获取职场进阶精品资料一份有位读者跟我说起自己的烦恼&#xff1a;“我到公司已经接近四年了&#xff0c;领导经常让我做一些岗位职责以外的事情。这些东西我都不会&#xff0c;还非让我做。并且一直没有职位上的改变&#xff0c;我怎…

[C++STL]C++实现unordermap容器和unorderset容器

代码如下: #include <iostream> #include <vector> using namespace std;template<typename K,typename V,typename KeyOfValue> class HashTable;//声明template<typename V> struct HashNode {typedef HashNode<V> Node;V _val;Node * _next;…

还不会docker+k8s?2020年,就要面对现实了...

docker的前世今生2010年&#xff0c;几个年轻人&#xff0c;在美国旧金山成立了一家名叫“dotCloud”的公司。这家公司主要提供基于PaaS的云计算技术服务。具体来说&#xff0c;是和LXC有关的容器技术。后来&#xff0c;dotCloud公司将自己的容器技术进行了简化和标准化&#x…

数据结构与算法--重建二叉树

二叉树 树在实际编程中经常遇到地一种数据结构。上一篇中我们解释了二叉树及其原理&#xff0c;从中可以知道&#xff0c;树地操作会涉及到很多指针地操作&#xff0c;我们一般遇到地树相关地问题差不多都是二叉树。二叉树最重要地莫过于遍历&#xff0c;即按照某一顺序访问树…

3分钟掌握Quartz.net分布式定时任务的姿势

长话短说&#xff0c;今天聊一聊分布式定时任务&#xff0c;我的流水账笔记&#xff1a;ASP.NET CoreQuartz.Net实现web定时任务AspNetCore结合Redis实践消息队列细心朋友稍一分析&#xff0c;就知道还有问题&#xff1a;水平扩展后的WebApp的Quartz.net定时任务会多次触发&…

数据结构与算法--利用栈实现队列

利用栈实现队列 上一节中说明了栈的特点 后进先出&#xff0c;我们用数组的方式实现了栈的基本操作api&#xff0c;因此我们对栈的操作是不考虑排序的&#xff0c;每个api的操作基本都是O(1)的世界&#xff0c;因为不考虑顺序&#xff0c;所以找最大&#xff0c;最小值&#x…

ASP.NET Core 配置源:实时生效

在之前的文章 ASP.NET Core 自定义配置源 和 ASP.NET Core etcd 配置源 中主要是介绍如何实现自定义的配置源&#xff0c;但不论内置的和自定义的配置源&#xff0c;都会面临如何使配置修改后实时生效的问题&#xff08;修改配置后在不重启服务的情况下能马上生效&#xff09;。…

分布式事务理论模型

分布式事务 事务的概念&#xff0c;我们第一想到的应该是数据库的事务。所谓数据库事务就是只作为单个逻辑工作单元执行多个数据库操作的时候&#xff0c;数据库需要保证要么都成功&#xff0c;要么都失败&#xff0c;它必须满足ACID特性&#xff0c;即&#xff1a; 原子性&…

[MySQL基础]数据库的相关概念

DB: 数据库(database):存储数据的“仓库”&#xff0c;它保存了一系列有组织的数据。 DBMS: 数据库管理系统(Database Management System):数据库是通过DBMS创建和操作的容器。 SQL: 结构化查询语言(Structure Query Language):专门用来与数据库通信的语言。 SQL的优点: 1.几…

Linq下有一个非常实用的SelectMany方法,很多人却不会用

在平时开发中经常会看到有些朋友或者同事在写代码时会充斥着各种for&#xff0c;foreach&#xff0c;这种程式代码太多的话阅读性特别差&#xff0c;而且还显得特别累赘&#xff0c;其实在FCL中有很多帮助我们提高阅读感的方法&#xff0c;而现实中很多人不会用或者说不知道&am…

.NET Core前后端分离快速开发框架(Core.3.1+AntdVue)

引言时间真快&#xff0c;转眼今年又要过去了。回想今年&#xff0c;依次开源发布了Colder.Fx.Net.AdminLTE(254Star)、Colder.Fx.Core.AdminLTE(335Star)、DotNettySocket(82Star)、IdHelper(47Star)&#xff0c;这些框架及组件都是本着以实际出发&#xff0c;实事求是的态度&…

数据结构与算法--查找与排序另类用法-旋转数组中的最小数字

查找与排序 查找 查找与排序都在程序设计中常被用到的算法。查找相对而言简单&#xff0c;一般都是顺序查找&#xff0c;二分查找&#xff0c;哈希表查找&#xff0c;和二叉排序树查找。其中二分查找是我必须熟悉的一种。哈希表和二叉排序树主要点在于他的数据结构而不是算法…

[MySQL基础]MySQL常见命令介绍

show databases; use 库名; show tables; show tables from 库名 select database(); create table 名字( id int, name varchar(20)); desc 表名; select * from 表名; insert into 表名 (a,b,…,f) values(1,2,3,…,7); update 库名 set name‘lilei’ where id1; delete f…

如何选择好公司

点击蓝字关注&#xff0c;回复“职场进阶”获取职场进阶精品资料一份前几天写了一篇文章&#xff1a;怎么判断自己在不在一家好公司。附带了一个投票调查&#xff0c;结果如下图&#xff1a;调研结果有点点扎心&#xff0c;有点点出乎我的意料。61%的小伙伴&#xff0c;都认为自…

数据结构与算法--再谈递归与循环(斐波那契数列)

再谈递归与循环 在某些算法中&#xff0c;可能需要重复计算相同的问题&#xff0c;通常我们可以选择用递归或者循环两种方法。递归是一个函数内部的调用这个函数自身。循环则是通过设置计算的初始值以及终止条件&#xff0c;在一个范围内重复运算。比如&#xff0c;我们求累加…

同步异步多线程这三者关系,你能给面试官一个满意的回答吗?

前几天一位朋友去面试&#xff0c;面试官问了他同步&#xff0c;异步&#xff0c;多线程之间是什么关系&#xff0c;异步比同步高效在哪&#xff1f;多线程比单线程高效在哪&#xff1f;由于回答的不好&#xff0c;让我帮他捋一下&#xff0c;其实回答这个问题不难&#xff0c;…

分布式事务框架seata

seata 前两篇文中总结了一下分布式事务已经现阶段常用的解决方案&#xff0c;现在来讨论一下现有的分布式事务框架seata&#xff0c;点击此处是seata的官网seata致力于微服务框架下提供高性能和简单易用的分布式事务服务。它提供了AT&#xff0c;TCC&#xff0c;Saga &#xf…