开源(open source)是什么?为什么要开源?
| 转载自:知乎用户Aceyclee的回答
| 编辑:周晶晶
| 设计:朱亿钦
| 责编:王玥敏
从「开源」的早期讲起,其实和大多数人想象的不同,软件一开始并不是闭源的。
在上世纪 60年代,IBM 等公司开发的软件都是自由分发的,同时也提供源代码。那个时候的商业模式更多是以硬件为主,软件作为硬件的附属品,属于支撑硬件工作的东西。这才是开源历史上的早期阶段。
后来随着硬件销售的利润下跌,制造商只能另辟营收,才开始单独销售软件,并且不再提供源代码。从这里也可以看到商业模式在某种程度上,其实也是一种轮回—— Apple 在硬件销售利润上达到了瓶颈,于是开拓了软件服务的收入。
直到 1983年,一位曾在 MIT Al 实验室工作的程序员 Richard Matthew Stallman 对企业在源代码上的垄断非常不满,发起了 GNU 项目,这个项目标志了自由软件运动的开始。
当然,自由软件运动更像是社会运动,而开源则更偏向于软件开发方法。但这并不妨碍我们理解:开源历史的过程其实是——开源 → 闭源 → 再开源。
为什么要开源?
其实在开源史上,我们也可以看到——开源一直和商业是「相爱相杀」的,崇尚自由精神的程序员看不惯大公司对源代码的垄断,发起了自由软件运动:而今天,大公司却纷纷开始拥抱开源。
一个很重要的问题来了 ——软件开源背后的商业模式是什么?
一言概之:开源就是用事实标准去建立生态。换言之,开源是培养用户、确定行业标准和赚钱的重要手段。
比如说云计算行业,像虚拟机、数据库都是商业化比较好的。因为这些技术相对成熟、也有标准的接口,实现也更可靠。很多开发者会将其作为自己的基础技能,因此云厂商可以用标准化来进行规模化,从而实现盛利。
但是另外一些组件,像消息中间件、离线计算等,并没有很统一的标准,开发者使用这些组件的学习的成本比较高,云厂商提供的服务自然也高。所以云厂商就希望通过开源来推广自己的产品,把这些工具发展成为开发者的基础工具
套件,才能提高enterprise 版本的销量。
举个例子,Google 就希望使用 K8S 来确定集群管理的标准。
所以不难看出,开源行为在当前阶段,已经变成了商业的一部分,或者是商业的一种手段。
当然开源本身还是能给开发者带来很多利处的——比如白嫖。但我们也并不需要排斥它有商业的诉求,如果能接受开源就是商业模式的一种,后边我们就可以讨论开源是如何赚到钱的。
开源对商业的帮助
还是从事实标准讲起,开源所建立的事实标准带来最明显的好处是——隐形绑定。这个很好理解,某项技术已经是业界标淮了,那你推基于这项技术的产品还很难吗?
与此同时,开源对商业的帮助还在于:开源所形成的社区生态,可以对商业市场产生支撑。
从产品角度而言,社区生态关乎开源产品的可持续迭代,良好的产品迭代是商业化的基础,在此不做冗述。
而从商业的角度来看,对公司来说开不开源其实是一种价格策略——开源与否解决的是价格的问题,开源相当于对该版本进行免费(在该产品采用的协议范围内)。
同样举个例子,软件研发管理平台 CODING 在全面免费之后,收入反而提高了。虽然开源面向的是开发者,但是技术产品的商业行为就是一种 ToB的生意,该付费的还是会付费。(本段内容感谢 @王子赢)
所以我们就不难理解,为什么现在大公司开始扎堆开源,当然有KPI 的因素,但我们今天只讲理论模型。
有些开源项目开着开着就死了,有些开源却能得到公司的长期支持,注意了长期支持一定是要对公司的商业有帮助才行。因此公司在讲开源的时候,背后必然设计了一种商业模型来承载这个项目。
再举个例子吧——阿里的云原生战略(请打钱 @阿里云)
基本上大厂的开源方法论,都可以从标准、产品和生态三部曲,来推出厂商的真正商业目的(or野心)。
聊了那么多商业的事儿,铜臭味太大,谈谈开发者理想。
开源绝不代表把代码往 GitHub一扔,公关稿一发,大喇叭一喊——我开源啦!
开源最重要的是社区环境,是一个为 PR (Pull Request) 战斗的游戏,这样的开源项目才能有勃勃生机。
开源社区如何运作?
一个成功的开源项目,必然有大量的开发者参与。对比于一般的项目管理,它的协作复杂度会空前的高,这个时候如果靠人治、靠热情,显然是不可持续的。
这里推荐一本书 《大教堂与集市》,这本书讲了传统软件开发和开源软件开发在项目管理上的不同之处。
从书名上我们也可以一窥全豹——传统软件开发的项目管理,更强调明确的目标、工期资源以及质量的之问平衡;而开源项目一般都会依托于开源社区的管理和运营,包括开源基金会的运作,也是遵循开源社区的治理模式。
从开源社区治理原则的维度来看,有三点我觉得很重要:
1、公开与透明
如果你提交过代码,你就知道,每次提交都会有 commit 记录。
同理,对于开源项目的任何讨论与决策,也都应该有记录,并且任何人在任何时间都可查询可追潮。
这样才能让第三方开发者(或者其他利益群体)能够聚集到这个开源项目中来。通过公开、透明的讨论、决策来推进项目管理。
2、共识原则
共识意味着彼此尊重,当然某些时候可能会有效率的损失,但这是值得的。因为开源项目的发展一定会涉及不同的开发者、不同的利益群体,达成共识才能推进下一步的前进。
3、精英治理
如果不是开发者,第三个原则可能和大多数人的常识相悖。
是这样的,开源社区的话语权,是由你对项目/社区的贡献大小决定的。你做了贡献,才能得到他人的respect, 才能获得社区给予的职责。
精英可以理解为「有威望」,这样才能够吸引更多的人积极参与到开源项目和社区活动,使之保持活力。
总的来说,在现实意义上,对公司而言,开源是商业手段的一种。但这并不影响开发者在开源过程中受益,它也是开发者技术交流和技术理想的实现过程之一,不必因为「开源行为」刚好也能挣到钱而说它忘了初心。
君不见尤大尤雨溪做开源都财富自由了 (bushi
最后还想说的是——开源项目不只需要程序员,还需要其他各个领域的人才,艺术家、音乐家、设计师和文档撰写者也都可以一起做出完整的作品。
相关阅读 | Related Reading
我的开源故事
TiDB in 深圳!开源 + 云原生在金融行业的实践:去 O 之战、海量数据下的高并发、基于 K8s 构筑容器数据库平台...
最后5天,赢取开源社精美纪念品
开源社简介
开源社成立于 2014 年,是由志愿贡献于开源事业的个人成员,依 “贡献、共识、共治” 原则所组成,始终维持厂商中立、公益、非营利的特点,是最早以 “开源治理、国际接轨、社区发展、开源项目” 为使命的开源社区联合体。开源社积极与支持开源的社区、企业以及政府相关单位紧密合作,以 “立足中国、贡献全球” 为愿景,旨在共创健康可持续发展的开源生态,推动中国开源社区成为全球开源体系的积极参与及贡献者。
2017 年,开源社转型为完全由个人成员组成,参照 ASF 等国际顶级开源基金会的治理模式运作。近七年来,链接了数万名开源人,集聚了上千名社区成员及志愿者、海内外数百位讲师,合作了近百家赞助、媒体、社区伙伴。
开源(open source)是什么?为什么要开源?相关推荐
- 开源(Open Source)那些事儿 (一)
景 最近有幸参与了王克伟的开源项目iToday,详情可以参考 我在Windows嵌入式系统上的一个绚丽用户界面开源项目(iToday).克伟的号召力超人,Q群一下子就爆满200人.如果扩容了,大家有兴 ...
- 开源 (open source) 是什么?为什么要开源?
从「开源」的早期讲起,其实和大多数人想象的不同,软件一开始并不是闭源的. 在上世纪 60 年代,IBM 等公司开发的软件都是自由分发的,同时也提供源代码.那个时候的商业模式更多是以硬件为主,软件作为硬 ...
- 开源要“开”得安全高效:开源云计算的五大发展趋势
过去几年,开发者几乎都会用到开源.开源现象日益普遍,有赖于业内人士的智慧和努力.不过,更重要的还是开源本身的优势:能够轻易整合多种多样的开源解决方案.在业内,有了API(Application Pro ...
- 开源是项“全民工程”,揭秘开源团队的管理运作
2018年末,GitHub发布了年终总结报告,报告中指出:2018年,Github 注册的新用户数量是前六年的总和,且目前Github上的代码仓库已有1亿个.这样的结果,相信Linus Torvald ...
- 开源软件新时代 55个经典开源Windows工具
开放源代码软件已经成为一个时髦的名词,这里有两个有力的证据:Firefox浏览器的下载人次超过了2500万:同时,基于Linux的Web服务器也占据了最大的市场份额.人们普遍相信,开放源代码软件(op ...
- 开源协议有哪些?如何选择开源协议?
开源软件在追求"自由"的同时,不能牺牲程序员的利益,否则将会影响程序员的创造激情,因此世界上现在有 60 多种被开源促进组织(Open Source Initiative)认可的开 ...
- 开源的未来 10 年:中国开源社区建立是关键
[CSDN 编者按]从 Eric Raymond 在自由软件的范畴下进一步提出 Open Source 开源软件至今,已经过去 30 余年,今天,开源不仅完全渗透互联网,更成为众多 IT 公司的基石. ...
- 开源无疆|京东云参加2019开源年会,助力开源
开源已经成为信息技术发展的重要力量.无论是云计算.大数据,还是人工智能.区块链等领域,都大量采用了开源技术.据 GitHub数据披露,GitHub 注册用户超 4000 万,美国程序员占比20%,中国 ...
- 恭喜龙蜥获得中国开源云联盟2022年度中国“最佳开源实践案例”和“杰出开源贡献者”奖项
近日,由工信部中国电子技术标准化研究院主办的 2022 木兰峰会在北京圆满举办,峰会上正式公布了中国开源云联盟(China Open Source Cloud League,简称"COSCL ...
- 谈谈开源的利弊和国内的开源 ——《新程序员005:开源深度指南 新金融背后的科技力量》书评
感谢CSDN的送测 <新程序员005:开源深度指南 & 新金融背后的科技力量> 是一本以计算机编程和金融科技为主题的杂志书,由中国最大的开源社区之一的开源社主办,内容丰富多样,包括 ...
最新文章
- 李飞飞高徒:斯坦福如何打造基于视觉的智能医院?
- jQuery 插件开发实例(二)
- 分享预告:「数据安全问题」+「 股权与期权」
- C#操作XML总结1
- 机器学习常用算法(LDA,CNN,LR)原理简述
- USB驱动程序之概念介绍学习笔记
- 7.2 DOM方法(以动态方式实时创建标记,实质在改变DOM节点树)
- 《庆余年》超前点播引发争议,腾讯视频、爱奇艺终于回应了...
- 服务器--apache启用多个端口的方法
- win10系统自带防病毒配置
- Python基础总结
- 用java写图形验证码,超级简单
- FireFox、chrome通过插件使用IE内核,IE Tab v2
- android下载工具 磁力,【安卓+iOS】磁力搜索+下载工具
- 北邮计算机学院复试分数线,2018年北京邮电大学复试分数线
- jquery事件绑定的问题Uncaught TypeError: $(...).live is not a function at HTMLDocument.<anonymous> (ex5_
- 压力测试软件怎么用,鲁大师温度压力测试如何使用
- 原生js或者jquery获取父级元素/同级元素/下级元素
- SQL Server 2012卸载步骤
- wifidog原理分析
热门文章
- 玩机搞机------安卓手机分区操作中的的各种工具 提取分区 备份分区 檫除分区 推荐一
- 用 Python 画一张北京实时疫情地图:从爬虫到绘图到自动上传服务器
- idea安装python
- SSL(Secure Sockets Layer)安全套接层协议详解
- wordpress使用query_posts()函数获取指定文章
- 三年级计算机考试题目及答案,三年级信息技术试题及答案.doc
- 最火Python3 玩转实用小工具
- 一个随机数引发的血案
- mount 硬盘挂载
- redhat linux 硬盘挂载方法!!!,Redhat Linux 硬盘挂载方法!!!