A week ago I attended the 22. Gulaschprogrammiernacht (GPN22) in Karlsruhe, Germany. That’s a bit of a smaller version of the Chaos Communication Congress, although with 1000+ attendees “small” doesn’t really do it justice. Below are some of my notes from conversations I had there.

GPN22 banner.
ⓒ Entropia e.V.

KDE Itinerary

Debugging other people’s trips

Occasionally Itinerary produces weird results in its timeline for complex trips, and this can be hard to debug remotely without asking for a full export of all the personal data in there. Meeting users and contributors at events is a good opportunity to look at such issues on their devices and analyze the problems together.

Some things could be fixed on the spot, and verified shortly afterwards on the affected installations:

  • Improved trip grouping for incomplete trips and closely adjacent trips.
  • Improved recovery from wrong timezone information in manually added entries.
  • Fixed timeline ordering with location change elements without arrival time.

Data syncing via Matrix

Syncing multiple Itinerary instances is an often requested feature. One of the most promising approaches is doing this via Matrix. An in-depth discussion on that at least gave me a much more refined idea on how that could look like, and what we’d need in order to get there.

Specifically:

  • Use a special room type for this, so it’s not cluttering the room list in “normal” chat clients.
  • Use one room per trip rather than one room for the entire data set. This avoids scalability problems with state events, and would allow sharing individual trips with other people for joint planning and traveling together.
  • Use one state event per timeline element, so that there is always a known latest state without having to load/replay the entire room history.

iOS port

I also met someone looking into an iOS port of Itinerary. Obviously that’s in a very early exploratory state, but should that turn out viable it would probably also benefit many other KDE applications.

Project management

We also talks about how to clean up and revive task tracking for Itinerary. For various historic reasons relevant tasks are currently spread over two Phabricator boards, a Gitlab board, tasks in Itinerary’s Gitlab project and Bugzilla, neither of which is perfectly maintained, current nor complete.

Not sure yet how to best structure this, but it clearly needs to change, and I need to more actively use this rather than having things in my local notes.

KDE Platform & Frameworks

Password and credential management

How could credential/secrets storage/management look like for our platform in a world beyond KWallet? KWallet’s design, UX and security model goes back more than 20 years by now, and it shows. And since this is a sensitive and complex topic to touch, it’s probably worth working out first how we would want this to look like eventually.

Things to consider include:

  • Standardized access APIs for applications like XDG portals or the secret service API.
  • Data exchange formats with other password management systems.
  • Integration with cloud-based password managers for synchronization between different devices.
  • Supporting external hardware tokens and TPMs.
  • Supporting Passkeys and WebAuthn.
  • Unlocking UI nicely integrated into the shell, and also supporting e.g. biometric unlocking.
  • Hiding the complexity of all that from the user during setup to the extend possible.
  • Browser integration and integration with SSH and GPG key stores.
  • Should 2FA tools like Keysmith use this or remain separate?
  • Minimizing the need for configuration, while keeping much of the above opt-in.

Given the complexity we probably should find a place to collect all the ideas and requirements, and then get a few interested people together for a few days to turn this into a plan.

Application debug and support infrastructure

We do have functionality in Frameworks to help us diagnosing issues happening on a user’s device, most prominently KCrash. Some of our applications have additional custom-built diagnostic functions as well though, such as:

  • NeoChat has some debug output capturing system.
  • Itinerary has a “debug mode” that shows some additional diagnostics and test functions.

Would it make sense to generalize/standardize some of this and upstream it to Frameworks?

Emergency and weather alerts

One of my main agenda points was meeting with FOSS Warn again, for our joint work on an emergency and weather alert aggregation server.

Topcis included:

  • Quality metrics and monitoring of the input feeds. While we have feeds from 100+ countries, the activity on those ranges between 10+k alerts in the last 30 days to none. The latter could be valid for a small island nation with stable weather recently, but for a larger country this raises questions on how well that feed is maintained.
  • The data format and data model for feed metadata and API to query that, something my prototype didn’t do at all. This is useful to show in clients what kinds of alerts (or any at all) could be expected for an area of interest.
  • How to deal with split-up multilingual feeds. The Common Alerting Protocol (CAP) has support for multilingual entries, but in at least two cases (Russia and Saudi Arabia) those seem to be provided in separate single-language feeds instead.

Transitous

Improvements for Transitous also came out of this.

Chatting with a bunch of people the acquisition of Greyhound by FlixBus was mentioned, leading to somebody raising the question whether that would mean Transitous includes the Greyhound network (given FlixBus in Europe is covered). That turned out to not be the case, so the next person started to do a quick web search finding data for North America as well. Yet another person who had recently travelled that way was able to confirm that to be valid and current. A pull request for Transitous followed soon after, and within less than an hour this was available on the production instance.

Barely four months after this all started at FOSDEM this was just awesome to watch.

And that’s probably the biggest value of such events, a random hallway conversation can result in a significant improvement to public transport routing connectivity on another continent :)