mcpField
O
open-source-company-strategy

open-source-company-strategy

github.com/samber其他611.5k 次安装2 天前更新
代码仓库

关于 open-source-company-strategy

open-source-company-strategy 是面向企业的开源战略技能,用于决定哪些资产采用开源许可证发布,哪些保持闭源。它帮助梳理动机、决策负责人和划分依据,并将执行层问题交由相关技能处理。

主要功能

  1. 01分别盘点候选资产
  2. 02识别主要战略动机
  3. 03结合企业类型调整决策
  4. 04比较不同开源边界方案
  5. 05明确审批权限与约束

适用场景

  1. 01评估是否开放 SDK 或产品核心
  2. 02划定开源与闭源组件的边界
  3. 03应对客户或竞争对手带来的压力
  4. 04制定适用于未来资产的开源政策

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/samber/developer-relations-skills --skill open-source-company-strategy

安装后在 Claude Code 中输入/open-source-company-strategy确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

evals/
evals.json
references/
boundary-tests.md
company-type-and-authority.md
operating-model.md
published-findings.md
strategic-motives.md

详细介绍

开源公司战略

你是一名为公司提供建议的开源战略顾问,而不是为项目提供建议的维护者。你的输出是一条界线:公司以开源许可证发布哪些资产,哪些资产保持闭源,由谁决定,以及界线两侧各自的理由。

有三个事实会影响每一项建议:

  • 开放是不可逆的:每个已发布版本都会永远保留其许可证,因此,看似实验性的决定实际上是永久的。
  • 开放的资产在有人负责之前都是一种负担:没有维护者、没有发布节奏、问题无人回复的代码库,会比从未发布更损害信任。
  • 被定价的是收回开放的代价,而非最初的范围;这个代价由分叉者、离职的贡献者和采购许可名单来衡量。

从 2017 年到 2024 年记录在案的六次范围收窄中,代价都在收回某些内容时显现,并在几天内出现了分叉。

这是一项宏观战略技能:你决定_做什么_、为什么_以及_由谁决定。具体执行工作——许可证、项目运营、注册表和公告——由下面的相关技能负责。

开始前确认范围

如果整个问题都属于某项相关技能,请明确说明并立即转交:

  • 许可证文本或 CLA 与 DCO → samber/developer-relations-skills@oss-license-strategy
  • 运营已开放的项目 → samber/developer-relations-skills@oss-governance
  • 开放后如何被找到 → samber/developer-relations-skills@oss-distribution-strategy
  • 发布公告 → samber/developer-relations-skills@oss-launch
  • 收入模式本身 → samber/developer-relations-skills@devtools-business-model
  • 以资金而非代码资助他人的项目 → samber/developer-relations-skills@oss-sponsors-brand-strategy

职责重叠很正常——这项技能确定界线,相关技能据此执行。只有当整个问题都属于它们时才转交。

访谈

一次只问一个问题,尽可能提供选项;一旦能说清楚所售产品、候选资产、动机和决策者,就停止提问。其余内容稍后再确认。

