Repository navigation
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.
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.
| 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.
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.
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.
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.
You inherit the LGPL obligations. Concretely:
- Keep your source public and genuinely buildable, including your packaging configuration.
- Keep
licenses/inside your bundles. - Keep
THIRD-PARTY-NOTICES.mdaccurate for whatever you actually ship. - 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.
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.
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 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.
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.
Getting Started
Guides
Reference
- Automation
- Building
- Configuration
- Dossier
- Edcars
- Exploration Exobiology Plan
- Licensing
- Mission Bootstrap
- Privacy
- Roadmap
- Server
- Signing
- Startup
- Streamer Stats Overlay
- Surface Survey
- Terminal Output
- Theming
Releases