Files
TalkEdit/FFmpeg_COMPLIANCE.md

53 lines
3.5 KiB
Markdown
Raw Normal View History

2026-03-25 01:22:30 -06:00
# FFmpeg Compliance Checklist
Purpose: quick, practical checklist to ensure your TalkEdit distribution complies with FFmpeg licensing and packaging requirements.
1) Choose the FFmpeg build strategy
- Prefer an LGPL-only build (no GPL-only encoders) for minimal obligations.
- If you require GPL encoders (x264/x265/fdk-aac), document the decision and prepare to comply with GPL obligations.
2) Linking vs external binary
- Prefer spawning an external `ffmpeg` binary from Rust (invoke process) rather than statically linking FFmpeg into your app.
- If you link or bundle as a library, treat it as a third-party component and follow license terms strictly.
3) Bundling binary in installers
- If bundling `ffmpeg` binaries in installers, include the appropriate license files (COPYING.LGPL, COPYING.GPL) in the installer and app About/Legal.
- Include a plain-language notice in the installer/readme that explains which codecs/encoders are present and any implications.
4) Source & build-info disclosure
- For GPL components, you must provide access to the corresponding source or provide a written offer. Record the exact FFmpeg commit/configure flags used.
- Add a `third_party/ffmpeg/BUILD_INFO.txt` in the repo (or in release artifacts) containing:
- FFmpeg git commit or version
- configure flags used
- date and builder identity (automated CI username)
- link to the exact source tarball or repo snapshot
5) Make GPL components opt-in
- Default distribution: ship LGPL-only binary or no binary and invoke system `ffmpeg` when available.
- Offer an optional "codec pack" download or advanced installer that includes GPL encoders; make users explicitly accept terms before download.
6) Patent/licensing notice for codecs
- Add a short note in the README/installer explaining that certain codecs (H.264/AAC) may be patent-encumbered and that distributors may require separate licensing.
7) Platform-specific recommendations
- Linux: Prefer calling system FFmpeg (packaged by distro) or instruct users to install via package manager. If bundling, consider AppImage guidance.
- macOS: Prefer Homebrew/optional download; if bundling, include license files and sign/ notarize appropriately.
- Windows: If shipping `ffmpeg.exe`, include license files and a link to the source/build info; include checksums for shipped binaries.
8) Build automation & compliance artifacts
- Add a CI step that builds or fetches the FFmpeg binary, captures `ffmpeg -buildconf`, and writes `BUILD_INFO.txt` into the release artifacts.
- Produce a LICENSES folder in each installer containing FFmpeg license text and any third-party license texts used by your chosen build.
9) User-visible legal UI
- Add an About > Legal pane listing third-party components and linked license files.
- If downloading binaries on first run, show an explicit notice with a link to license and source information and require an OK from the user.
10) Pre-release legal checklist
- Verify whether chosen build enables GPL libraries; if yes, prepare source or written offer before publishing.
- Ensure installer contains license files and links to source/build-info.
- Add a short FAQ entry about codec patents and user options.
Notes & Next Steps
- This checklist is practical guidance, not legal advice. For final release compliance, consult legal counsel experienced in open-source licensing.
- I can add a small CI script snippet that records `ffmpeg -buildconf` and uploads `BUILD_INFO.txt` to release assets — tell me which CI you use and I'll draft it.