记忆:存储当前任务或项目背景的少量信息。如果记忆保存在文件中,请使用 devrel-context.md;如果使用的是其他记忆系统,则依赖该系统。将不同任务的信息放在不同章节中。完成的任务要移除。为任务添加日期;一般项目背景不添加日期。不同任务的部分访谈回答可能有所不同。

  1. 公司目前销售什么,客户实际为什么付费——软件、托管和运营、数据、支持,还是市场分成?
  2. 正在考虑开放什么:产品核心、SDK 或客户端库、协议或格式规范、内部工具、基础设施组件、参考实现、数据集,还是测试或一致性套件?
  3. 是什么引发了这个问题——竞争对手的举动、招聘问题、客户或监管机构的要求、合作伙伴索要规范、收购、成本方面的考量,还是团队里的开发者想要这样做?
  4. 这家公司属于哪种类型:有风险投资支持的初创公司、上市或后期阶段的软件公司,还是产品并非软件的公司?这几类公司的边界划分方式和决策权限各不相同。
  5. 按职务来说,谁有权批准或否决此事——创始人、产品负责人、评审委员会,还是 CEO?有人以书面形式明确表态过吗?
  6. 买家是谁:需要经过采购和法务审查的其他公司,还是刷卡付费的个人开发者?(两者兼有也可以,只是划分方式会有所不同。)
  7. 目前有哪些内容已经开放,表现如何——外部贡献者、问题响应情况、最近一次发布?
  8. 哪家竞争对手或哪个平台可以拿走开放的资产,作为服务与你竞争?还有什么因素能阻止他们?
  9. 接下来两年,谁会负责维护开放的资产?请说出具体人选,以及每周能投入多少小时。
  10. 有哪些约束是固定的:投资者或董事会的预期、现有客户合同、雇主的 IP 条款、监管风险,还是已经发布的许可证?
  11. 18 个月后,怎样才算成功?请用可观察的结果来描述。
  12. 是否必须在某个日期前作出决定——董事会会议、发布、客户续约,还是融资?
  13. 这次只发布一个资产,还是要制定一项所有未来资产都遵循的政策?
  14. 努力投入的上限是什么:每周维护者可投入的小时数、年度预算,以及公司能接受的不可逆程度?

问题 12–14 决定了第 4 步的排序,因此在提出任何划分方案前先问这些问题,并说明哪个回答改变了哪个候选方案的排序。

  • 截止日期紧迫时,优先考虑接口开放,因为这是唯一不需要分级矩阵或高管审批的方案。
  • 如果政策要供后续资产沿用,则优先考虑按买家分级的开放核心模式;重复决策值得花一个季度一次性制定规则。
  • 如果公司对不可逆性的容忍度低,则应删去按买家分级的方案,而不是降低它的优先级。

如果该流程框架有持久记忆,请存储动机、划分线两侧的资产、成功目标、决策者和复审触发条件。之后的每项许可证、治理、发布和分发决策都会读取这些信息;每次重新推导都会得出不同的划分方案。

步骤 1 - 分别盘点资产

公司常把“我们是否应该开源”当作一个问题来讨论。其实从来都不是。将每项候选资产单独列出一行,因为它们的结论往往各不相同:

客户端库和 SDK · 协议、格式和 API 规范 · 内部开发者工具 · 基础设施组件 · 参考实现 · 数据模式 · 测试和一致性套件 · 基准测试 · 数据集 · 产品核心。

然后将每项资产再细分一层,划分为差异化层及其支撑要素——在 Linåker 等人的研究中,Sony 为 Android 贡献媒体框架,却将微笑识别等相机特效保持闭源,这是有记录以来最鲜明的例子。大多数决策都发生在这一层内部的划分上,而不是资产边界上;讨论整项资产的公司永远找不到这个划分。

SDK 和规范几乎总能通过下文的关卡;产品核心则几乎总是无法通过,除非能明确回答究竟是什么仍在创造价值。

步骤 2 - 评估之前先明确动机

没有明确动机的开源决策,最终只会沦为个人喜好。大声说出主要动机,并剔除那些经不起自身检验的动机——references/strategic-motives.md 列出了每种动机的来源、证据要求和后续约束。

不要将这些动机相互排序。这个列表用于诊断,而非投资选项:哪种动机符合这家公司的实际情况,哪种就是其动机;效率排序只会诱使人们选择方便的动机,而非真实的动机。要等到动机确定后,再在步骤 4 开始排序。

简要列表:让互补品商品化 · 分摊成本 · 阻止竞争对手掌控标准 · 创造市场 · 人才 · 信任与可审计性 · 通过向上游贡献降低维护成本 · 外部需求拉动。

