国内环境,怎么做开源才能兼顾生存和情怀?

回答一个朋友提的问题—— 在国内,开源怎么做呢?老夫结合自己多年在开源和商业领域的经历与见闻聊聊。

首先来说,毋庸置疑,开源是对传统的商业模式的一种颠覆,它以一种免费+开放的姿态赢得了Hacker群体的心,鼓动了一批又一批的程序员投身开源社区,孜孜不倦地为开源项目贡献代码、编写文档、四处宣讲……开源项目也成为积聚人气的一种新宣讲方式。

这对于长期以来只有商业+闭源一条独木桥可走的需求侧企业与机构而言,开源显然提供了另一条路。

不过,这可能是康庄大道也可能是荆棘小路!

简单来说,开源看起来很美,用好却很难,基于开源构建的产品与解决方案对于系统设计、开发、维护、升级、定制等一系列的需求通常远超想象。

一、开源业务模式有哪些?

总结起来,开源的业务模式,特别是按照产品形态、运营与盈利模式来划分有如下几大类:

1、免费开源版本+付费企业版本模式

这是一种比较常见的开源商业模式。依托开源版本与开源社区来开发最新的功能,并让市场和用户可以尝鲜。同时,通过企业研发资源来维护和打造稳定的、有客户支持的付费企业版本。

最典型的例子有RedHat公司推出的三款Linux操作系统:Fedora、RedHat和CentOS。它们的主要区别在于Fedora是通过开源社区的力量开发的快速迭代,基本上每6个月更新一次主要版本,具有新功能和特性的免费Linux版本;RedHat则是强调稳定性与企业客户需求的付费企业版,可以认为RedHat Linux上面的功能是经过Fedora社区验证过才审慎地引入RedHat中来;CentOS则是在RedHat基础上完全由社区维护的Linux版本,也就是说,没有客户支持,完全依赖开发者或社区的支持。

2、开源免费+服务付费模式

开源免费+服务付费模式,或开源+咨询、培训模式,或开源+有偿技术支持模式恐怕是最常见的开源商业模式。这一模式的主要特点是用户可以完全免费使用开源项目的所有功能,但是由于很多用户自身缺乏对开源架构、功能的深刻理解,通常需要雇用第三方的商业团队来进行技术支持,包括系统搭建、性能优化等。

最典型的例子是MySQL数据库,MySQL几乎被超过一半的有数据库服务需求的公司所使用,而对数据库的管理、优化是经常困扰这些公司的难题。类似的开源数据库咨询、培训、有偿支持公司应运而生。例如Percona、MariaDB等都是提供相关服务的厂家。

3、基于开源产品的发行商模式

随着开源项目的复杂度逐年提高,另一种在最近几年逐渐流行的开源商业模式是基于开源产品的发行模式。这一模式的通用特点是通过对开源项目进行二次开发、定制、重新封装来提供具有特色(Differentiation)的功能与服务(例如性能、便捷性的提高等),并以新的开源或闭源的产品方式在市场上发行。

以Open Stack11为例,Open Stack的定位是一款星球级云操作系统(Planet-scale Cloud Operating System)。Open Stack的核心组件(Core Services)有Nova(计算组件)、Neutron(网络组件)、Swift(对象存储组件)、Cinder(块存储组件)、Keystone(验证组件)以及Glance(Image服务组件)六大块,而可选服务有13项之多,例如Manila(共享文件系统)、Murano(应用目录服务)、Sahara(可伸缩MapReduce)、Heat(编排)、Horizon(控制面板)等。以上每一个组件在开源社区都是一个独立的开发项目。面对这样一个庞然大物,它的开发与维护的难度可想而知。也正是基于此,业界涌现了一大批定制化OpenStack发行商:

Ubuntu Open Stack(2015年的一个统计显示全球65%的OpenStack是基于Ubuntu操作系统的12);
Mirantis(Mirantis Fuel是其旗舰OpenStack增强版,例如图形化安装支持等);
Cloud Scaling(2014年被EMC公司收购用于推出ECS对象存储产品);
Piston Cloud(2015年被Cisco收购,相信是为了补充其Metapod产品功能);
Cisco Metapod(其前身是Cisco OpenStack 私有云项目);
IBM Cloud Manager(对OpenStack的资源调度、自服务门户做了大规模优化)。

