开源是什么意思 软件开源和不开源的区别


在开源的早期阶段,与大多数人的设想不同,软件并不是闭源的。

在 20 世纪 60 年代,IBM 等公司开发的软件是自由分发的,同时还提供了源代码。当时的商业模式主要以硬件为主,软件作为硬件的附属品,用于支持硬件的运行。这段时期标志着开源历史的早期阶段。

后来,随着硬件销售利润的下降,制造商只能另辟蹊径获取营收,于是开始单独销售软件,但不再提供源代码。由此可见,商业模式在某种程度上也是轮回的—— Apple 在硬件销售利润遇到瓶颈后,开拓了软件服务收入。

直到 1983 年,曾在 MIT AI 实验室工作的程序员 Richard Matthew Stallman 对企业在源代码上的垄断感到不满,发起了 GNU 项目,这标志着自由软件运动的开端。

自由软件运动更像是社会运动,而开源则更偏向于软件开发方法。但这两者不冲突:开源的历史过程实际上是——开源 → 闭源 → 再开源。

回到正题,聊聊「开源的行为」,为什么开源?

在开源史上,我们可以看到——开源始终与商业「相爱相杀」:崇尚自由精神的程序员看不惯大公司对源代码的垄断,发起了自由软件运动;而今天,大公司却纷纷拥抱开源。

一言以蔽之:开源就是用事实标准去建立生态。换言之,开源是培养用户、确定行业标准和赚钱的重要手段。

例如,云计算行业中,虚拟机、数据库等技术实现成熟、接口标准化、运行可靠,因此商业化程度较高。许多开发人员将这些技术作为基础技能,云厂商可以通过标准化进行规模化,从而实现盈利。

一些组件,如消息中间件和离线计算,并没有统一的标准,开发者使用成本较高,云厂商提供的服务价格自然也较高。云厂商期望通过开源推广自己的产品,将这些工具发展成为开发人员的基础工具套件,从而提高企业版的销量。

例如,Google 希望使用 K8S 来确定集群管理的标准。

由此可见,开源行为在当前阶段已经成为商业的一部分,甚至是商业的一种手段。

开源本身仍然为开发者带来许多好处——比如白嫖。但我们也不必排斥开源的商业诉求,如果能接受开源就是商业模式的一种,我们就可以讨论开源是如何盈利的。

事实标准是关键:开源建立的事实标准带来的显着优势是——隐形绑定。当某项技术成为行业标准时,基于这项技术的产品推广就会变得轻而易举。

与此开源对商业的另一项助力在于:开源形成的社区生态可以为商业市场提供支撑。

从产品角度来看,社区生态关乎开源产品的可持续迭代,良好的产品迭代是商业化的基础,在此不做赘述。

而从商业角度来看,对于公司而言,开不开源其实是一种定价策略——开源与否解决了价格的问题,开源相当于对该版本免费提供。同样举个例子,软件研发管理平台 CODING 在全面免费之后,其收入反而提高了。虽然开源面向的是开发者,但技术产品的商业行为天然就是 ToB 的商业模式,需要付费的用户依然会付费。

我们就能理解为什么现在大公司开始扎堆开源。当然有 KPI 的因素,但我们今天只讨论理论模型。

一些开源项目开着开着就死了,一些开源却能得到公司的长期支持。注意了 —— 长期支持必须对公司的商业有利才有价值。公司在考虑开源时,必定设计了一种商业模式来承载这个项目。

再举个例子吧——阿里巴巴的云原生战略。

基本上大厂的开源方法论,都可以从标准、产品和生态三部曲,来推出厂商的真正商业目的(或野心)。

聊了那么多商业的事儿,铜臭味太大,谈谈开发者理想。

开源绝不是把代码往 GitHub 一扔,公关稿一发,大喇叭一喊——我开源啦!

开源最重要之处在于社区环境,这是一个为 PR (Pull Request) 战斗的游戏,这样的开源项目才能充满活力。

一个成功的开源项目,必然有多位开发者参与。与普通的项目管理相比,协作复杂度会空前高,这时候如果靠人治、靠热情,显然是不可持续的。

这里推荐一本书《大教堂与集市》,这本书讲述了传统软件开发和开源软件开发在项目管理上的不同之处。

开源是什么意思(软件开源和不开源的区别)

《大教堂与集市》雷蒙德 (Eric S. Raymond)

从书名上我们也可以一窥全豹——传统软件开发的项目管理,更强调明确的目标、工期资源以及质量之间的平衡;而开源项目一般都会依托于开源社区的管理和运营,包括开源基金会的运作,也是遵循开源社区的治理模式。

从开源社区治理原则的角度来看,有三点我觉得很重要:

如果你提交过代码,就会知道,每次提交都会有 commit 记录。

同理,对于开源项目的任何讨论与决策,也都应该有记录,并且任何人在任何时间都可查询可追溯。

这样才能让第三方开发者(或其他利益群体)能够聚集到这个开源项目中来。通过公开、透明的讨论、决策来推进项目管理。

共识意味着彼此尊重,当然某些时候可能会降低效率,但这是值得的。因为开源项目的的 desenvolvimento一定涉及不同开发者、不同利益主体,达成共识才能推进后续的进展。

对于非开发者而言,第三个原则可能与日常认知有所不同。

在开源社区,话语权取决于你对项目或社区的贡献程度。只有积极贡献,才能赢得尊重,获得社区分配的责任。

精英在这里指的是 "有威望" 的人,他们能够吸引更多的参与者,从而使开源项目和社区保持活力。

从现实角度看,开源对于公司来说是一种商业手段。但这并不意味着开发者在开源过程中不能受益,它也是开发者技术交流和追求技术理想的途径之一。开源行为能够带来商业回报,但这并不代表它背离了初心。

正如尤雨溪先生通过开源项目获得了财富自由 (开玩笑)。

最后需要强调的是,开源项目需要来自各个领域的人才,艺术家、音乐家、设计师和文档撰写者都可以共同创造完整的作品。