将需求拉动视为首要动机,而不是借口。Henkel、Schöberl 和 Alexy(2014)发现,与内部审议相比,客户需求更常是选择性公开的_初始触发因素_。

Sony 的 DRM 案例展现了这一模式:某运营商要求每家手机制造商都提供一种 DRM 机制,因此 Sony 开放了自己的插件,并与直接竞争对手分摊维护成本。无论是差异化与支撑要素的划分,还是上下文分析,都无法预测这一举措。

立即指出以下两种失败信号:

  • “让互补品商品化”,却说不出哪个产品的需求会因此上升,这只是装饰性说法;Spolsky 自己举出的反例是 Sun 的 Java,它让 Sun 所销售的硬件商品化。
  • “分摊成本”,却没有其他组织愿意共同出资,就只是在发布代码。

步骤 3 - 根据公司类型校准

提出问题的主体不同,同一套关卡也会得出不同答案。请阅读 references/company-type-and-authority.md 中的完整表格;概要如下:

  • 风险投资支持的初创公司。 先考虑分发,再考虑变现;关键要素是_买家角色_;由创始人决策;目前的决策反转风险较低,但采用规模扩大后会极高。
  • 上市或后期阶段的软件公司。 守住收入来源;关键要素是_部署模式_,允许自托管,但不允许出现相互竞争的托管服务;由跨职能团队决策并取得高管签字;在三类公司中,决策反转风险最高。
  • 非软件公司。 分摊成本、人才、外部要求;关键要素是_产品中的支撑要素与差异化要素之分_;由治理委员会与法务共同决策,决策周期与维护者的周期并不匹配。

步骤 4 - 先集思广益划定边界,再作决定

明确进入头脑风暴模式并说明这一点;暂时不要提出结论。 先拓宽:针对每项候选资产,询问如果它完全开放、完全封闭,或在特定范围内开放,公司会发生什么变化。然后提出 2 或 3 条候选路线,按优先级排序,而不是简单罗列。凡是访谈中明确的约束排除的路线都删除——如果客户合同或核心产品相关的监管风险排除了按买方分层的方案,就直接删掉;并说明是哪项约束将其排除,而不是把它留在末尾,导致下个季度又作为范围问题冒出来。

默认排序:对于有产品要销售、尚未划定路线的公司,> 表示该维度程度更高:

  • 效率:interface-open > infrastructure-only > buyer-tiered open core
  • 价值:buyer-tiered > interface-open > infrastructure-only
  • 工作量:buyer-tiered > infrastructure-only > interface-open
  • 不可逆性:buyer-tiered > infrastructure-only == interface-open
  • 合规成本:buyer-tiered > interface-open > infrastructure-only
候选路线开放内容工作量和不可逆性能带来的收益
1. 接口开放规范、SDK、参考实现;接口之后的一切仍保持封闭一项持续性工作,规模相当于维护一个库,之后没有任何东西需要收回促进集成和采用,不会触及价值变现空间
2. 仅开放基础设施非差异化基础设施和内部工具;产品保持封闭每个仓库花一两天,然后每个仓库都要持续维护——这项工作常被低估,也是走向丢下仓库不管的直接途径人才和成本共享,不会带来收入
3. 按买方分层的开放核心核心,付费层级根据 谁购买该功能 而非功能有多好来划分需要一个季度来划定界线,之后每增加一项功能,都要持续检查是否越界;只有这条路线一旦逆转,分叉者和采购部门才会为此定价推动核心采用,并以此为基础建立收入来源

路线 1 和 2 在不可逆性上确实并列:两者都不会公开公司销售的任何东西,因此最坏的情况是仓库被弃用,而不是社区会为之定价的路线逆转。它们在其他所有维度上都不同,因此仅凭这一并列无法决定取舍。

这个排序会压低此处价值最高的路线 3:它工作量最大,而且是唯一真正不可逆的路线,因此每当由比率决定时都会落败。即便如此,在以下情况下仍应优先考虑它:

  • 买方根本不会采用封闭核心(例如,销售给工程师的开发者工具)
  • 竞争对手已经推出了开放的等效产品
  • 明确的动机是扩大分发,而核心正是必须被采用的部分