以上只是不完全的列表,还有更多的厂家基于Open Stack技术来推出自己的私有云、公有云或混合云解决方案。在开源商务模式中经常会出现多重模式混合的现象,这通常可理解为企业在试图通过不同的渠道来实现盈利。

4、开源广告(PR)+赞助模式

绝大多数开源项目的存活依赖于企业和个人的经济资助,而开源项目和绝大多数互联网营销(病毒传播)非常类似,靠口碑累积人气。开源软件可以免费下载使用,但作为回馈,需要为该软件免费做广告。这也是为什么几乎所有开源项目的主页的显著位置都会列出它的用户包含了哪些业界知名的公司。

这种免费的背书(PR/endorsement)对于开源项目至关重要。著名开源运动活动家RMS曾经总结了开源项目背后的开发者最主要的诉求是成就感(Sense of Fulfillment)。而让全世界知道有那么多知名企业、产品构建在他们创造的开源项目之上是一种凌驾于物质(金钱)刺激之上的更高层次的心理满足。

另一方面,开源项目也通过各种使用许可(License Agreement)来规范、约束和引导它的使用者们如何正确使用以及如何传播或回馈开源社区。

5、开源结盟模式

开源项目中的参与者形成联盟(Alliance或Association)也是业界常见的运营模式。通常这种结盟模式都是业界的一些巨头主导的工业联盟。

6、开源+闭源组合模式

越来越多公司的产品研发策略已经调整为采用开源项目来构建通用组件,而通过内部闭源开发来实现那些独具特色的功能。这样做的一个最大的优点在于,通过利用开源社区的创造力与开发力量,确切地说是一种众包,可以极大节省企业的资金与资源消耗。而作为回馈这些公司通常会以赞助商、免费广告等方式来资助相关开源项目与社区。

二、关于开源vs.闭源商业化解决方案间的优劣势

简要地分析一下关于开源vs.闭源商业化解决方案间的优劣势。

1、成本

· 短期成本:开源上手成本低,使用灵活,可以算作其最大的优势。

· 中长期成本:开源项目组建的系统最终都需要大量人力和资源来维护,其综合成本通常并不比商业化解决方案更低。

2、稳定性

除非是非常成熟的开源项目,否则其稳定性是未经考验的,这也是使用开源项目在真正进入持续商业化时所遇到的最大挑战。

关于一个项目是否“成熟”,这是个非常主观的问题,如果用Github的star数量来衡量,要充分考虑中国式开源通过运营人头来点赞的模式,即便有1—2万颗星,也并不意味着项目已经成熟了。另外,要看Top100的贡献者,很多所谓的开源项目几乎所有的贡献者都是项目所在公司的内部员工,那么这种开源项目的成熟度能有多少呢?

像MySQL、Redis之类这么稳定的项目并不常见,即便是像MongoDB这么宏大的开源项目,一旦进入大规模部署后对于任何中小公司而言都是巨大的挑战,一旦无法克服,会深陷泥潭难以自拔。

国内市场上一度火爆的TFS(Taobao File System=淘宝文件系统),曾经受到很多程序员的追捧,但是很少有人仔细的分析过淘宝的应用场景和对该项目的支持力度,现在该项目已经寿终正寝(淘宝团队不再维护该项目),而且淘宝当时设计的目的是支持海量小文件,而有多少的创业项目是一样的业务需求呢?很多人盲目的上马了TFS,到头来发现系统稳定性很差而且有无数的问题,那么,这些是小团队、二次开发能力并不强悍的团队可以承受得了的吗?

3、效率

用性价比或投入产出比来评估效率是相对合理的方式。

老夫以为开源项目会给人造成其效率更高、性价比更高的认知,但是这是有待商榷的。

如上文提到的“稳定性”和“成本问题”,开源或许能够实现较高的短期可以见到效果效率,但是随着业务规模的增长,商业化解决方案能更多的让开发者关注于业务本身而不是花无数的精力去研究和保障稳定性、性能、可扩展性等支撑性问题的解决方案。

4、道德绑架

