Skip to content

fix(attribution): credit sources without an unstated licence - #729

Merged
Medformatik merged 1 commit into
mainfrom
fix/credits-without-unstated-licence
Oct 31, 2026
Merged

Medformatik merged 1 commit into
mainfrom
fix/credits-without-unstated-licence

Conversation

@Medformatik

Copy link
Copy Markdown
Collaborator

Summary

A station board's data sources read "Kölner Verkehrs-Betriebe AG (Licence not specified)" for four sources, and "ÖBB-Personenverkehr AG (todo)" for a fifth. Saying that a licence is not specified tells a reader nothing, and the text was English in every UI language.

Do we know these licences? No. These sources are the operators' HAFAS journey planners, which OpenMapX reaches through the transport-apis catalogue:

  • The catalogue marks DB Regio Bus NRW, KVB, RMV and VSN as "isProprietary": true.
  • For ÖBB, the catalogue's licence field holds the placeholder "todo".
  • Some of these operators publish open datasets, but none of those licences cover the journey-planner responses OpenMapX uses:
    • ÖBB publishes its timetable book under CC BY 4.0.
    • KVB publishes some datasets, such as its ticket outlets, under DL-DE-ZERO 2.0.
    • RMV's own API requires agreeing to terms.
  • I found no licence statement for the journey-planner endpoints themselves, so there is nothing true to set.

Transitous's data licence varies by feed and is already shown that way. Its "Licence not specified" came from a second entry for its endpoint, which has terms but no licence.

Changes:

  • Credits leave out a licence that names nothing (creditLicensing in core):
    • A grant counts as unstated when its licence is unknown and gives no licence name, or only a placeholder such as "todo".
    • Credit HTML, the compact source chips and popup credits show the source without it.
    • A licence the source does name, such as "Proprietary" or "Varies by item", still shows.
  • Detail views (the Credits dialog and the licences page) show an unstated licence only as a link to its source's terms, labelled "Terms". One without a link is left out. The licenceNotSpecified string is no longer used and is removed.
  • The transit registry reads the catalogue's "todo" as no licence.
  • Unchanged: the admin integration and source-evidence views and the legal terms tables still say "Licence not specified". There it tells operators what is missing.

Köln Messe/Deutz departures. Before (openmapx.com):

Before: data sources with "(Licence not specified)" after four operators, "(todo)" after ÖBB, and "(Licence not specified)" in the Transitous credit

After (local web build of this branch against openmapx.com):

After: data sources naming each operator alone, and the Transitous credit with its sources link

The Credits dialog after: Transitous keeps "Varies by item" and its terms link, and the operators are named alone.

After: Credits dialog listing Transitous with "Varies by item" and "Terms of use", then the five operators by name

The map footer's MapTiler credit loses its "Licence not specified" link to MapTiler's cloud terms. MapTiler's terms binding is marked for the details view, not the visible credit, and the copyright links stay.

Validation:

  • New and updated tests cover:
    • credit HTML naming a source alone for an unknown or placeholder licence;
    • credit HTML keeping a stated licence ("CC-BY-4.0", "Proprietary");
    • the Credits dialog leaving out an unstated licence and showing a linked one as "Terms" in English and German;
    • the map footer's MapTiler credit without the placeholder.
  • Full Vitest run: 24,530 passed, 0 failed. check-types passes for apps/api, apps/web and packages/core, and Biome is clean.
  • Not run locally: the docs build. No docs changed.

Release and upgrade impact

Product impact: ordinary
No package release: the built @openmapx/extension-cli and @openmapx/extension-contracts packages are byte-identical to main (both built and compared, 42 files); the changed shared code is credit rendering in @openmapx/core and two web locale strings, which they don't ship. extension-contracts' type declarations order some union members differently between builds of the same commit, so the comparison used builds that came out in the same order.

A credit whose licence is unknown read "Kölner Verkehrs-Betriebe AG
(Licence not specified)", and ÖBB's showed the catalogue's placeholder
"(todo)". Credits now name such a source alone; detail views show an
unstated licence only as a link to its source's terms. Admin and legal
tables still say when a licence is not specified.
@Medformatik Medformatik added the integration New or changed provider, source or backend integration label Oct 31, 2026
@Medformatik Medformatik self-assigned this Oct 31, 2026
@Medformatik
Medformatik enabled auto-merge (squash) October 31, 2026 22:21
@Medformatik
Medformatik merged commit d8cee45 into main Oct 31, 2026
27 checks passed
@Medformatik
Medformatik deleted the fix/credits-without-unstated-licence branch October 31, 2026 22:33
@github-actions github-actions Bot locked and limited conversation to collaborators Oct 31, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

integration New or changed provider, source or backend integration

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant