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 按里程碑分列。
贡献流程
- Bug 报告:Issues +
mortarlabel - Feature 请求 / 讨论:Discussions +
mortar频道 - RFC:Discussions
mortar-rfc频道 - 安全:security@appunvs.com
- 行为不当:conduct@appunvs.com
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 schema | Mortar 社区 |
| 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。
行为准则
违规走 conduct@appunvs.com(独立邮箱,不进核心团队 issue 渠道)。
License + Trademark Policy
- 代码 + 文档:Apache 2.0
- “Mortar” 名字 + logo:不在 Apache 2.0 范围(按 § 6 商标条款);只允许在描述本项目时使用,禁用于 fork 后的衍生品 / 商业服务命名
- 商标使用申请:trademark@appunvs.com(远期需要)