Slint Royalty-free 2.0 授权协议全解读:在闭源桌面、移动与 Web 应用中免费使用 Slint 的合规指南
Slint Royalty-free 2.0 授权协议全解读在闭源桌面、移动与 Web 应用中免费使用 Slint 的合规指南【免费下载链接】slintSlint is an open-source declarative GUI toolkit to build native user interfaces for Rust, C, JavaScript, or Python apps.项目地址: https://gitcode.com/GitHub_Trending/sl/slintSlint开源声明式 GUI 工具包支持 Rust、C、JavaScript 与 Python 绑定采用三重授权模式发布其中Royalty-free 桌面、移动与 Web 应用许可证LicenseRef-Slint-Royalty-free-2.0面向希望保持产品闭源、又不想受 copyleft 约束的开发者允许在桌面、移动和 Web 三类应用中免费使用。本文以 internal/interpreter/LICENSES/LicenseRef-Slint-Royalty-free-2.0.md 为骨架结合仓库内的 LICENSE.md、FAQ.md 与 AboutSlint 组件源码逐条拆解授权范围、署名义务、限制条款与边界判定帮助你判断我的产品能否用 Royalty-free 授权、如何做到合规署名。一、Slint 的三重授权模型Royalty-free 处于什么位置在进入协议正文之前先明确 Slint 整体授权框架。依据仓库根目录的 LICENSE.mdSlint 框架本体运行时库与语言工具链同时提供三份许可证使用者可任选其一许可证适用场景是否收费嵌入式系统Royalty-free 2.0闭源专有桌面、移动、Web 应用免费不允许GNU GPLv3开源软件GPL 兼容条款免费允许商业许可Slint Software 3.0专有应用含嵌入式付费允许三条选择路径的实践含义见 LICENSE.md做开源应用任何平台都可用 GPLv3 免费使用 Slint你自己的源码文件可以继续保留 MIT、Apache-2.0 等宽松许可证头MIT 与 GPLv3 兼容。想保持闭源专有桌面、移动、Web 应用可选 Royalty-free免费但必须展示 Slint 署名详见下文或商业许可一旦涉及嵌入式系统无论是否披露署名都必须使用商业许可。需要强调这里说的三重授权仅针对Slint 框架本身。仓库中的文档与示例代码采用 MIT 许可证见 LICENSE.md可自由复用于任何项目包括闭源项目部分第三方素材与代码则保留各自的许可证。二、授权范围Grant of RightsRoyalty-free 授予你哪些权利协议第 1 条给出了授权核心SixtyFPS 在此授予你一项全球范围内、免版税royalty-free、非独占的许可允许你使用、复制、公开提供、修改、展示、表演、分发该软件前提是作为桌面、移动或 Web 应用的一部分。关键权利点拆解全球、非独占许可不限地域也不妨碍授权方将同样的权利授予其他开发者免版税即免费这是该协议与商业许可最本质的区别——商业许可需要购买席位seats与嵌入式系统版税Royalties而本协议按署名义务换取免费使用权利清单完整使用、复制、公开提供make available、修改、展示、执行、分发七类行为全部覆盖其中修改意味着你可以改动 Slint 源码后随应用分发修改后的分发策略见下文 FAQ 部分。三、三类Application的精确定义你的产品属于哪一类协议明确限定该许可仅适用于桌面、移动、Web 应用并在正文中给出了严格的术语定义桌面应用Desktop Application设计运行于通用计算机PC 或笔记本上的程序典型安装并执行于该计算机本地操作系统。移动应用Mobile Application设计运行于通用移动计算机手机或平板上的程序典型安装并执行于该设备本地操作系统。Web 应用Web Application设计运行于 Web 浏览器所提供的沙箱环境中的程序。这三类定义直接决定授权适用范围。判断标准是运行在用户自己的通用计算设备上作为众多应用之一安装使用——这正是 FAQ.md 中对边界场景的补充说明它不属于嵌入式系统从而落入 Royalty-free 免费覆盖范围。四、合规义务两种可选的署名方式协议第 2 条协议第 2 条规定当你将 Slint 作为应用的一部分分发无论修改与否必须从以下两种方式中二选一完成署名Attribution。方式 (a)在应用内展示 AboutSlint 组件在应用的关于About界面或对话框中展示AboutSlint组件且该界面/对话框必须能从应用的顶级菜单访问到若应用没有这样的界面或对话框则在应用的**启动画面Splash Screen**中展示该组件。AboutSlint并非虚构概念它是仓库中真实存在的标准组件源码位于 internal/compiler/widgets/common/about-slint.slint并被 Fluent、Material、Cupertino、Qt、Cosmic 等各风格的标准控件库所引用。其实现要点如下export component AboutSlint { preferred-height: 100%; preferred-width: 100%; // ... i-layout : VerticalLayout { padding: 12px; spacing: 8px; alignment: start; Image { source: Palette.color-scheme ColorScheme.dark ? image-url(MadeWithSlint-logo-dark.svg) : image-url(MadeWithSlint-logo-light.svg); preferred-width: 256px; min-height: 48px; accessible-label: #MadeWithSlint; } Text { text: Version 1.18.0\nhttps://slint.dev/; font-size: 10px; horizontal-alignment: center; } } TouchArea { clicked { Platform.open-url(https://slint.dev); } } }从源码可以观察到该组件的三个行为特征自适应深浅色主题根据Palette.color-scheme自动切换深色/浅色版 MadeWithSlint 徽标图展示版本与官网信息内置显示 Slint 版本号当前仓库代码中为 1.18.0与项目官网地址点击跳转整个组件被TouchArea包裹点击后调用Platform.open-url打开项目官网。在真实应用中的用法标准控件库导出AboutSlint后可直接在.slint文件中通过import { AboutSlint } from std-widgets.slint引入。仓库示例 demos/home-automation/ui/components/mainView/sidebar.slint 展示了实际接入方式import { AboutSlint } from std-widgets.slint; // ... AboutSlint { width: root.width * 0.8; x: root.width * 0.1; }此外demos/weather-demo/ui/about-box.slint 也是将AboutSlint嵌入关于面板的参考实现。在 Rust、C、JavaScript、Python 四种绑定中均可在About界面中放置该标准组件以满足方式 (a) 的要求。方式 (b)在公开网页上展示 Slint 署名徽章在一个公开网页上展示 Slint 署名徽章attribution badge该页面最好是你的应用二进制文件可供下载的页面且徽章位置要便于该页面的任何访客轻松发现。仓库 logo/ 目录中提供了多种规格的 MadeWithSlint 徽章资源例如该图片正是协议所要求的 attribution badge 的仓库内副本同目录下还提供深色/浅色、全尺寸/精简版等变体如 logo/MadeWithSlint-logo-dark.png、logo/MadeWithSlint-logo-light.svg可依据你的下载页面配色选择合适的版本。选择建议桌面/移动应用通常天然有关于菜单方式 (a) 集成成本低若你的产品没有图形界面如纯 Web 服务分发或不便内嵌组件则选择方式 (b) 在下载页放置徽章。五、四条红线协议第 3 条的限制条款即便满足署名义务以下四类行为依然被明确禁止这是合规判断的核心不得单独分发 Slint协议不允许将软件单独、未与应用集成地公开分发或提供。若你有此需求例如分发 SDK 或开发库本身应改用 GNU GPLv3 条款。不得用于嵌入式系统协议第 3 条明确不允许在嵌入式系统Embedded System中使用本软件。嵌入式系统的定义为设计用于在更大的机械或电气系统内执行特定任务的计算机系统。典型例子包括见 FAQ.md家电显示屏的控制器、销售终端POS 机、汽车仪表盘。这类场景需要 GPLv3 或商业许可。不得分发暴露 Slint API 的应用无论部分还是全部暴露 Slint 的 API 都不允许——即你不能把 Slint 当作可再分发的库/框架二次封装给第三方编程使用。不得删除或篡改许可声明软件源码形式中包含的许可声明含版权声明、免责声明、责任限制不得移除或改动。六、保证与责任条款协议第 4 条第三方权利冲突的有限责任只有 SixtyFPS 在已知晓存在第三方权利冲突却未告知你的情况下才对这种冲突承担责任。按现状as-is提供除非适用法律另有强制要求或另有书面约定软件按as is提供不附带任何明示或默示的保证或条件包括但不限于适销性或特定用途适用性的保证。责任范围限制除非法律要求SixtyFPS 对因使用软件而产生的任何直接、间接、偶然或后果性损害不承担责任。这一条与 GPLv3、商业许可中的免责精神一致但措辞更简洁——没有单独设置审计权audit rights、终止条款等商业许可才有的机制对比可参考 LICENSES/LicenseRef-Slint-Software-3.0.md体现了其轻量、免费、以署名换使用权的定位。七、边界场景与 FAQ实践中如何判定FAQ.md 针对 Royalty-free 授权补充了大量实操判定这些内容与协议正文互补值得逐一关注Q1我自己的代码能用 MIT 等宽松许可证吗可以。FAQ.md 明确无论使用哪份 Slint 许可你自己的源码文件都可以继续使用 MIT 或 Apache-2.0受限制的是你分发出去的整个作品的许可方式——开源整个作品就用 GPLv3想用自有条款就用 Royalty-free 或商业许可。Q2什么算嵌入式系统什么不算不是嵌入式运行在用户自有的通用电脑或手机上、作为众多应用之一安装使用的场景即协议定义的桌面/移动/Web 应用。是嵌入式家电控制器、POS 终端、汽车仪表盘等在更大机械或电气系统内执行特定任务的计算机系统。Q3我的开源如 MIT应用被他人 fork 后重新分发许可如何延续协议不限制用户如何为自己的应用选择许可证。fork 后的应用若继续使用 Slintfork 者同样可以在 Royalty-free、GPLv3、商业许可三者中任选其一FAQ.md。Q4如果我修改了 Slint 本身修改部分如何分发协议不限制修改的分发方式。例如 Alice 使用本许可开发应用 A 并修改了 Slint她可以选择以任何她自己喜欢的许可证含任一开源许可证发布修改也可以选择不发布FAQ.md。Q5未来 Slint 被收购或所有权变更既有许可会被撤销吗SixtyFPS 在 CONTRIBUTING.md 的开源承诺Open-Source Pledge中承诺继续以符合开源定义Open Source Definition的许可证公开开发 Slint并承诺为开发桌面、移动或 Web 应用且不愿使用 copyleft 组件的开发者提供 royalty-free 许可。八、从仓库识别 Royalty-free 许可SPDX 与 REUSE 实践Slint 仓库遵循 REUSE 规范每个文件的许可证信息要么写在文件头要么记录在根目录 REUSE.toml 中。识别方式如下文件头 SPDX 标识例如 AboutSlint 组件源码 首行即标注SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0表示该文件可任选三者之一使用。REUSE.toml 聚合标注REUSE.toml 中大量目录级聚合规则同样使用LicenseRef-Slint-Royalty-free-2.0标识例如编辑器项目的 fixtures、仓库根目录的通用文件REUSE.toml等。全文字面全文协议全文存放于 internal/interpreter/LICENSES/LicenseRef-Slint-Royalty-free-2.0.md仓库根目录的 LICENSES/ 下还并列存放着 GPLv3、MIT、商业许可等全部涉及许可证的全文。对于集成 Slint 的开发者而言这意味着当你看到某个文件带有LicenseRef-Slint-Royalty-free-2.0标识时即可按本文所述条款免费使用若你的产品最终选择 GPLv3 或商业许可路径则同一文件也在对应许可条款下可用。九、合规自检清单结合协议正文与仓库证据使用 Royalty-free 授权前建议逐项自检场景匹配产品是桌面、移动或 Web 应用且运行在用户自有的通用计算设备上非嵌入式产品不属于在更大机械/电气系统内执行特定任务的嵌入式系统署名就位已在关于界面可由顶级菜单访问放置 AboutSlint 组件或已在公开下载页放置 MadeWithSlint 徽章不单独分发Slint 始终作为你应用的一部分集成而非独立对外分发不暴露 API没有把 Slint 的 API部分或全部作为公开接口暴露给终端用户编程声明完整未删除或篡改 Slint 源码中的任何许可与版权声明。以上全部满足即可在零许可费用的前提下将 Slint 集成进闭源的桌面、移动与 Web 应用并对外分发任一条件不满足尤其是涉及嵌入式系统或需要再分发 Slint 本身则应切换到 GPLv3 或 商业许可 路径。【免费下载链接】slintSlint is an open-source declarative GUI toolkit to build native user interfaces for Rust, C, JavaScript, or Python apps.项目地址: https://gitcode.com/GitHub_Trending/sl/slint创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考