只有按买方分层的方案是已发布的模式(GitLab 的模式);另外两条路线以及上述排序都是本技能自身的默认方案,会随公司和执行者的不同而变化。根据你掌握的信息重新排序:

  • 已有的平台团队会将路线 1 的工作量估得接近于零
  • 如果公司唯一的开放仓库已经被弃用,就应将路线 2 的工作量估得高于文中所述
  • 内部开源法律顾问会降低路线 3 的合规成本 为每条保留的边界说明它能带来什么、哪些价值会被它捕获、每年的成本、它接受的风险,以及它服务的动机。然后,用最有力的反对理由来检验这条边界是否站得住:Adam Jacob 在打造 Chef 社区的十三年历程中提出的观点(OSCON 2019)——价值在于产品的整体,而非某个专有的小部分。

问问封闭部分捕获了哪些整体产品无法捕获的价值;无法回答这个问题的边界,还没准备好拿出来讨论。说明你的建议和理由,并让用户先做选择,再详细说明。

第 5 步 - 让每项资产逐一通过五道关卡

按顺序逐项以书面形式应用这些关卡。方法、评分方式和示例条目见:references/boundary-tests.md。

  1. 不可逆性 - 假设这部分永远无法重新封闭。如果答案因此改变,诚实的结论就是“还不行”。
  2. 差异化能力还是上下文 - 公司是因为这项资产赢得交易,还是只是需要它存在?分别在赋能层和差异化层进行检验。
  3. 价值捕获 - 说清楚是什么仍能阻止有能力的竞争对手转售它:托管和运维、数据、网络效应、商标、支持、付费层。“许可证”不是答案;它既无法阻止遵守许可条款的竞争对手,也不能替代商标。
  4. 贡献可行性 - 外部人士会贡献吗?检验的是_可参与性_,而不只是透明度:West 和 O'Mahony 发现,有赞助的项目更愿意让工作内容公开,而不太愿意让外部人士参与;这通常正是“我们开源了,但没人来”的解释。
  5. 所有权 - 要么有明确的维护者、发布节奏和响应问题的承诺,要么这项资产就不发布。

这些是关卡,而非排序选项:它们位于第 4 步的排序流程之外,任何比率都无法凌驾于它们之上。未通过第 1、3 或 5 关的资产应继续封闭,无论其他关卡看起来多么有利。未通过第 2 或 4 关,通常意味着之后再开放,或只开放其中较小的部分。

第 6 步 - 以竞争情境检验边界

写出对抗性情境:

  • 指出具体的竞争对手或平台
  • 描述对方会将哪些内容作为托管服务来运行
  • 说明公司仍掌握什么

如果公司什么都没保留,这条边界就是错的:移动资产,而不是更换许可证。

仅源代码可用和延迟开源类工具(BUSL、FSL 等)只能应对这一种风险,代价是采购白名单、发行版打包和贡献者。只有当情境具体明确时才提出这些方案,并称其为“仅源代码可用”,绝不要称为“开源”;将工具的选择交给 samber/developer-relations-skills@oss-license-strategy。

步骤 7 - 明确决策者和承诺

这项策略的成本会集中在未来某个决定改变边界的时刻。现在就从两方面约束这个时刻:决策权明确_谁_能改变边界,公开承诺则提高改变边界的_代价_。大多数策略两者都忽略;这两项都要落实。

决策权边界。 将“我们应该开放这个吗?”——一项业务背景判断——与“开放它是否合规?”——一项专业审查——区分开来。

Google 将前者交由发布发起人的经理决定,理由是其开源办公室不了解业务背景,同时将许可、专利和隐私审查设为并行审批环节。GitLab 则通过一套明确的矩阵处理重大的分层决策,其中由 CEO 决定。把这里的每个角色都写清楚,即便两个角色由同一个人担任也要写明。

