Skip to content

Licensing

github-actions[bot] edited this page Nov 12, 2026 · 7 revisions

Licensing

Short version: EDLD is MIT. You can do essentially anything with it. The one obligation that needs care is Qt's LGPL, and it is met by publishing the source and shipping the license texts.

EDLD itself — MIT

Everything in this repository written for EDLD is under the MIT license. Use it, fork it, sell it, embed it in something proprietary. Keep the copyright notice.

Dependencies

Component License Bundled in binaries
PySide6 / Qt LGPL v3 yes
Textual MIT yes
Rich MIT yes
psutil BSD 3-Clause yes
certifi MPL 2.0 yes — CA bundle, shipped unmodified as data
miniaudio (pyminiaudio) MIT; bundled C libraries public domain / MIT-0 yes
cffi MIT yes
cryptography (with its OpenSSL) Apache 2.0 or BSD 3-Clause; OpenSSL Apache 2.0 yes — server mode
segno BSD 3-Clause yes — server mode
PyInstaller GPL 2.0 with bootloader exception bootloader only, under its exception
JetBrains Mono (font) SIL OFL 1.1 yes — fonts/, with OFL.txt beside it
Euro Caps (font) freeware yes — fonts/; also embedded in the dossier's web page
Rajdhani, Saira Condensed, VT323 (fonts) SIL OFL 1.1 yes — fonts/, each with its OFL-<name>.txt beside it
Permanent Marker (font) Apache 2.0 yes — fonts/, with LICENSE-PermanentMarker.txt beside it

Only PySide6 constrains how EDLD is packaged. certifi is MPL 2.0, whose copyleft is file-level: it attaches to the covered files, not to a work that ships alongside them, and the bundle is included unmodified as data. It places no condition on EDLD's own license.

miniaudio, which plays the Radio tab, is MIT, and the C libraries compiled into it (miniaudio, dr_mp3, dr_flac, stb_vorbis) are public domain or MIT No Attribution. Bundling it places no condition on EDLD beyond carrying its license text, which the build does. That is why it was chosen over the usual alternatives: libmpv and python-mpv are GPL unless built specifically as LGPL, VLC is LGPL, and both would need a player installed or bundled on every platform. QtMultimedia is LGPL like the rest of Qt, but it is desktop-only and pulls FFmpeg into the binary.

Why PySide6 and not PyQt

PyQt6 is GPL-or-commercial. Using it would force EDLD itself to be GPL, which conflicts with keeping the project permissive.

PySide6 is Qt's own binding and is LGPL v3. The LGPL explicitly permits a work under any license — MIT included — to use the library, subject to conditions that are straightforward for a project like this one.

Meeting the LGPL

LGPLv3 section 4 governs a "Combined Work" — an application that uses an LGPL library. Its conditions, and how EDLD meets each:

4(a) — Give notice that the library is used. THIRD-PARTY-NOTICES.md and the About dialog in the desktop interface.

4(b) — Include a copy of the GPL and the LGPL. licenses/LGPL-3.0-only.txt and licenses/GPL-3.0-only.txt are bundled inside every binary and included in every release archive. A hyperlink does not satisfy this; an actual copy is required. This is the condition most often missed.

4(c) — Display attribution where the application shows copyright notices. The About dialog (Help → About) names Qt for Python, states the LGPL, and points at the bundled texts.

4(d) — Let the recipient relink against their own Qt. Two options; EDLD relies on 4(d)(1): convey the application code in a form that permits recombining it with a modified version of the library.

This is where a Python application is in an unusually comfortable position. "Relinking" for EDLD is not a link step at all — it is pip install PySide6 and python edld.py. Since:

  • the complete source is public under the MIT license,
  • the exact PyInstaller specification used for the official binaries is in packaging/, and
  • PySide6 is a standard package anyone can install, patch, or build from source,

anyone receiving a binary can rebuild an equivalent one against their own Qt. BUILDING.md gives the commands. That satisfies 4(d)(1).

4(e) — Installation Information. Not applicable. This clause applies to User Products with installed firmware, not to downloadable desktop software.

On single-file binaries

A single-file PyInstaller build is compatible with all of the above. It does not statically link Qt: the Qt shared libraries are stored in the executable's archive, extracted to a temporary directory at launch, and loaded dynamically by the operating system's normal mechanism.

Two rules keep this true, and both are enforced in packaging/:

  • Never statically link Qt. Nothing in the build does this today; do not add it.
  • UPX stays disabled. It also corrupts signed Qt libraries on Windows, so there are two reasons.

If you fork EDLD and distribute binaries

You inherit the LGPL obligations. Concretely:

  1. Keep your source public and genuinely buildable, including your packaging configuration.
  2. Keep licenses/ inside your bundles.
  3. Keep THIRD-PARTY-NOTICES.md accurate for whatever you actually ship.
  4. Do not statically link Qt.

If you make your fork's source private, you lose the 4(d)(1) route and must instead satisfy 4(d)(0), which is considerably more work. Keeping the source open is by far the easier path.

A note on the terminal interface

The terminal dashboard uses Textual, which is MIT and carries no such conditions. A build that ships only --dasht and --term would have no LGPL obligations at all. The official EDLD binaries include the desktop interface, so they do. EDLD-server, the build for server mode, has no Qt and no dashboards, so it has none.

Adding a dependency

Before adding one, check its license. Acceptable: MIT, BSD, Apache 2.0, ISC, and similar permissive terms; or LGPL where the library is dynamically linked and the source stays public.

Not acceptable: GPL or AGPL, which would force EDLD's own license to change, and anything with a non-commercial or field-of-use restriction, which would stop it being open source at all.

Record every addition in THIRD-PARTY-NOTICES.md.

License texts do not need adding by hand. Permissive licenses are not unconditional — MIT, BSD and the rest require the copyright and license text to accompany every copy, Apache 2.0 its NOTICE file too — and a binary is a copy of every package inside it. The build copies each bundled package's license files from its installed metadata into licenses/third-party/, following requirements.txt and everything it pulls in, and stops if one has none. A package whose wheel carries no license file needs its text added to licenses/ by hand and an exemption in packaging/build_common.py, as Qt has.

Elite Dangerous

Elite Dangerous is a trademark of Frontier Developments plc. EDLD reads journal files the game writes to the local filesystem, in the documented format Frontier publishes for exactly this purpose. It does not modify the game, inject code, or read process memory.

EDLD is an unofficial community tool, not affiliated with, endorsed by, or supported by Frontier Developments plc. Do not imply otherwise in a fork.

Not legal advice

This document explains the reasoning behind the project's licensing choices. It was written by the project's contributors, who are not lawyers. If you are redistributing EDLD in a context where the answer matters commercially, take your own advice.

Clone this wiki locally