Skip to content

Third-Party Notices โ€‹

SkyFollower itself is licensed under GPL-3.0-or-later (see LICENSE). It depends on and, in some cases, redistributes third-party components that carry their own licenses. This file records the ones that are copyleft or otherwise carry an attribution/notice requirement; it is not an exhaustive inventory of every transitive dependency (the large majority are permissively licensed โ€” MIT, BSD, Apache-2.0, ISC โ€” and impose no notice obligation).

Copyleft components โ€‹

pyModeS โ€‹

  • Project: https://github.com/junzis/pyModeS
  • License: GPL-3.0
  • Used by: receiver, message-processor, tools/traffic-recorder
  • How: imported as a library dependency (pyModeS==3.6.0) for Mode-S / ADS-B (1090 MHz) frame decoding. Not modified; not vendored into this repo.

pyModeS978 โ€‹

  • Project: https://github.com/BrentIO/pyModeS978
  • License: GPL-3.0-or-later
  • Used by: message-processor
  • How: imported as a library dependency (pyModeS978==2026.9.1 โ€” the first GPL-3.0-or-later release) for UAT (978 MHz) frame decoding โ€” a standalone, pure-Python decoder with no pyModeS dependency. Authored by the same maintainer as SkyFollower. Not modified; not vendored into this repo.

odfpy โ€‹

  • Project: https://github.com/eea/odfpy
  • License: Apache-2.0 OR GPL-2.0-or-later (multi-licensed; the Apache-2.0 and GPL-2.0-or-later options are both compatible with GPL-3.0-or-later)
  • Used by: registry data runners that parse OpenDocument spreadsheet source files
  • How: imported as a library dependency. Not modified; not vendored into this repo.

AircraftShapesSVG โ€‹

  • Project: https://github.com/RexKramer1/AircraftShapesSVG by RexKramer1 and amnesica
  • License: GPL-3.0 (each SVG's own dc:rights metadata; repo LICENSE vendored alongside at map/frontend/src/assets/aircraft-shapes/LICENSE)
  • Used by: the map frontend โ€” the top-down aircraft silhouettes on the live map.
  • How: the SVG files are vendored at map/frontend/src/assets/aircraft-shapes/*.svg (181 files; one non-aircraft file โ€” an aircraft-carrier deck โ€” was dropped, and four filenames had a space replaced with a hyphen). A build step (map/frontend/scripts/generate-aircraft-shapes.mjs) extracts each silhouette's outline path and bounding box into a generated module; the frontend renders them as MapLibre icons. The paths themselves are unmodified apart from coordinate rounding. Attributed in the map's on-screen MapLibre attribution control.

Weak-copyleft dependencies โ€‹

Bundled into component container images. Each is either dual-licensed with a permissive option or file-scoped copyleft; none impose a source-disclosure obligation on SkyFollower, and all are compatible with GPL-3.0-or-later.

paho-mqtt โ€‹

  • Project: https://github.com/eclipse-paho/paho.mqtt.python
  • License: EPL-2.0 OR BSD-3-Clause (Eclipse Distribution License)
  • Used by: nearly every component โ€” it's in shared/ plus each component and data runner that publishes MQTT status/telemetry
  • How: imported as a library dependency. Not modified; not vendored.

certifi โ€‹

  • Project: https://github.com/certifi/python-certifi
  • License: MPL-2.0
  • Used by: transitively, wherever requests / boto3 are present (management-ui backend, archive-processor, archive-compaction, core-health, aws-setup, every data runner, tools/legacy-migration)
  • How: a CA-certificate bundle, imported transitively. Not modified; not vendored.

Basemap data and styles โ€‹

The map and management-ui frontends render a MapLibre GL basemap from OpenFreeMap (tiles.openfreemap.org/styles/positron), which carries upstream attribution requirements surfaced in the map's own attribution control:

No tiles or style JSON are vendored into this repo; they are fetched at runtime from OpenFreeMap by the browser.

Runtime data sources โ€‹

The data runners fetch third-party datasets at run time and write them into Redis, from where enrichment fields (registration, operator, aircraft type, route, airport) are embedded into archived flight records. This data is not redistributed by SkyFollower itself โ€” each deployment fetches it directly and stores archives in its own S3 bucket โ€” but an operator who republishes those archives inherits the source terms. The notable ones:

Adding a component โ€‹

When vendoring third-party material into this repository, add an entry here with its project URL, license, where it lives in the tree, and the required attribution. Only licenses compatible with GPL-3.0-or-later may be vendored.