It has been a busy two month since the last report again, KDE’s source code hosting is now using Gitlab, we got the 20.04 release out, notifications were significantly improved, and we are now leveraging OpenStreetMap in more places, with even more exciting things still to come. The global travel restrictions have been hampering field testing, but they have most certainly not slowed down the development of KDE Itinerary!

New Features

Delay and disruption notifications in KDE Itinerary were almost entirely redone.

  • Notifications contain more information in general now, about what they refer to and what has actually changed.
  • Notifications are properly updated when new information become available, say a delay increased.
  • All information for a a single trip are now grouped into a single notification, say a delay and a platform change.
  • No longer relevant notifications are now automatically closed, and so are notifications for removed reservations, e.g. because you selected an alternative connection.
  • It is now possible to optionally show full notification details also on the device lock screen, so you can see a platform change without a full unlock procedure while rushing to catch your connection (Android only, KF >= 5.71).
Delay and platform change notifications summarized in a collapsed group on Android.
Multiple delay and platform change notficiations grouped together.

This required work throughout the stack, see the recent post on KNotification on Android work for details.

Another new development is that we now have access to intermediate stops of a journey, thanks to KPublicTransport extracting this when available from a backend now. Besides showing this to check suggested transfer trips or alternative journey options, this also gives us more information to compute journey statistics.

Journey section details including intermediate stops, real-time delay and platform change information as well as total distance and CO₂ emission.
KDE Itinerary showing journey section details.

Infrastructure Work

A lot happened on the internals as well, all aiming at providing better data for the travel data extraction and the transfer assistant.

The probably most powerful outcome of this is the coordinate-based lookup of timezones and countries. With just 300kB of static data this is able to provide correct results for more than 99% of the coordinates, also replacing two more specialized tables for airports and train stations. See this post for details.

Combining OSM and Wikidata data also allowed us to get public transport line logos in many cities, making it easier to match what the app shows you to local signage when trying to find the right station/platform. How this was done is described here and you can see it in use in the above screenshot.

How we navigate to and from airports has also been improved by using OSM data. This should fix issues where KDE Itinerary suggested public transport stops or driving destinations on the other side of the airport, rather than the terminal or entrance you actually need to go to. See this post for more details.

All of this relies on detailed Open Data, I have written previously about how you can help to improve this in areas of interest to you, by editing the corresponding entries in Wikidata and OpenStreetMap.

Fixes & Improvements

There’s plenty more noteworthy changes too of course:

  • Reservation cancellations are now also integrated correctly in the app.
  • The long-standing issue of how to resolve international SNCF station identifiers has finally been addressed, by adding a new Wikidata property, and using this in our station database.
  • The extractor for structured data in HTML can now also handle mixed microdata and JSON-LD data, as encountered by the Plasma Browser Integration in some cases.
  • Interactive elements in Apple Wallet event tickets such as links or phone numbers are now displayed correctly and can be triggered.
  • Live public transport data obtained as a side-effect of selecting an alternative connection is now retained, avoiding the need for extra online queries, and fixing the delay information flickering back and forth.
  • Reservation data is now augmented from live data in more cases, covering for example missing parts of the address as well.
  • Data import/export in the app now also covers all settings and updated information from real-time public transport queries.
  • KPublicTransport is now also providing information about the expected CO₂ emission of a journey, if the backend provides that information. This is used to improve the precision of the emission statistics in the app.
  • Name-based station lookup for a number of OpenTripPlanner installations has been fixed, and peer-to-peer ride sharing journey segments are now longer shown as an unknown mode of transportation.


Quite some work in the past two weeks also went into something larger that isn’t ready to be integrated yet: train station and airport (indoor) maps. Besides being useful in their own right, having the infrastructure for this will enable many more exciting assistance features, such as helping you to get to a connecting train while considering mobility restrictions (e.g. avoiding stairs due to heavy luggage).

Much more about this yet to come, for now here’s just a few teaser screenshots of the current prototype.

Four screenshots showing train station platforms, airport gates, train station building interior and navigation diagnostics.
Current state of the station/airport map renderer, showing platforms, gates, station buildings and navigation diagnostic data with different styles.


As mentioned already, a very easy way to contribute to this is by improving the relevant information in Wikidata and OpenStreetMap.

If you want to help in other ways too, see our Phabricator workboard for what’s on the todo list, for coordinating work and for collecting ideas. For questions and suggestions, please feel free to join us on the KDE PIM mailing list or in the #kontact channel on Matrix or Freenode.