0.1.0NOVA 0.1.0 for Windows is out. Free download; the installer is GPL-licensed because of its bundled engine.Download

ADR 0003: libmpv distribution and licensing

Accepted: an LGPL engine built from source; MIT OR Apache-2.0 for NOVA.

AcceptedPublished as written in the repository. 0.1.0 ships the GPL engine build with its source; the LGPL build is for later releases.Engineering record · docs/adr/0003-libmpv-distribution-and-licensing.md

  • Status: Accepted, 2026-10-16. NOVA’s own code is licensed MIT OR Apache-2.0. Target: option B, our own LGPL libmpv + FFmpeg. 0.1.0 ships under option A (GPL), see below.
  • Not legal advice. Have counsel review the final distribution configuration.

Decision (2026-10-16)

  • The owner chose option B. NOVA will ship only an engine built from source with mpv -Dgpl=false and FFmpeg without --enable-gpl / --enable-nonfree, with its exact configuration recorded.
  • NOVA’s own source is dual-licensed MIT OR Apache-2.0 (LICENSE-MIT, LICENSE-APACHE; license in Cargo.toml and package.json).
  • The shinchiro GPL build was meant to stay development-only; 0.1.0 is the documented exception below.
  • A public download is enabled only when all of these exist for that build: the LGPL engine build with its configuration and source reference, a check that it contains no GPL or non-free components, third-party notices in the installer, the LGPL source/relinking information, and a clean-machine install test.
  • Status of the LGPL build: not built yet (2026-10-16).

0.1.0: released under option A (2026-10-16)

The owner chose to release 0.1.0 before the LGPL build exists. The 0.1.0 installer bundles the pinned shinchiro build (GPL), so the installer as a whole is distributed under the GPL (v2 or later). To meet that:

  • The repository is public, so NOVA’s complete source for the release is available at tag v0.1.0.
  • The installer carries licenses/ with LICENSE-MIT, LICENSE-APACHE, GPL-2.0.txt, LGPL-2.1.txt, the Archivo OFL and THIRD-PARTY-NOTICES.md.
  • The GitHub release attaches source archives of the exact mpv (492bae0768f5e826991bf9fb222fa303371e8498) and FFmpeg (ee8cbd7dbce9b293905f3088192e4b43ab00c33a) commits and of the build recipe (shinchiro/mpv-winbuild-cmake 1f8d2e76255abc48f0456d9be99b4cab9c6566e6), plus a written offer, valid for three years, for the sources of the other components compiled into libmpv-2.dll.

Option B remains the plan for later releases. Counsel review of this distribution is still recommended.

What we use today (development only)

ItemValue
Sourceshinchiro/mpv-winbuild-cmake GitHub release 20261015
Assetmpv-dev-x86_64-20261015-git-492bae0768.7z
SHA-2565db58c1768587b35f2d8daa11b53de4aec58197c00ea1d676f998f183a358ba8
mpvmpv v0.41.0-1175-g492bae076 (read from mpv-version at runtime)
FFmpegN-127552-gee8cbd7db (read from ffmpeg-version)
Client API2.5
Fetchscripts/fetch-libmpv.sh (pinned URL + hash check) into vendor/ (git-ignored)

The archive ships no license or build-configuration file. Inspecting the DLL’s strings shows the libx264 and libx265 encoder wrappers are compiled in. Those require FFmpeg --enable-gpl, so this binary must be treated as GPL (and mpv itself defaults to GPLv2+). No libfdk_aac (non-free) strings were found, but that is not proof of absence; a build we control is needed to know the exact configuration.

Facts that drive the decision

  • mpv is GPLv2+ by default; it can be built LGPLv2.1+ with -Dgpl=false.
  • FFmpeg is LGPLv2.1+ unless built with --enable-gpl (then GPL) or --enable-nonfree (then not redistributable).
  • A player does not need x264/x265 — they are encoders. Decoding H.264/HEVC uses FFmpeg’s own LGPL decoders or hardware decoders.
  • NOVA loads libmpv at runtime as a separate DLL (ADR 0001), so an LGPL build can be replaced by users, which suits LGPL’s relinking requirement.
  • Codec patents (HEVC, etc.) are a separate question from copyright licenses and depend on jurisdiction and distribution model.

Options

A. Ship a GPL buildB. Build our own LGPL libmpv + FFmpeg (recommended)
App licenseCombined distribution must comply with GPL (NOVA source can be MIT/Apache, which are GPL-compatible, but the shipped whole is GPL)NOVA can be MIT/Apache-2.0; ship LGPL notices + source/build info for libmpv/FFmpeg
EffortLow (reuse third-party builds) but we still must provide corresponding source for the exact buildMedium: reproducible CI build of mpv (-Dgpl=false) and FFmpeg (no --enable-gpl/--enable-nonfree)
ControlThird-party nightly; config undocumentedPinned, documented, SBOM-able

Recommendation

Choose B before M4 (Windows beta). Until then:

  • Development and CI may use the pinned shinchiro build.
  • Do not publish installers built with it unless the owner explicitly chooses option A and the GPL obligations (license text, corresponding source for the exact build, notices) are fulfilled.
  • license = "UNLICENSED" stays until the application license is chosen. Superseded 2026-10-16: MIT OR Apache-2.0.

Other dependencies (initial inventory, to be automated with SBOM in CI)

ComponentLicense (as published by the project)
Tauri 2.12, tauri-plugin-dialog/logMIT OR Apache-2.0
React 19, Vite 8, Tailwind CSS 4MIT
rusqlite 0.40MIT
SQLite (bundled amalgamation)Public domain
serde, thiserror, log, libloadingMIT OR Apache-2.0 / ISC (libloading)
WebView2 runtimeMicrosoft; installed system component, not bundled
7-Zip 7zr.exe (only used by the fetch script, not shipped)Public domain / LGPL per 7-zip.org

Verify each against cargo deny/cargo about and an npm license checker in CI (follow-up).