如果拿Neo4J在2018年底宣布其图数据库的社区化版本与企业化版本间的脱钩来看,有太多的开发人员乐衷于像水蛭一样从开源项目攫取,而并没有什么兴趣去回馈开源社区,长此以往,开源社区很难健康、持续性的发展。

5、伪开源

何谓伪开源?或许用半开源(Semi-open-source)说更准确一些,就是有很多商业化公司的开源项目中,核心部分的代码采用二进制文件的方式,并没有实质开源,而外围的服务层则以代码可现方式开源。这类的项目甚至占到了整个开源项目的1/3以上,尤其是高性能相关的项目、系统、库都采用这种方式来“开源” 。 例如那些以C、C++、Java这类编程语言为主实现的项目。显然,绝大多数的开发者根本不会有兴趣去探寻底层代码是否开源,能提供个接口来调用,然后项目方也通过开源获得了知名度,最终的结果是,皆大欢喜是真,明修栈道、暗渡陈仓也是真。

就写这么多吧,有啥问题,随时再勾兑!

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

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

相关文章

mac OS matplotlib missing from font(s) DejaVu Sans

如果能搜索到这篇文章,我猜你遇到了和我一样的问题:matplotlib绘图中文乱码。如下: 出现这个问题的原因是:matplotlib使用的字体列表中默认没有中文字体。 这里说一种解决方案:我们可以在文件中手动指定matplotlib使用…

二叉树详解-第一篇 树以及二叉树的概念

目录 ​编辑 1.树的概念及结构 1.1树的概念 1.2树的特点 1.3树的相关概念 1.4树的表示 2.二叉树的概念及结构 2.1二叉树的概念 2.2特殊二叉树-满二叉树和完全二叉树 1.满二叉树的概念及性质 2.完全二叉树的概念及性质 2.3二叉树的性质(重点) 2.4二叉树的存储 1.顺…

LeetCode - #103 二叉树的锯齿形层序遍历

文章目录 前言1. 描述2. 示例3. 答案关于我们 前言 我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swift 算法题题解整理为文字版以方便大家学习与阅读。 LeetCode 算法到目前我们已经更新…

沉淀硬化不锈钢压缩弹簧的主要特性

沉淀硬化不锈钢,作为一种兼具高强度与耐腐蚀性的合金材料,被广泛应用于制造高性能的压缩弹簧,尤其是在苛刻环境下的应用需求。以下是对沉淀硬化不锈钢压缩弹簧主要特性的科普介绍: 良好的耐蚀性 沉淀硬化不锈钢与304不锈钢拥有相似…

做个牛奶配送小程序商城是怎样的

商家线上经营奶品,主要是成品包装品牌奶或散奶周边客源生意模式等,无论哪些模式,本身奶产品的需求度就不低,自然也有着大量客户,农场/品牌厂商/经销商/小摊贩,除了线下实体店发展外,线上要完善本…

SpringCloud断路器的使用与原理解析

Spring Cloud断路器是在分布式系统中实现容错的一种方式。它的原理是通过在调用链路上添加断路器,当某个服务的调用出现故障或超时时,断路器会自动迅速地切换到快速失败模式,防止故障扩散,从而保护整个系统的稳定性。 Spring Cloud断路器的使用与原理解析如下: 一、使用断…

数据结构经典测题3

1. 设有定义: char *p; ,以下选项中不能正确将字符串赋值给字符型指针 p 的语句是【多选】( ) A: pgetchar(); B: scanf("%s",p); C: char s[]"china"; ps; D: *p"china"; 答案为ABD A选项&…

如何优化 Selenium 和 BeautifulSoup 的集成以提高数据抓取的效率?

摘要 在互联网时代,数据的价值日益凸显。对于电商网站如京东,其商品信息、用户评价等数据对于市场分析、产品定位等具有重要意义。然而,由于这些网站通常使用 JavaScript 动态生成内容,传统的爬虫技术难以直接获取到完整数据。本…

【Unity实战】yield return null还是WaitForEndOfFrame

当在Unity中编写协程(尤其是协程套无限循环)时,常常会用到yield关键字来控制协程的执行流程避免程序假死。以下是常见做法: yield return null 当使用yield return null时,协程会在下一帧继续执行。这意味着协程将暂…

