收录政策
FlatPark 收录提供公开、稳定发布 URL 且可打包为 extra-data 的应用。以下规则适用于应用的收录和持续上架。
我们收录的应用
任何在稳定公开 URL 上提供官方预构建 Linux 下载的应用都可以收录:安装程序、.deb、.rpm、tarball、zip 或 AppImage。软件包新增或更新时,CI 会下载一次文件,记录它的校验和与大小;FlatPark 对结果签名。用户安装时,Flatpak 再从厂商自己的 URL 下载这个文件。FlatPark 自己的存储里只有包在应用外面的一小部分,从不存放应用本身。AppImage 会被离线解包(直接读取其末尾附带的文件系统,绝不执行)。
FlatPark 不从源码构建应用:有官方发布就没有这个必要,而源码构建会让每次更新都占用 CI 时间和存储空间。我们默认的前提是:用户安装一个应用,是因为信任它的开发者。如果某个有需求的应用没有官方 Linux 版本,可以由公开的 flatpark/<app>-release 仓库发布一个:严格按上游的构建方式、不做修改、符合上游的许可;软件包把这个发布当作 extra-data,和其他下载一样使用。
**开源应用按 upstream 发布的原样运行。**不向应用进程注入任何代码——没有 LD_PRELOAD shim,也不修改或替换任何文件。wrapper 可以设置环境变量或启动参数,也可以补充缺失的库;但如果一个开源应用不注入代码就无法在 sandbox 中工作,应当在 upstream 修复,修复之前不予收录。bug 反馈给上游。闭源应用在别无他法时,可以为了让某个功能工作而做适配;适配要经过审核,应用页面会显示出来,应用说明里会直接写明是什么、为什么。
Toolkit 和许可证不会成为收录门槛。欢迎 Electron 和 Tauri 应用——registry 中已经提供这两类应用——也欢迎闭源应用。只要 upstream 发布 .deb、.rpm、tarball、zip 或官方安装程序,就可以在这里打包。
要求
- 官方构建必须有稳定、公开的发布 URL(不得要求登录)。
- 必须有 AppStream metainfo 文件(
<id>.metainfo.xml),其中包含 id、名称、摘要、许可证以及至少一个描述段落。 - id 必须符合 reverse-DNS 格式,并与 registry 目录名称一致。
- 使用当前 runtime 主版本,与应用目录中的其他应用保持一致。不接受为了规避构建故障而固定旧主版本。
- 使用仍能正常工作的最严格
finish-args。可选功能默认不授予权限:不要添加对应权限,而是在应用描述中记录用于启用权限的flatpak override命令,让每位用户自行决定。应用正常运行需要的权限保留在finish-args中,并在 PR 里说明理由。如果应用的主要功能需要,或者不给就要用户做大量 override,宽泛的权限(home、在主机上运行命令)可以在审核后默认授予。 - 提交 PR 前已经测试:提交者已经构建、安装、启动应用并用过它的主要功能,PR 里如实写明测了什么、没测什么。
- 明确说明应用的许可证。
Vibe-coded 应用
欢迎使用 AI 辅助开发(“vibe coding”)的应用,不做任何特殊对待,无论是加分还是减分。和所有应用一样,看的是它做什么、做得好不好、有没有人需要(有人提需求、报 bug、在用),以及是否在正常开发和发布。star 多少、项目做了多久都无所谓。
在这件事上我们旗帜鲜明。“AI slop”这个标签如今在网上泛滥成灾——Flathub 的 PR 队列里、Reddit 的帖子里,到处都是——它被随手甩到能正常工作的软件上,背后却没有任何审核:没有人构建过它,没有人运行过它,也没有人读过一行 diff。这种条件反射不是质量把关,而是最偷懒的一种“审核”,它对软件本身毫无说明。如果真有什么配得上“slop”这个词,那就是这种随手贴标签的行为本身。
FlatPark 的回应是把标签跳过的工作补上:每项提交都会被实际构建、安装、启动,并按上文公开的标准审核。评判软件包本身,而不是写出它的工具。
我们不仅不排斥这些工具,还公开地使用它们。欢迎——甚至鼓励——用 AI agent 做严格的测试、完善的文档和自动化的维护流程;FlatPark 自己的审核与更新流水线就有 AI 参与。重要的是结果达到了什么标准,而不是键盘前坐的是谁。
审核
每项提交都会按照公开的审核 runbook进行审核(有 AI 辅助)。信任问题的关键在于你运行的内容来自哪里,而不是许可证:
- FlatPark 重新打包未经修改的 upstream 官方构建:你运行的内容就是厂商自己的产物。向应用进程注入代码:开源应用一律拒绝,闭源应用要经过审核并公开说明。
- 官方构建必须来自真正的 upstream/厂商发布渠道。托管在提交者个人账户或 mirror 上的 binary,以及打包过程中重新构建或打过 patch 的 binary,都会被拒绝。
- 每项下载都按
sha256和大小固定,构建过程无法悄悄替换内容。 - 会触及沙箱之外的权限(在主机上运行命令、整个主机文件系统)必须在 PR 里声明并说明理由,由维护者审核。只有应用功能确实需要时才授予,应用页面会用警告标出。
- 审核会排查所发布内容里明显的恶意行为:驻留、挖矿、反弹 shell、下载并运行未固定的代码。不审计应用的源码。
- 允许 non-FOSS 应用——是否开源不是审核标准。我们会根据用途而非许可证拒绝盗版、恶意软件、冒充商标或任何无法合法分发的内容。
下架
应用在以下情况离开 FlatPark:
- **开发者要求。**开发者的意愿是最终决定:我们会移除应用,不做任何争辩;
- **上游已经停止:**停止开发、删除了仓库,或者官方下载已经消失;
- 某个版本包含恶意内容或会破坏用户的系统:立即移除(安全);
- 主要功能在沙箱里无法工作且修不了。少了部分功能但仍可用的应用可以保留,在应用说明里写明哪些不能用(比如不支持 TUN 模式的代理客户端)。
应用绝不会因为它是怎么写出来的、用了什么 toolkit、或者网上有人叫它 slop 而被下架。开发者后来自己上了 Flathub,我们也不会因此下架,除非开发者提出。
下架时,开一个 PR 从 registry 中删除应用目录,写明原因并附上请求或 issue 的链接。合并后应用就从目录中消失,每周的 delist-prune 任务会把它的 ref 从仓库中移除。已安装的副本仍可继续使用,直至用户将其卸载。