As 2020 comes to a close, there’s several things ongoing around KDE Itinerary which a year ago I would have considered out of reach, or simply didn’t have on the radar yet at all. The common theme in all of those is collaboration with other communities and organizations. And I’m looking forward to more of this in 2021!

OSM Osmose Validator using KOpeningHours

When writing about KOpeningHours recently, I mentioned it being considered for use in OSM’s Osmose validator to improve OSM’s opening hours expression validation.

This has been implemented meanwhile, and is being deployed. You can see the result here for example.

Screenshot of OSM's Osmose validator suggesting a fix to a localized opening hours expression.
OSM's Osmose validator suggesting improvements to an opening hours expression.

We have already found and fixed a number of issues in KOpeningHours’ parser due to feedback from this. Another Interesting observation from the Osmose team: processing time for the opening hours check went down from 90 seconds to just 15 seconds, looks like optimizing our parser for use in KDE Itinerary’s station map paid of for this as well.

Public Transport API Repository

Two weeks ago I attended the Deutsche Bahn Open Mobility Data Community Meetup. This provided the opportunity to reconnect with a few people who work on various components accessing public transport APIs, like we do in KPublicTransport, and discuss possible ways to collaborate.

This resulted in starting a joint collection of transport API description files, a somewhat generalized and more standardized variant of similar configuration files in KPublicTransport.

It might not seem like a big gain on first sight for maybe 80-ish smaller JSON files, but considering that some of the parameters in there are non-trivial to obtain or require local or operator-specific knowledge, those have a relevant maintenance cost. Further, almost no two existing client implementations right now support the same set of endpoints, which usually isn’t due to technical limitations, but due to lacking the necessary information.

So unifying and collaborating on those information should benefit everyone by better coverage and less maintenance work long term.

New European Railway Ticket Barcodes

Earlier this year the European Union Agency for Railways (ERA) published “Recommendation ERA-REC-122”, a set of documents among other things describing a possible successor for the current RCT2 inter-European railway ticket barcodes.

While so far not seen in the wild yet, those “Flexible Content Barcode (FCB)” are highly interesting for our travel data extractor, since this format happens to considers our use-case and provides all relevant information in a structured and machine readable form. The result is a fairly complex format with multiple hundred (largely optional) fields, using an ITU X.691 unaligned PER encoding, in other words: a royal pain to reverse engineer if you don’t have the corresponding specification.

After nicely asking ERA thankfully published that as well two weeks ago, more than 2000 lines of ASN.1 code. That should pave the way for implementing support for these barcodes next year.

Realtime Elevator Status Information

A brand new thing currently been worked on is showing realtime status information for elevators and escalators on KDE Itinerary’s station maps. That’s particularly valuable when stairs are a hard to overcome obstacle for you (think stroller, heavy luggage, wheelchair, etc), and on large stations where there might be multiple alternatives instead.

Thankfully a number of operators provide this information as Open Data to enable such features. And fortunately we don’t need to start from the beginning here and collect those information from countless different sources, but can build on the existing work the team of Sozialhelden e.V. has already done for, or more precisely its Accessibility Cloud backend.

Screenshot of KDE Itinerary's train station map showing working elevators and green and those currently out of service in red.
KDE Itinerary's train station map showing realtime status information for elevators.


The origins of a lot of the above can be traced back to input or contacts from attending 36C3 a year ago. Tomorrow this year’s online variant RC3 starts, and I’m very much looking forward to see what that will get me into in 2021 :)