首页 / 资讯中心 / 文章详情

如何给FilmCraft贡献代码:xtask质量门禁、分层依赖规则与Clean-Room开发规范完整指南

如何给FilmCraft贡献代码:xtask质量门禁、分层依赖规则与Clean-Room开发规范完整指南 ★ FEATURED ARTICLE
如何给FilmCraft贡献代码xtask质量门禁、分层依赖规则与Clean-Room开发规范完整指南【免费下载链接】filmcraftAn open-source, clean-room reimplementation of Adobe Premiere Pro built in pure Rust.项目地址: https://gitcode.com/gh_mirrors/fi/filmcraftFilmCraft 是一个用纯 Rust 编写的开源非线性视频剪辑软件也是 Adobe Premiere Pro 的净室Clean-Room重新实现。想要给 FilmCraft 贡献代码本文带你快速掌握它的三大核心规则xtask 质量门禁、L0–L6 分层依赖体系与Clean-Room 开发规范让你提交的每个 commit 都能顺利通过cargo xtask ci检查。贡献前必读3 份核心文档在动手之前请先按顺序阅读这三份文件它们共同构成了 FilmCraft 的贡献者契约文档作用AGENTS.md绝对规则永不出崩溃、资产合规、Clean-Room 代码底线CONTRIBUTING.md入门入口指向具体操作规范docs/contributing.md环境搭建、构建运行、质量门禁与提交规范此外docs/architecture.md 和 docs/testing.md 分别解释了分层架构与测试体系含 ffmpeg 校验标准是新贡献者理解代码应该长什么样的最佳材料。环境搭建一次配置终身受用FilmCraft 使用 Rust 工作区管理 35 个 crate环境要求并不复杂安装 Rust stable ≥ 1.95edition 2024egui 0.36 需要并添加rustfmt、clippy组件添加 wasm 目标rustup target add wasm32-unknown-unknown供cargo xtask wasm检查使用可选安装 ffmpeg ffprobe仅作为测试校验器oracle和测试素材生成器未安装时相关测试会自动跳过安装完成后用以下命令验证构建环境cargo run --release -p filmcraft # 桌面应用含演示工程 cargo xtask web --serve 8765 # 浏览器版 Web 应用cargo xtask是 .cargo/config.toml 中定义的别名实际等价于cargo run -p xtask --它来自 xtask/ 目录下的工作区自动化工具。xtask 质量门禁提交前的 6 道必过检查FilmCraft 的 CI 门禁由 xtask/src/main.rs 中的ci()函数定义一次运行覆盖全部检查。每一个 commit 都必须通过以下所有门禁门禁命令检查内容格式化cargo fmt --check遵循 rustfmt.tomlmax_width 160Lintcargo clippy --workspace --all-targets -- -D warnings警告即失败测试cargo test --workspace1600 个测试全绿分层cargo xtask layers依赖只允许向下指资产cargo xtask assets每个资产文件都有许可证与署名wasmcargo xtask wasmL0–L4 全部 crate 可编译到浏览器一条命令全跑完cargo xtask ci其中ci会以--release模式运行 clippy 和测试确保性能关键路径也能通过检查。永不崩溃凌驾于一切之上的规则AGENTS.md 第 0 节的规则排在所有工程规则之前用户信任 FilmCraft 保存数小时的工作一个崩溃就可能丢失全部成果。因此生产代码中禁止unwrap()、expect()、panic!、unreachable!、todo!、unsafe一切用ResultT, E传播错误来自文件、命令参数或 UI 的数字都视为敌意输入每个崩溃修复都必须附带一个修复前会 panic的回归测试清洁的 crate 通过#![deny(clippy::unwrap_used, ...)]强制上述约束clippy.toml 允许测试中使用分层依赖规则L0–L6 架构金字塔FilmCraft 的 40 多个 crate 被组织成严格的分层架构定义于 docs/architecture.mdL6 应用层filmcraft · filmcraft-cli · filmcraft-web L5 平台/UIui-egui · automation · platform L4 引擎engine命令注册表、撤销历史、会话 L3 渲染render · gpu · export · golden L2 编辑edit · codecs · interchange · captions · speech L1 数据frame · media · project · audio-dsp · text L0 基础time · geom · color · bitstream 全部编解码器 h264 · hevc · vp9 · av1 · prores · aac · opus…cargo xtask layers会读取cargo metadata并强制执行五条规则实现见 xtask/src/main.rs每个 crate 必须分配层级——新 crate 忘记加入LAYERS表就直接报错只允许向下依赖——L2 的 crate 不能依赖 L3同层依赖需白名单——media→frame、gpu→render等少数边必须列入SAME_LAYERL0 编解码器保持独立——除time、geom、color、bitstream等基础 crate 外编解码器只能依赖filmcraft-bitstreamL5 以下禁用 UI/OS 依赖——egui、winit、cpal等只允许出现在 L5/L6这个设计的收益是L0–L4 全部 crate 都能编译到wasm32-unknown-unknown由cargo xtask wasm保证所以核心引擎可以原封不动跑在浏览器里同时引擎是无头的CLI、控制通道和 MCP 服务器都能像 UI 一样调用它。Clean-Room 开发规范从公开标准出发写代码Clean-Room净室意味着不阅读、不反编译、不复制任何 Adobe 代码一切实现只依据公开发布的标准文档。AGENTS.md 第 2 节列出了四条红线实现编解码器只看公开标准ITU-T / ISO/IEC、IETF RFC、SMPTE 文档、公开的容器规范并在 crate README 中记录所依据的标准版本永不复制 GPL/LGPL/AGPL 代码FFmpeg、x264、x265、MLT 等一律不碰⚖️ffmpeg 只能作为外部测试校验器用来生成测试素材、对比解码结果永不链接、永不随产品分发依赖只用宽松许可证MIT / Apache-2.0 / BSD / ISC / CC0 等以 H.264 解码器为例crates/h264/ 从 ITU-T 标准文档逐条实现语法再用 ffmpeg 生成的符合性码流做逐帧比特级精确比对校验矩阵见 docs/testing.md这正是净室流程的样板——新增编解码器 crate 时可参考其 README 与 docs/contributing.md 中新增编解码器/容器一节。资产合规每个文件都要有身份证FilmCraft 对非代码资产执行最严格的审计AGENTS.md 第 1 节cargo xtask assets实现见 xtask/src/main.rs会逐个检查仓库中的媒体文件❌ 禁止任何 Adobe 图标、字体、LUT、预设包括手绘重描版✅ 每个资产文件X必须伴随X.attribution旁车文件写明作者、来源、SPDX 许可证 ID✅ 每个资产都要在 ATTRIBUTION.md 中登记一行✅ 许可证未知、含 NC/ND 条款的资产一律不收仓库里现成的例子可以照抄比如 assets/fonts/Inter-Regular.ttf.attribution 记录了 Inter 字体的 OFL-1.1 许可证信息。提交规范与并行开发小贴士一个任务一个 commit标题以任务 ID 开头如M9.9: Matroska/WebM import里程碑编号来自 ROADMAP.md只提交绿色状态所有门禁通过才能 commit多人或多 Agent并行时用 git worktree 隔离工作区并设置独立的CARGO_TARGET_DIR避免构建锁冲突git worktree add ../filmcraft-hevc -b hevc-work export CARGO_TARGET_DIRtarget/agent-hevc注意工作区用crates/*和apps/*通配符包含所有 crate任何一份写坏的Cargo.toml都会拖垮整个构建请始终保持清单文件有效。总结一张图记住贡献全流程读 AGENTS.md → 搭环境 → 写代码分层 净室 不崩溃 → cargo xtask ci 全绿 → 以任务 ID 命名 commitFilmCraft 的规则看似严格但cargo xtask ci把这一切压缩成了一条命令。当你理解了分层只向下、错误用 Result、代码只源于标准、资产必须署名这四句话你的第一个贡献 PR 就已经在路上 。【免费下载链接】filmcraftAn open-source, clean-room reimplementation of Adobe Premiere Pro built in pure Rust.项目地址: https://gitcode.com/gh_mirrors/fi/filmcraft创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站