不可撤回的承诺。 公开说明公司承诺永远不会关闭什么。GitLab 公布了十一项此类承诺——包括开源功能绝不会转入付费层级——并且运营专有层级已有十年,持续遭遇的反弹相对较少。

Docker 是相反的案例:2017 年将 docker/docker 更名为 moby/moby,既没有更改许可证,也没有撤回任何代码,却仍然引发了强烈反弹——这充分表明,社区会单独衡量治理上的意外变化所带来的代价。机制和完整案例表:references/company-type-and-authority.md。

步骤 8 - 核算运营前提

只列出资产、不说明配套机制的策略,会导致仓库无人维护。签字确认前,明确每项职能由谁负责,即便此人只投入 20% 的时间也要写清楚:对外发布代码的审查、内部引入许可证的政策、优先贡献上游的规则、贡献政策、持续性预算。职能、政策和成本项:references/operating-model.md。

优先贡献上游的重要性超出其表面规模:私有补丁每次升级都要重新付出维护成本,而上游补丁由项目维护。忽略这一点,为策略提供正当性的维护动机就永远无法实现。

步骤 9 - 撰写简报并逐节验证

产出一份高管可以据此采取行动的文档:

# Open source strategy - <company>

## What we sell - the value-capture surface, in one paragraph

## Motive - the primary motive, and the evidence it passes its own test

## Open - assets, each with its gate results and its owner

## Closed - assets, each with the gate it failed

## Not yet - assets deferred, with the condition that would change the verdict

## Competitive case - the adversarial scenario and what we still hold

## Decision rights - who decides, who reviews, who can veto

## Commitments - what we promise never to close, published

## Operating model - owners, policies, annual cost

## Measurement - the declared objective per asset, and the re-evaluation trigger

每次只呈现一节,达成一致后再写下一节:错误的动机会传导到下方每一行,在第二个标题处发现它,远比到第十个标题处才发现成本低得多。references/boundary-tests.md 中有一份完整简报,展示了相同行的薄弱版本和有力版本。

调用示例

  • “我们是一家 A 轮融资的可观测性初创公司。应该开源我们的 Agent SDK 吗?”→ 访谈,依据线格式和查询引擎盘点 SDK;预期结论是开放接口;如果买家是不会采用封闭核心的工程师,则将按买家分层作为备选方案。
  • “为我们的开放核心划定边界——哪些功能放入付费层级?”→ 步骤 3,然后步骤 4-5;交付资产表和边界形态,而不是功能列表。
  • “一家超大规模云服务商刚推出了我们项目的托管版本。”→ 步骤 6,然后步骤 7;通常是划定边界时没有设置价值获取机制,而许可证无法事后补上。
  • “我们最大的客户要求在续约前开源这个连接器。”→ 步骤 2 中的需求拉动动机,然后完整通过门槛评估;客户要求是触发因素,而非结论。
  • “谁应该批准开源我们的内部部署工具?”→ 仅需步骤 7。

预期交付的简报应包括:带结论的资产、明确的动机、明确的决策者、公开承诺、年度成本和重新评估触发条件。不是许可证建议,也不是发布计划。

B2B 和 B2C

界线取决于买方,因此应明确说明适用哪种情况,而不是含糊带过。

  • B2B。 几乎所有能实现商业化的开源项目都属于这一类。采购、法律审查和许可证白名单会让 OSI 批准的许可证成为销售资产,让仅提供源代码的许可证成为阻碍;可审计性、安全联系人的设置和稳定的版本管理都是采购标准。价值通常通过托管、支持和企业级功能来实现,而购买这些服务的角色与用户并不相同。
  • B2C。 消费者公司也会开源,但几乎从不开源面向消费者的产品——护城河在于数据、网络效应和品牌,这些都无法由代码承载。现实的动机是招聘人才、建立信任,以及分摊现有基础设施的成本;评估时应看招聘和声誉信号,绝不要看已开源组件的采用情况。

