当前位置: 首页 > article >正文

黄金屋 #2 我应该将产品开源吗?

“开源”(Open-Source),如同“自由软件”(Free Software)一样,凭借其有意为之的模糊赢得了广泛传播。泛泛而谈开源,甚至是将所谓开源硬件、开源文档、开放设计等都归入开源的范畴,很容易丧失焦点。本文不讨论任意个体或组织开发的任意软件是否应该开源,而是聚焦在企业研发的商业软件产品应当采取的开源策略。

从著名的《大教堂与集市》文集当中第四篇《魔法锅》开始。其中 4.6 节“闭源的理由”写到:

闭源真正想保护的是什么?

假如你雇人给你的企业写了一个专业的财会软件,选择闭源不会比开源好到哪里。如果你希望闭源,唯一合理的原因是你想把这个软件卖给别人,或者防止竞争者使用它。

答案很明显,你在保护销售价值。但 95% 的软件写出来是供内部使用的,在没有销售价值可言的情形下,从闭源中还能得到什么好处?

如果我们把商业软件产品具体化到数据库和数据系统,诸如 Snowflake 和 Fivetran 这样的公司,它们的核心商业产品就是打算卖给别人的。销售价值是这些商业软件产品被开发出来的主要目的,因而似乎在此种情况下,闭源的理由恰好成立。

我们再看到第五篇《黑客的反击》,其中 5.9 节“走进未来”写到:

有一个问题值得思量:Linux 社区能否给整个系统提供一个终端用户友好的 GUI 界面?

如果这主要是技术问题的话,其结果就不难推断了。但它并不是,问题主要出在人机工程学设计和界面心理学上,黑客在这些地方从来就很弱。黑客在为其他黑客设计接口时做得很好,但他们往往不善于为另外 95% 人群的思维过程建模,从而写不出能让终端用户愿意花钱购买的页面。

如同 Eric 在文中所预测,Linux 有效占领了服务器、数据中心、ISP 以及互联网的操作系统生态位,而微软仍然保持对桌面的控制。然而,不同于 Eric 的预测,Windows 并没有退出历史舞台,Linux 的 GUI 界面也谈不上多么终端用户友好。类似地,在商业数据库领域,Oracle 和 Microsoft SQL Server 仍然占据了相当部分的市场份额,新兴产品 Snowflake 也在多个榜单上名列前茅。PostgreSQL 和 MySQL 并不能完全取代这些专有软件产品,反而成为云上数据库服务的核心,由各个云厂商补充了管控面板和 GUI 界面,重新包装成专有云服务出售。

可以看到,开源协同带来的核心收益,(来自黑客群体的)同行评审,在某些类型的软件开发上很难出现。这是因为朴素的独立黑客大多关心自己能用上的功能,因此对于 Linux 这样的操作系统及其上面的生态,在自己使用时遇到的问题,将修复和改进的补丁分享出来并非难事。可是,要想让独立黑客们开发一个自己用不上的能力,例如企业合规管理或者大规模的分布式数据系统,除非有明确的企业支持,否则难以为继。

这种企业支持下的软件开发,如果恰好落在了 Eric Raymond 所说的“供内部使用”,那么仍然有开源的理由。反之,如果企业本身雇佣开发者就是为了制造商业软件产品并以某种形式出售,那么开源的理由就不成立了。

简而言之,如果你的公司存续依赖于销售商业软件产品,你应当默认将其作为专有软件,谨慎考虑开源策略。

本文后续将介绍商业开源的实例,包括 GitHub / Confluent / Aiven / Airbyte / Snowflake 等。然后,结合实际案例,讨论企业开源的内在动机,企业开源的外部动力,以及如何调动软件研发当中的开源要素。全文一万字。

商业开源的案例分析


http://www.kler.cn/a/593752.html

相关文章:

  • 雅可比行列式
  • fontTools工具的使用介绍
  • [DeepRetrieval] 用DeepSeek-R1-Zero的思路教会模型怎么用搜索引擎找文本
  • Python数据可视化实战:从基础图表到高级分析
  • 在使用mybatis时遇到枚举的相关问题和解决
  • The method precision() is undefined for the type BigInteger
  • 二分查找------查找区间
  • AI全天候智能助手,为您构建私人数据库
  • 达芬奇预设:创意现代抽象动态海报活力动态文字标题排版设计视觉预设 MotionVFX – mTitle Hype DVR
  • VLLM专题(三十九)—自动前缀缓存(二)
  • linux性能监控的分布式集群 prometheus + grafana 监控体系搭建
  • 让vscode远程开发也可以图形显示
  • nuxt项目 详情页有阅读次数需要更新,有热门推荐列表需要更新适合做SSG吗
  • 【C++指南】string(三):basic_string底层原理与模拟实现详解
  • 【MyDB】6-TabelManager 字段与表管理 之1-TBM实现思路概览
  • 江小南的题目讲解
  • Vala编程语言教程-语言元素
  • 轮足式机器人运动控制系统设计(大纲)
  • 过程监控——lsof
  • DeepSeek(8):结合Kimi-PPT助手一键生成演示报告