Licensing assessment
This is an engineering assessment, not legal advice. Have it reviewed by someone qualified before distributing any build. The rules for adding dependencies are in DEPENDENCIES.md.
Status
Apollo Download Manager's own licence hasn't been chosen (#86, PO only; no agent selects it). There is no
LICENSEfile: all rights are reserved,package.jsonsaysUNLICENSED, and the Rust workspace setspublish = false. Our two crates declare no licence yet.Nothing has been distributed. Before any build goes to anyone outside the project, three things must be in place: the product licence, the third-party notices (below, #76) and the release checks (#78).
Apollo Download Manager contains no aria2 (ADR-0001), so V1's GPL obligations for aria2 don't apply to Apollo Download Manager.
Third-party components today
Measured on 2026-10-22 at the development state of main:
Rust:
cargo tree -e normal --target all -p velocity-desktop-v2 --prefix none -f '{p}|{l}'lists 356 third-party crates, mostly Tauri's.npm:
pnpm licenses list --prodlists 4 production packages:react,react-domandscheduler(MIT), and@tauri-apps/api(Apache-2.0 OR MIT).
Most crates are MIT, Apache-2.0, BSD, ISC or Zlib, often as OR choices. These need attention:
| Component | Licence | Obligation |
|---|---|---|
cssparser, cssparser-macros, selectors, dtoa-short, option-ext (5 crates, pulled in by Tauri and WRY) | MPL-2.0 | File-level copyleft. Unmodified use needs the notice and a pointer to the source. Modifying them would require publishing the changed files, so it needs PO approval (DEPENDENCIES.md) |
icu_*, zerovec, yoke, zerofrom, tinystr, litemap, writeable, potential_utf, zerotrie, and unicode-ident in part (19 crates) | Unicode-3.0 | Permissive; keep the licence text in the notices |
r-efi (2 versions) | MIT OR Apache-2.0 OR LGPL-2.1-or-later | Apollo DM uses it under MIT or Apache-2.0 |
| @fontsource-variable/inter (the Inter font, since #29) | OFL-1.1 | The font files are bundled unmodified. Ship its licence text in the notices; never sell the font on its own (PO decision on #29). The website serves the same file, with its licence beside it (#353) |
No GPL, AGPL or LGPL-only component is in the shipped graph.
Since #29 (2026-10-29):
pnpm licenses list --prodlists 40 production packages: React and@tauri-apps/apias before, plus Radix's dialogs and their helpers, TanStack Query, zustand, sonner, lucide-react (ISC), clsx, tailwind-merge, class-variance-authority (Apache-2.0),tslib(0BSD) and the Inter font (OFL-1.1).The dialog and notification plugins add 18 crates to
Cargo.lock, all MIT or Apache-2.0 (DEPENDENCIES.md).Development-only packages under MIT-0, BlueOak-1.0.0 and CC-BY-4.0 are allowed as DEPENDENCIES.md says. None is shipped.
Planned native libraries
From the research report, section 8.2. Versions are proposals until #35 records them in the native lock file (the build path is ADR-0004); "static" means linked into Apollo Download Manager's own binaries.
| Component | Licence | Obligation, as distributed statically |
|---|---|---|
| libcurl 8.23.0 or later | curl (MIT-like) | Keep the copyright notice |
curl and curl-sys crates | MIT | Notice |
| nghttp2 | MIT | Notice |
| zlib | Zlib | Notice (good practice) |
| TLS: Schannel (Windows) | Operating-system component, not redistributed | None |
| TLS: OpenSSL 3.x (Linux, macOS; on Windows, in the torrent helper only, #62) | Apache-2.0 | Licence text and the NOTICE file |
| libtorrent-rasterbar 2.0.15 (#62) | BSD-3-Clause, with parts under other licences (below) | Notice |
| Boost 1.91 (libtorrent's dependency) | BSL-1.0 | Notice |
cxx crate (the torrent bridge) | MIT OR Apache-2.0 | Notice |
libtorrent's other licences (its LICENSE file at v2.0.15, checked 2026-10-26; vcpkg's recipe lists them too):
Zlib, and a Zlib-style licence:
src/puff.cpp, which libtorrent uses to read gzip-compressed tracker replies, and its ed25519 code (Orson Peters). Both are built on every platform. Notice.Public domain:
src/sha1.cppandsrc/sha256.cpp. Built; no obligation.BSL-1.0: the Python bindings (
bindings/python/src/), which Apollo Download Manager doesn't build.APSL-2.0 and BSD-4-Clause: one header,
include/libtorrent/aux_/route.h, a copy of the BSD routing-table header.src/enum_net.cppincludes it only for iPhone builds (TORRENT_USE_SYSCTLwithTARGET_OS_IPHONE); macOS and the BSDs use the system'snet/route.h, and Windows and Linux use neither. So it isn't in Apollo Download Manager's Windows or Linux builds. BSD-4-Clause has an advertising clause, so building Apollo Download Manager for iOS would need a licensing review first.
SFTP is russh, a Rust crate (Apache-2.0), not a native library: ADR-0013 replaced libssh2 (ADR-0011) before it shipped. It is listed with the Rust crates in the notices.
Conclusion (research report section 8.2): a static libcurl with Schannel (Windows) or a static OpenSSL (Linux and macOS), plus nghttp2 and zlib, contains no copyleft component, with either SFTP option. That doesn't hold for a distribution's dynamic libcurl. On Ubuntu 24.04 it brings libssh (LGPL-2.1), librtmp (LGPL-2.1) and libidn2 (LGPLv3+ or GPLv2+), whose relinking and source obligations would apply if a package bundled them, for example in an AppImage. So distribution libraries are never bundled without review (DEPENDENCIES.md).
Third-party notices
THIRD_PARTY_NOTICES.md lists every third-party component Apollo Download Manager ships, with its version, its licence, the licence Apollo Download Manager uses it under and its source, followed by the licence texts (#76). It goes with every distributed build.
Regenerate it with
pnpm noticesafter any dependency change, and commit the result.pnpm check:noticesfails when the file is out of date, and when a component's licence isn't in DEPENDENCIES.md's allowed list. CI runs it (CI.md).What it reads (
scripts/notices.mjs):Rust:
cargo tree -e normal --target allfor the four programs Apollo Download Manager ships: the app, the transfer engine, the torrent helper and the native host. So it lists crates for every target platform, including macOS-only ones, and leaves out build and test tools.cargo metadatagives each crate's licence, source and files.npm:
pnpm licenses list --prod, the packages in the user interface.Native libraries:
scripts/native/deps.lock, the vcpkg overlay ports' versions (libtorrent, OpenSSL), and Boost, whose version comes with the vcpkg baseline (a test fails when the baseline changes, so the version is checked again).
Which licence: for a choice such as
MIT OR Apache-2.0, Apollo Download Manager uses the first allowed licence in this order: MIT, Apache-2.0, BSD-3-Clause, BSD-2-Clause, ISC, Zlib, BSL-1.0, Unicode-3.0, 0BSD, then the rest of the permissive list. Sor-efi'sMIT OR Apache-2.0 OR LGPL-2.1-or-lateris used under MIT. Every part of anANDmust be allowed.Licence texts (PO decision on #76, 2026-10-30): each distinct text is printed once, naming every component that ships it. They come from each package's own licence, copyright and notice files, only for the licences it is used under: a crate used under MIT contributes
LICENSE-MIT, notLICENSE-APACHE. Native libraries' texts are inscripts/notices/native/, copied from each verified source archive or from vcpkg's installed copy of it. 43 crates and one npm package ship no licence file. For those, the generator uses SPDX's standard text of their licence, from SPDX license-list-data v3.29.0 inscripts/notices/licenses/, and names the authors in their package metadata.Exceptions: a component the rules refuse needs the PO's approval and a note here; it is then listed in
APPROVED_EXCEPTIONSinscripts/notices-lib.mjs. There are none.Per-platform reports (#17):
node scripts/notices.mjs --report <target triple> <file>writes, as JSON, the components one platform's build ships, with the licence each is used under and any problem. The crates arecargo tree --target <triple>'s instead of every target's; the native libraries and npm packages are the same on every platform. The packaging scripts write one for their platform, and every release candidate carries both (RELEASE_CANDIDATES.md).AppImage: none is built (PO decision on #82), so there is no AppImage content inventory.
Apollo Download Manager's own licence
GPL-3.0-only, Copyright (C) 2026 Singlbase Technologies Limited (PO decision on #86, ADR-0017).
Compatible with everything Apollo Download Manager ships: the components above are permissive, or MPL-2.0 used unmodified, and OpenSSL 3.5's Apache-2.0 is one GPL-3.0 accepts. A component added later must be too (DEPENDENCIES.md).
Where it is stated:
LICENSE, the full text from gnu.org;licenseinpackage.jsonand in the workspaceCargo.toml, which every crate takes;licenseandcopyrightinsrc-tauri/tauri.release.conf.json, for the packages' metadata; the installers and packages, which installLICENSEbeside the notices (PACKAGING.md); the app's About section, with the notice GPL-3.0's section 5(d) asks an interactive program to show; and the README.Contributions come under a Contributor Licence Agreement with Singlbase (#90).
No legal review was done for this decision.