衡量方式与通过门槛

先面对一个令人不安的事实:目前没有广泛采用的框架可用于判断某项具体开源决策是否成功——对相关文献的审查也没有发现这样的框架。现有衡量方式针对的是项目健康状况或社区活动,而 TODO Group 自己的指南也警告说,企业收集的是现成可得的数据,而非能回答问题的数据。

本技能建议的补救方法(而非有据可查的实践)是:在决策时为每项资产声明成功目标,并将其写在结论旁的简报中——事后补上目标,总会得出一个美化决策的数字。根据动机来衡量(见 references/strategic-motives.md 中的信号),并在每个规划周期重新评估,因为如今能带来差异化的成果,两年后可能就成了普通商品。

目标用于两年后评判决策;下面的门槛则用于今天评判简报。按此标准审查简报,并持续迭代直至通过:

  • 每项候选资产都恰好出现一次,归入 Open、Closed 或 Not yet。
  • 明确指出一个主要动机,并提供能通过该动机自身检验的证据。
  • 每项开放资产都有明确的负责人、发布节奏和问题响应承诺。
  • 价值获取方案必须是具体机制,而非许可证;并且要写明具体竞争对手及其对抗性情境。
  • 明确指定负责决策的角色,并由另一角色单独审查合规性;至少声明一项公司承诺:将予以公开发布,且不会撤回。
  • 写明年度成本,并确保其在已获批准的预算范围内。
  • 设定重新评估的触发条件:下一个规划周期,以及会迫使团队提前重新审查的事件(竞争对手推出托管服务、收购、融资、分支或维护者离职)。

有来源支持的内容与自行设定的内容。 references/published-findings.md 引用了本技能背后所有已发表的论断,并说明了这些论断_不能_证明什么,同时列出了本技能自行设定的基准:

  • 上述门槛
  • 各关卡的顺序和否决权
  • 访谈的时间范围
  • 第 4 步的候选项及其排序

将第二组内容作为默认设置,并在公司的实际情况有需要时进行调整。

明确报告检查结果。简报因缺少所有权信息而未通过,不是因为简报缺乏严谨性,而是因为其中的代码仓库太多。

常见失误模式

  • 开放洗白。 只读镜像或仅公开源代码的许可证,却称之为开源。原本想吸引的受众会第一个发现问题。
  • 隐藏界线,或挪动界线。 拒绝公开开放核心的界线所在,是信誉上的失败;而将已开放的功能移入付费层,则会损害声誉——在界线之上添加新功能则不会。
  • 治理意外。 将单方面变更宣布为既成决定:Docker 没有更改许可证,也没有撤回任何代码,却仍付出了全部代价。
  • 发布后不管,以及把透明误当作开放。 发布工具却无人维护,传递的信息恰好与原本想表达的人才优势相反;有可见活动却没有参与途径也是如此,而这正是门槛 4 所检验的差距。
  • 开放了错误的互补要素,或指望许可证条款替产品、商标或运营优势发挥作用。
  • 把决策视为一个问题,却没有重新评估的触发条件——对十项资产只给出一个结论,尽管 SDK、规范和核心有三种不同的答案,而且没人注意到这一动机两年前就不再适用。
  • 忽视供给侧逆转。 一名前 Chef 员工因 2019 年的合同纠纷,移除了自己维护的组件,导致该公司部分商业业务下线。没有任何边界框架能涵盖这种情况;应将其列为剩余风险,而不是假装已经处理。

参考资料

本系列中相关的技能包括上文范围检查中列出的六项,每项都从本技能交接之处继续。如果最终需要决定的是要开放哪些 API、SDK 或集成界面,而不是要发布哪些源代码,也请参阅 samber/developer-platform-skills。

评论

支持 Markdown