状态:Proposed 决策:未决;本文不是法律意见 发布门:仓库暂不设 LICENSE,
cargo-deny check licenses刻意拒绝 Slint,ADR 通过前不得分发
- Floatile 宿主静态链接 Slint,并使用 Slint/winit 渲染内建 UI 与经过验证的 Floatile UI IR。
- P0/MVP 插件包包含
widget.ftui + plugin.wasm,不包含.slint源码,也不直接链接 Slint crate。 - Rust/TypeScript SDK 公开的是 Floatile 组件、State/Event/WIT 契约;Slint 不是插件作者 API。
- 这降低了“第三方插件源码是否受 Slint 许可传播”的不确定性,但不能自动解决宿主二进制、SDK、 UI IR renderer 或插件生态的许可问题;仍需 Slint 与法务书面确认。
许可影响现在分成三件事:
- Floatile 宿主如何获得并分发 Slint;
- Floatile UI IR/SDK 是否可以在目标许可下公开、允许闭源/付费插件;
- Slint 商业/Royalty-Free 条款是否允许宿主把 Slint 作为第三方插件 UI IR 的通用 renderer。
- 宿主与仓库按 GPLv3 兼容方式分发;全部直接/传递依赖需核对兼容性。
- 插件不携带 Slint 源,也不链接 Slint,较旧
.slint方案减少了直接传播问题;但插件通过 Floatile SDK/WIT/UI IR 与 GPL 宿主交互是否允许闭源/付费分发仍需要法务判断,项目不得自行宣称“插件 一定不受 GPL 影响”。 - 适合完全开源路线;是否支持闭源插件市场是独立法律问题。
- 为宿主取得允许目标分发方式的商业授权,Floatile 仓库/SDK/插件可另行选择许可。
- 必须书面确认授权覆盖:桌面宿主、多个插件实例、把
widget.ftui渲染为 Slint 组件、开发者预览/ CI renderer、软件 renderer 与未来商业插件生态。 - 适合希望保留闭源宿主或商业插件生态的路线;成本与条款需获取 2026 现行报价/合同。
- 仅当项目主体、营收/团队/产品形态与使用方式满足现行条款时可选。
- 核心问题不再是解释第三方
.slint,而是“将 Slint 用作外部widget.ftui的通用宿主 renderer” 是否属于允许场景,以及 SDK/CLI/preview 的分发是否受限。 - 条款未经书面确认前不能把该路线当成默认免费商用方案。
- ADR-0001 使插件契约不含 Slint 名称,理论上可以保留
widget.ftui/SDK/WIT 并替换 renderer。 - 这降低迁移插件生态的成本,但窗口、组件、动画、性能与三平台能力都需重新验证;不能把“可替换” 当成当前许可问题已解决。
- Floatile 宿主把第三方生成的、无 Slint 源码的
widget.ftui映射为 Slint 组件,属于何种授权使用? floatile dev/preview在开发者机器或 CI 中启动同一 renderer,是否需要额外授权或分发条款?- 插件只链接 Floatile SDK/WIT、提交
widget.ftui + wasm时,插件作者能否独立选择闭源/商业许可? - Floatile UI schema、组件名、SDK 代码和生成 IR 是否包含受 Slint 许可约束的派生材料?
- GPL、商业和 Royalty-Free 各路线对插件商店、收费插件、企业内部分发和开源贡献的具体影响?
- 允许的软件/硬件平台、收入/团队阈值、再分发、离线使用、版本升级和终止条款是什么?
答案必须保留可审查的书面证据,并形成独立许可 ADR;不得只引用市场页面摘要或口头理解。
- P0 内部开发可以继续统一 UI/Wasmtime/Broker 可行性验证,但不对外发布二进制、SDK 或插件包。
- UI IR 与 WIT 避免 Slint 专有名称/类型,保持 renderer 可替换;这是一项维护策略,不是规避许可。
- 启动 Slint 许可咨询与法务评估,覆盖第 3 节全部问题。
- MVP 首次公开 SDK、
.floatile包、安装器、商店或二进制前必须:- 接受许可 ADR;
- 补仓库/SDK/示例/第三方 notices;
- 让
cargo deny --locked check licenses按决策通过; - 处理 risks.md R12 advisory/第三方资源边界。
- 禁止通过宽泛 license allow、伪造 proprietary 结论、删除 Slint 依赖链或只发布插件而绕开门禁。
- Wasmtime、wasm-tools、wit-bindgen 的具体版本许可在引入/升级时由 cargo-deny 与 notices 核对。
- TypeScript adapter/runtime 尚未选择;ADR 必须包含运行时、stdlib、bundler、npm 包与生成产物许可。
- UI schema/codegen、示例和 SDK 最终采用何种许可必须与插件生态路线一致。
- 每次关键依赖升级检查 license expression、feature、source、传递依赖和三平台产物,不继承旧结论。