Mortar — open governance

Mortar 是 Apache 2.0 开源 的中国市场 BaaS。本文档说明治理模式、贡献流程、决策权重。

Mortar 跟 Keel 是同一个 monorepo 内两个独立产品没有相互依赖——Mortar 可以单卖给任何 BaaS 用户,Keel 可以单卖给任何 RN 开发者。两个产品各自独立 governance;本文档是 Mortar 的,/keel/docs/governance.md 是 Keel 的。


License

Apache License 2.0。选 Apache 2.0 而不是 MIT 的理由(同 Keel):

  • 专利保护条款 —— 贡献者授予的专利许可不可撤销,对企业用户友好
  • 明确商标条款 —— “Mortar” 名字 / logo 不在 license 范围(第 6 条)
  • 业界惯例:Kubernetes / TiDB / Apache Cassandra 等做企业级服务的项目都选 Apache 2.0

不接受 CLA。降低社区贡献门槛。


Repository

Mortar 在 appunvs/appunvs monorepo 的 mortar/ 子目录:

mortar/
├── internal/{primitive,feature}/   ← Go server 实装
├── sdk/{typescript,dart,swift,kotlin}/  ← 4 语言 client SDK
├── docs/                            ← 本文档 + architecture / pricing / etc.
└── LICENSE                          ← Apache 2.0

为什么不拆独立 repo:

  • 跟 Keel 同 monorepo 方便跨产品 PR(虽然两个产品没强依赖)
  • monorepo 公开后 Mortar-only contributor 可以只关心 mortar/ 子目录
  • 用户量起来后再考虑拆分

决策机制

Tier 1:核心团队决策

不开 RFC,直接 PR 合并:

  • 编译错误 / bug 修复
  • 文档 typo
  • 内部重构(不改公开 API)
  • CI / 工程化改进

Tier 2:RFC + 公开讨论(≥ 7 天)

走 GitHub Discussions mortar-rfc 频道:

  • 公开 wire schema 改动(OpenAPI / proto)
  • 新增 primitive 或 feature
  • 4 语言 SDK 的 breaking 改动
  • License / 治理变更
  • 路线图重大调整

Tier 3:核心团队保留权

  • Mortar Cloud 商业定价(pricing.md
  • 商标 / Brand identity
  • 法律合规(数据出境 / ICP 备案)
  • 跨产品边界(如何跟 Keel / appunvs 协作)

路线图透明度

roadmap.md 公开。变更走 Tier 2 RFC。

GitHub Project tracker 按里程碑分列。


贡献流程


7 + 5 + 3 边界守恒

Mortar 的核心架构是 7 个 primitive + 5 core feature + 3 extension feature这个边界是产品识别度的关键,不能轻易改。

加新 primitive 或 feature 必须证明:

  • 真实用户需求(≥ 30% 客户问过)
  • 跟现有项不重叠
  • backend 实现可行(阿里云 / 自建)
  • 维护承诺
  • 走 Tier 2 RFC,至少 7 天讨论

规划中预计加:

  • primitive/payment(支付通道,给微信支付 / 支付宝服务端验签用)

砍掉现有 primitive / feature 的标准更高(Tier 2 RFC + 14 天 + 3 个 maintainer 同意),因为 break 用户多。


Maintainer 列表

当前核心团队(按字母序):

  • TBD

进入 maintainer 路径:

  • 持续高质量贡献 ≥ 3 个月
  • 至少 5 个被接受的 PR(含至少 1 个 primitive / feature 改动)
  • 现有 maintainer ≥ 50% 同意

跟 Keel / appunvs 的边界

范畴谁的决定权
Mortar primitive / feature / SDK / wire schemaMortar 社区
Mortar Cloud 运营(托管版)Mortar 团队
Mortar 自建 / 私有部署用户自己
Keel 内部Keel 团队(/keel/docs/governance.md
appunvs 内部appunvs 团队
Keel 用 Mortar 怎么集成不存在 special integration——Keel 用户走标准 Mortar SDK 接 Mortar,跟任何其他 BaaS 客户一样

重要:Mortar 不反向引用 Keel 或 appunvs。Mortar 是独立 BaaS 产品,没有”为 Keel 优化”的代码路径。Keel 用户用 Mortar 跟 Expo 用户用 Mortar 走同一套 SDK,无差别。


商业模式与开源的关系

Mortar 核心代码完全开源:所有 primitive 实现、所有 feature、所有 SDK、wire schema 都是 Apache 2.0。

**Mortar Cloud(托管版)**包装在开源核心之上,闭源部分包括:

  • 多租户编排 / billing / quota 系统
  • 阿里云特定的 backend 优化(生产级 RDS / OSS / Tair 配置)
  • 客户支持工单系统

自建版用同样的开源核心代码,不阉割功能——只是没有 Mortar Cloud 的运维 / SLA / 多租户托管。

跟 GitLab / Sentry / Supabase 同样的”open core + managed cloud”模式。详见 deployment.md


行为准则

Contributor Covenant 2.1

违规走 conduct@appunvs.com(独立邮箱,不进核心团队 issue 渠道)。


License + Trademark Policy

  • 代码 + 文档:Apache 2.0
  • “Mortar” 名字 + logo:不在 Apache 2.0 范围(按 § 6 商标条款);只允许在描述本项目时使用,禁用于 fork 后的衍生品 / 商业服务命名
  • 商标使用申请:trademark@appunvs.com(远期需要)