SSM超市管理系统-计算机毕业设计源码12393

目 录 摘要 Abstract 1 绪论 1.1研究的背景和意义 1.2研究内容 1.3论文结构与章节安排 2 开发技术介绍 2.1 SSM框架 2.2 MySQL数据库 3 超市管理系统系统分析 3.1 可行性分析 3.2 系统流程分析 3.2.1 数据流程 3.3.2 业务流程 3.3 系统功能分析 3.3.1 功能性…

机器学习 | 回归算法原理——最速下降法(梯度下降法)

Hi,大家好,我是半亩花海。接着上次的最小二乘法继续更新《白话机器学习的数学》这本书的学习笔记,在此分享最速下降法(梯度下降法)这一回归算法原理。本章的回归算法原理基于《基于广告费预测点击量》项目,…

使用 AntV G2 绘制折线图

本文由ScriptEcho平台提供技术支持 项目地址:传送门 使用 AntV G2 绘制折线图 应用场景介绍 AntV G2 是一款基于 Vue 的数据可视化框架,可用于创建交互式图表。本代码展示了如何使用 AntV G2 绘制折线图,以可视化时间序列数据。 代码基本…

数据结构——队列(java实现)及相应的oj题

文章目录 前言队列队列的概念队列的实现队列的链表实现实现的方法与属性内部类实现节点入队列出队列获取队头元素但不删除判空获取队列元素个数 队列的数组实现循环队列方法属性实现:构造方法向循环队列插入一个元素,成功插入则为真。从循环队列中删除一…

Axivion Suite 7.8现已发布

现已实现100%覆盖MISRA规则,并加入了高级功能来提高代码分析能力。 我们很高兴地宣布Axivion Suite 7.8发布。全新版本的Axivion Suite对编译器、配置、分析、仪表板 (WebUI)和IDE插件的架构验证和静态代码分析功能均进行了升级。 100%覆盖所有可测试的MISRA规则 …

昇思25天学习打卡营第15天|K近邻算法实现红酒聚类

这个实验是关于如何使用MindSpore框架在红酒数据集上实现K近邻(KNN)算法来进行聚类分析的。KNN是一种简单但非常有效的机器学习算法,它通过计算样本之间的距离来决定其分类KNN算法的核心思想是,一个样本的类别可以通过它与训练集中…

Pytorch使用教学1-Tensor的创建

0 导读 在我们不知道什么是深度学习计算框架时,我们可以把PyTorch看做是Python的第三方库,在PyTorch中定义了适用于深度学习的张量Tensor,以及张量的各类计算。就相当于NumPy中定义的Array和对应的科学计算方法,正是这些基本数据…

【Nacos安装】

这里写目录标题 Nacos安装jar包启动Docker单体Docker集群 Nacos相关配置日志配置 Nacos安装 jar包启动 下载jar包 在官方下载链接,根据需求选择相应的版本下载。 解压 tar -zxvf nacos-server-2.4.0.1.tar.gz或者解压到指定目录 tar -zxvf nacos-server-2.4.0…

TikTok达人合作中的消费者行为研究:精准营销新趋势

随着全球社交媒体技术的飞速发展,TikTok作为短视频领域的佼佼者,其独特的达人带货模式不仅成为驱动消费市场发展的新力量,还深刻改变了消费者的购买行为。本文Nox聚星将和大家探讨TikTok达人合作过程中消费者的行为模式和偏好变化。 一、消费…

SkyWalking入门搭建【apache-skywalking-apm-10.0.0】

Java学习文档 视频讲解 文章目录 一、准备二、服务启动2-1、Nacos启动2-2、SkyWalking服务端启动2-3、SkyWalking控制台启动2-4、自定义服务接入 SkyWalking 三、常用监控3-1、服务请求通过率3-2、服务请求拓扑图3-3、链路 四、日志配置五、性能剖析六、数据持久化6-1、MySQL持…

企业怎么才能用上大语言模型?

题图|视觉中国 以ChatGPT为起点,大语言模型(LLM)用全面的技术创新,以及在用户和产业中的应用落地,再次掀起了一个AI新浪潮。 与它的前辈们相比,大语言模型因为打通了语言这一人类沟通中介&…