Skip to content

Welcome to Planet KDE

This is a feed aggregator that collects what the contributors to the KDE community are writing on their respective blogs, in different languages

Wednesday, 7 February 2024

We are happy to announce the release of Qt Creator 12.0.2!

Tuesday, 6 February 2024

Nothing! That’s the end of the blog post! Go back to what you were doing!

Well, sort of. 🙂 Some of you may be aware that a year or so ago, there was a lot of chatter about what to do with the Activities feature in Plasma 6: change how it works, remove the feature, or leave it be.

There’s broad consensus within the KDE developer community that the Activities feature doesn’t work the way we want it to. Its scope is conceptually unclear, it’s a frequent source of bugs, and it isn’t really maintained. As a result adoption in even our own apps has been low. It was for these reasons that over time we removed many of the entry points for Activities in the UI, and why I eventually proposed removing it entirely.

However the best way to to find out how many people are using something is to remove it! And the second best may be to propose removing it. 🙂 Many people showed up to offer their passionate pleas to keep the feature, explaining what they were using it for. Interestingly, many admitted that the feature didn’t really work very well out of the box and that they had done custom work to bend it to their use cases.

For this reason, several people stepped up to propose an overhaul of how Activities works, taking into account how the feature’s users actually use it. A lot of discussion ensued, and a few changes were merged. One was that Activities migrated from Frameworks to Plasma, which stripped it of its API guarantee and opens the door to us making major changes within the Plasma 6 lifecycle. Another change was to remove the per-Activity power management setting.

Unfortunately not much happened beyond that. As a result the status quo remains largely in effect for Plasma 6: the Activities feature has not been removed, overhauled, or even substantially bug-fixed. It remains a quirky and somewhat buggy DIY feature for adventurous users to build custom workflows around, and today it’s more hidden-away than ever if you don’t want to use it.

However, I don’t expect this to continue in the long term. Once Plasma 6 stabilizes and development resources are pulled off constant bug-fixing, attention will inevitably turn to Activities once again. So consider this blog post notice that the feature is at risk of being eventually removed if people don’t step up to contribute technical work to either fix existing bugs, or else overhauling the feature to work differently.

Personally, I’d like to see Activities morph into a feature whereby each activity has a separate set of settings and config data, but access to all the same user files. On top of that, you would be able to configure individual apps you use in multiple activities (like music players) to use shared settings and config data.This way it would basically be the “profiles” feature that many web browsers have now, but applied automatically to any and all apps you want.

But, like all desires and ideas, that personal idea of mine means nothing without work to transform it into an implementation! So if you use and enjoy Activities, or think you’d like to if they worked differently, please get involved. We’ll need your help if this feature is to remain!

One of the key components to using a Plasma Wayland session is obviously the Qt Wayland Client module for running Qt applications in a Wayland environment. While it has been successfully deployed to millions of devices over the years, there’s still a few areas that feel like they haven’t been touched much since its inception as part of the Qt Lighthouse project, what turned into QPA, the Qt Platform Abstraction.

Message dialog popup, asking for confirmation “The document ‘Untitled’ has been modified. Do you want to save your changes or discard them?” with actions “Save”, “Discard”, “Cancel”
WIP: Qt Wayland client-side decoration with a proper drop shadow and all

Improving the SHM Backing Store

Fushan Wen complained about abysmal performance when using Kolourpaint (a faithful re-creation of the original MS Paint, just better) under Wayland. Thanks to Hotspot (my favorite profiler front-end) we found a bottleneck in Qt’s Wayland SHM (Shared Memory) Backing Store, the infrastructure that provides software-rendered applications with a canvas to draw into. The way Wayland works is basically that an application creates a wl_buffer, fills it with content, and “sends” it to the compositor. Once the compositor is done processing it (e.g. after having uploaded it to the GPU) the client may re-use that buffer again.

If we pick a different buffer to draw into because we want to start drawing before the compositor is done with the previous one, any previous content needs to be transferred over since Qt expects to see the contents it drew previously. This is where we found the choke point: Even though the application reported the correct region that changed (when drawing with a brush only the new splodges of color need to be rendered after all), Qt Wayland copied the entire buffer. Therefore, I replaced the original memcpy with proper damage tracking which significantly sped up rendering. Many thanks to Ilya Fedin for continued support while implementing this.

I then did more profiling and found that when painting on a window with alpha channel, Qt first clears the region to be painted. While there’s not much we can optimize about a “fill with color” call, we can skip doing that entirely if we have just created a new buffer, like is done repeatedly as you resize the window. The new buffer is initialized with zeroes already, therefore we can just start painting on it. Last but not least, I added support for “scrolling” the backing store, which is something Qt might ask us to do when scrolling through a view, such as a text editor or terminal window, and then have the application just fill in a small gap that’s left.

Prettified “Bradient” Decoration

Kolourpaint, a painting application, with "KDE Rocks" painted on its canvas in crude handwriting, ontop a prompt whether to save unsaved changes.
Kolourpaint running under Weston with client-side decorations

I very much dislike client-side decorations for their inconsistencies and burden they put on application developers but I nevertheless grew tired of seeing how hideous Qt applications looked on colleague’s computers running Gnome Shell. That is why I spent some time on making Qt’s “Bradient” decoration plug-in not stick out like a sore thumb. While it’s a massive improvement over the blue decoration Qt Wayland originally shipped, there is still a lot to be desired.

I believe it’s quite detrimental that Mutter (Gnome’s window manager and Wayland compositor) doesn’t support server-side decorations at all under Wayland. There’s plenty of applications that display non-application content and don’t care much about providing any decoration. For example, even running kwin_wayland under Gnome for development purposes gives you a window with no title bar or window border whatsoever.

Qt likewise relies on the desktop environment to provide a window frame and its drawing of client-side decorations under Wayland is if anyting a massive band-aid. Currently, Qt’s backing store just adds a window decoration around it and then returns the application a region inside the image that excludes the decoration again. It also lacks several features that one would expect from a window title bar, like double click to maximize or clicking the icon to bring up the window manager menu. In the future I am looking forward to putting the decoration into a sub-surface (or even using libdecor) which hopefully fixes many issues related to input and format handling.

Kolourpaint window, mouse clicked the window icon in the top left of the corner, which resulted in a window with the following actions: “Move to Virtual Desktop”, “Maximize”, “Minimize”, “More Actions”, “Close Window”
Opening the window menu by clicking the icon, just as you would expect

To start off, the easiest change I did was using the correct mouse cursors for resizing the window. I then found that mouse input wasn’t properly translated when the window border was too thick, something that wasn’t noticeable with the default 3px border but surely would become a problem once we added a large shadow. Next, I fixed it not updating live when system colors changed, e.g. when enabling “Dark Mode”. Additionally, the title bar now includes the application name to be consistent with the title it sends to the compositor for display in task bar and window switchers.

Still, adding a proper drop shadow is work in progress: the most important part is to actually remove the window border and rounded corners altogether when the window is maximized or tiled and to adjust the button layout machinery to cope with changing margins. However, I also need to move the qt_blurImage function which creates the drop shadow texture into a place where I can use it without Qt Graphics Views or Qt Widgets (it’s currently used internally by QGraphicsBlurEffect).

Drag’n’Drop

Furthermore, I improved drag and drop handling: Qt Wayland now tries to decode URLs as UTF-8 – Chrome sometimes sends them like this – rather than just UTF-16. I also had it ignore the mysterious “DELETED” format Firefox sends that is likely a remnant from the XDnd specification. The latter fixes dropping an image to the desktop to set it as a wallpaper since Firefox doesn’t actually let anyone read this entry and Plasma gets stuck on it until it runs into a socket timeout.

Folder icon named “Projects” dragged by mouse with a normal mouse arrow cursor and a green “plus” symbol next to it, indicating a copy operation will take place when dropped.
Dragging a folder using the correct “Copy” cursor rather than the generic “Grabbing Hand” it had previously

The mouse now also uses the proper drag cursors. While the compositor may overrule the preferred action, we still want the default to match other desktop environments. I also fixed keyboard modifier propagation during drag and drop. While Wayland sends an explicit keyboard modifier change (Shift/Alt/Meta pressed or released), it does so after sending the actual key press. Qt on the other hand only updates its internal modifier state in response to an actual key presses. This meant that Qt doesn’t properly update its internal state when pressing a modifier when starting to drag a file and then holding Shift to initiate a “Move” operation. To fix that, Qt Wayland emits drag and drop events (and others) using the Wayland-internal modifier state rather than the one in QGuiApplication.

Discuss this post on KDE Discuss.

In the last post I talked about making things like detachable tabs or widgets work in a Wayland work. The protocol I submitted has now been merged into wayland-protocols!

Following I quickly switched Qt and KWin to use the now standardized protocol. KWin will support it with the initial 6.0 release. The Qt patch has been picked all the way down to the 6.6 branch which means it should be in the 6.6.3 release.

I am also happy to see that Robert Mader is working on making Chrome use the standard protocol, picking up my proof-of-concept level patch. Thank you!

Happy dragging!

Sunday, 4 February 2024

Greetings, Kubuntu Community!

Today marked an important Kubuntu Council meeting, where we witnessed significant progress and collaboration among our esteemed council members – Darin Miller, Rik Mills, Valorie Zimmerman, Aaron Honeycutt, Jonathan Riddell (Kubuntu Treasurer), and Simon Quigley(Lubuntu). In this blog post, we’re excited to share the highlights and outcomes of the discussions that took place.

  1. Focus on the Upcoming Kubuntu LTS Release 24.04

    A primary focus of our meeting was setting the objectives for the imminent Kubuntu LTS release. The council engaged in in-depth discussions to ensure that the upcoming release meets the high expectations of our community and continues the Kubuntu legacy of excellence.
  2. Ubuntu Flavours Statement of LTS Support

    Understanding the importance of clear communication, we considered the necessity of a statement regarding Long-Term Support (LTS) required by Ubuntu recognised flavours. This move aligns with our commitment to provide transparency and detailed information to our users.
  3. Exciting Collaboration with Scarlett Gately Moore

    We’re thrilled to announce that we have agreed to contract Scarlett Gately Moore for a three-month period. With a preliminary budget allocated, Scarlett will play a crucial role in delivering key projects:-

    – The 24.04 LTS Release,
    – Updating the Kubuntu Installer to Calamares,
    – Preparing an Alpha of Plasma 6 targeting the 24.10 release.

    This decision was unanimously agreed upon and reflects our dedication to continually enhancing Kubuntu.

Actions Moving Forward:

Coordination and Oversight: Simon Quigley will be coordinating with Rik Mills and Scarlett Moore, managing the intricate details and ensuring the smooth delivery of our objectives.

Financial Processes: Simon Quigley will oversee the invoicing process with Scarlett Moore, following the agreed pro-forma. Jonathan Riddell, our Kubuntu Treasurer, will handle the commissioning of payments.

Communication and Documentation: As a part of our commitment to keep the community informed, I, Rick Timmis, will be updating the Kubuntu Council mailing list about the meeting’s outcomes. Additionally, I will draft an LTS Statement for submission to the Ubuntu Technical Board, detailing our approach and commitment to Kubuntu’s Long-Term Support.

This meeting was a testament to the dedication and passion of our council members and the broader Kubuntu community. We’re excited about the direction in which Kubuntu is heading and are eager to see the fruition of these projects.

Stay tuned for more updates, and thank you for your continued support of Kubuntu!

Closing:

Best Regards,

Rick Timmis
Kubuntu Council

Saturday, 3 February 2024

Believe it or not, the mega-release is coming out in less than a month. So soon! For this reason, all hands are on deck fixing bugs and polishing everything up. Nonetheless, the next releases of Plasma and KDE apps are starting to accumulate some juicy improvements too! Read on to find out…

KDE 6 Mega-Release

(Includes all software to be released on the February 28th mega-release: Plasma 6, Frameworks 6, and apps from Gear 24.02)

UI improvements

When you drag a file in the Plasma Wayland session and it passes over another window during the journey to its final destination, the window it passes over only raises itself to the top when you stop moving the cursor for a full second–up from the previous value of one quarter of a second (Xaver Hugl, link)

Panels in “Auto-Hide” (or the new “Dodge Windows”) mode that are currently hidden no longer inappropriately show themselves when the system wakes from sleep or its screen configuration changes (Vlad Zahorodnii, link 1 and link 2)

Made some more improvements to the ranking of KRunner search results (Alexander Lohnau, link)

The gray groove in scrollbar tracks that shows up on hover has been removed, because it didn’t really add anything since the whole scrollbar area is already framed. In the future if and when we remove that frame, the groove may re-appear, though (Akseli Lahtinen, link 1 and link 2):

When using the Breeze Dark Plasma style or color scheme, Plasma widget popups no longer have a white-ish flash while opening (Niccolò Venerandi, link)

The Clipboard and Keyboard Indicator System Tray applets now hide themselves completely when they have nothing to show, instead of appearing in the expanded part of the system tray and just showing you some kind of generic “there’s nothing to see here, hurr hurr” message when clicked (Jin Liu, link 1 and link 2)

Made the colors and line weights of single-pixel separators and outlines throughout Breeze-themes KDE software consistent, as many were previously using subtly different colors and line weights (Akseli Lahtinen and Marco Martin, link 1, link 2, link 3, link 4, link 5)

Bug fixes

Important note: I don’t mention fixes for bugs that were never released to users; it’s just too much for me (it would probably be too much for you to read as well), and most people never encountered them in the first place. Because we’re in the middle of a big Plasma dev cycle, there are a lot of these bugs! So big thanks to everyone who’s made it a priority to fix them!

It’s no longer possible to crash Plasma by giving a virtual desktop an absurdly long name (Vlad Zahorodnii, link)

It’s now possible to use Alt+PrintScreen as a key combination for global shortcuts (Yifan Zhu, link)

System Monitor’s “Import Page” functionality once again works (Arjen Hiemstra, link)

Plasma tooltips now get their visual styling from the active Plasma style’s Tooltip SVG, instead of its Dialog SVG, which was kinda weird (David Edmundson, link)

Made a bunch of fixes and improvements for windows using fractional scale factors (Akseli Lahtinen and Kai Uwe Broulik, link 1, link 2, link 3, and link 4)

With the Breeze application style, those rare menu items with multiple lines of text are now displayed correctly (Ilya Bizyaev, link)

The kinfo command-line program now correctly reports your graphics platform (i.e. X11 or Wayland) (Harald Sitter, link)

Other bug information of note:

Performance & Technical

Fixed a bug affecting with certain GPU setups that could cause KWin to use 100% of a CPU core whenever anything was using PipeWire to record the screen–which is actually quite a lot of things, including window thumbnails in the Task Manager and Overview effect (Xaver Hugl, link)

the Kickoff Application Launcher is now hugely more performant and faster to switch categories when hovering the cursor over multiple list items quickly (David Edmundson and Nicolas Fella, link 1 and link 2)

Made multiple improvements to reduce the amount of blocking when browsing mounted network file systems (Sergey Katunin, link 1 and link 2)

The “Closeable” window rule now works in the Plasma Wayland session (Vlad Zahorodnii, link)

Post-Mega-Release

Spectacle’s text tool now lets you insert line breaks and wrap text (Noah Davis, Spectacle 23.05. Link)

KCalc now uses a more modern frameless style (Carl Schwan, KCalc 24.05. Link):

The Weather widget now displays the chance of precipitation for all data providers except for BBC, which doesn’t provide this information (I guess it’s easier to just assume the chance is 100% for any location in the UK) (Ismael Asensio, Plasma 6.1. Link 1 and link 2):

When you have more than one audio input or output device, the name of each one shown in the System Tray widget is now a lot more readable and comprehensible, and doesn’t include weird technical text that often made no sense (Harald Sitter, Plasma 6.1. Link):

Notifications showing file transfer or download jobs now have a clearer arrangement of buttons (Oliver Beard, Plasma 6.1. Link):

When you activate the logout screen by invoking a specific action (e.g. “Shut Down”), it will now act more like a confirmation screen and only show you that action plus a cancel button (me: Nate Graham, Plasma 6.1. Link):

Right-clicking on a panel now yields a menu item that says “Show Panel Configuration”, which is clearer than the old “Enter Edit Mode” (Marco Martin, link)

…And Everything Else

This blog only covers the tip of the iceberg! If you’re hungry for more, check out https://planet.kde.org, where you can find more news from other KDE contributors.

How You Can Help

Thanks to you, our Plasma 6 fundraiser has been a crazy success! I originally thought the goal of 500 new KDE e.V. supporting members was over-optimistic, but you’ve all proven me happily wrong. We’re now up to an incredible 738 members, unlocked both stretch goals, and 1000 members by launch time seems like it might even be feasible. Thank you everyone for the confidence you’ve shown in us; we’ll try not to screw it up! 🙂 For those who haven’t donated to become members yet, spreading the wealth via this fundraiser is a great way to share the love. 🙂

If you’re a developer, work on Qt6/KF6/Plasma 6 issues! Which issues? These issues. Plasma 6 is very usable for daily driving now, but still in need of some final bug-fixing and polishing to get it into a solid state by February.

Otherwise, visit https://community.kde.org/Get_Involved to discover other ways to be part of a project that really matters. Each contributor makes a huge difference in KDE; you are not a number or a cog in a machine! You don’t have to already be a programmer, either. I wasn’t when I got started. Try it, you’ll like it! We don’t bite!

Friday, 2 February 2024

Kdenlive development has been very active since our November sprint focusing on the 24.02 KDE Mega Release, that will be based on Qt6 (but is still compatible with Qt5) and KF6. In addition to the essential porting tasks, we dedicated efforts to fixing numerous bugs to enhance stability and introduced some exciting new features, which will be detailed in a forthcoming post. Noteworthy progress has also been made on the packaging front. Apart from Linux and Windows versions, we are thrilled to announce the first native version for Mac Arm processors.

The final release is scheduled for the end of the month so now is the time for the community to help us test the release candidate version and report any regressions or bugs found. Leave your feedback in the comments below, report them on our bugtracker or tell us about it in our next Kdenlive online Café on the 9th of February at 9PM UTC.

Below, you will find links for the various binaries. Remember that this is a pre-release software recommended for testing purpose only.

Kdenlive binaries:

(Note: for Mac packages, you will need to allow the app to start from Preferences > Security on the first run)

Known issues:
Audio recording
is not working on any platform
MacOS version crashes on effect stack drag and drop, color theme for the application is not working yet and translations are missing.

The post Kdenlive 24.02.0 RC ready for testing appeared first on Kdenlive.

It’s official, the Kubuntu Council has hired me part time to work on the 24.04 LTS release, preparation for Plasma 6, and to bring life back into the Distribution. First I want thank the Kubuntu Council for this opportunity and I plan a long and successful journey together!!!!

My first week ( I started midweek ):

It has been a busy one! Many meet and greets with the team and other interested parties. I had the chance to chat with Mike from Kubuntu Focus and I have to say I am absolutely amazed with the work they have done, and if you are in the market for a new laptop, you must check these out!!! https://kfocus.org Or if you want to try before you buy you can download the OS! All they ask is for an e-mail, which is completely reasonable. Hosting isn’t free! Besides, you can opt out anytime and they don’t share it with anyone. I look forward to working closely with this project.

We now have a Kubuntu Team in KDE invent https://invent.kde.org/teams/distribution-kubuntu if you would like to join us, please don’t hesitate to ask! I have started a new Wiki and our first page is the ever important Bug triaging! It is still a WIP but you can check it out here: https://invent.kde.org/teams/distribution-kubuntu/docs/-/wikis/Bug-Triage-Story-WIP , with that said I have started the launchpad work to make tracking our bugs easier buy subscribing kubuntu-bugs to all our packages and creating proper projects for our packages missing them.

We have compiled a list of our various documentation links that need updated and Rick Timmis is updating kubuntu.org! Aaron Honeycutt has been busy with the Kubuntu Manual https://github.com/kubuntu-team/kubuntu-manual which is in good shape. We just need to improve our developer story 🙂

I have been working on the rather massive Apparmor bug https://bugs.launchpad.net/ubuntu/+source/apparmor/+bug/2046844 with testing the fixes from the ppa and writing profiles for the various KDE packages affected ( pretty much anything that uses webengine ) and making progress there.

My next order of business staging Frameworks 5.114 with guidance from our super awesome Rik Mills that has been doing most of the heavy lifting in Kubuntu for many years now. So thank you for that Rik 🙂

I will also start on our big transition to the Calamaras Installer! I do have experience here, so I expect it will be a smooth one.

I am so excited for the future of Kubuntu and the exciting things to come! With that said, the Kubuntu funding is community donation driven. There is enough to pay me part time for a couple contracts, but it will run out and a full-time contract would be super awesome. I am reaching out to anyone enjoying Kubuntu and want to help with the future of Kubuntu to please consider a donation! We are working on more donation options, but for now you can donate through paypal at https://kubuntu.org/donate/ Thank you!!!!!

Let’s go for my web review for the week 2024-05.


This Web Page is Best Viewed in the EU

Tags: tech, vendor-lockin, apple

A little victory for European users trapped in the iOS ecosystem… still more needs to be done though.

https://cloudfour.com/thinks/this-web-page-is-best-viewed-in-the-eu/


Announcing Interop 2024 – Mozilla Hacks - the Web developer blog

Tags: tech, standard, web, browser

It’s good to see this initiative keeps thriving. It’s the best way to ensure the standard is well implemented everywhere.

https://hacks.mozilla.org/2024/02/announcing-interop-2024/


Disney Unveils the HoloTile Floor

Tags: tech, VR, hardware

Interesting technology. Could have a real impact regarding VR applications.

https://www.ign.com/articles/disney-unveils-the-holotile-floor-inching-us-closer-to-a-real-life-holodeck


New GitHub Copilot Research Finds ‘Downward Pressure on Code Quality’

Tags: tech, ai, copilot, programming, quality

Faster with less effort doesn’t seem to lead to quality code overall.

https://visualstudiomagazine.com/articles/2024/01/25/copilot-research.aspx


🦅 Eagle 7B : Soaring past Transformers with 1 Trillion Tokens Across 100+ Languages (RWKV-v5)

Tags: tech, ai, machine-learning, gpt, foss

Very nice progress on this type of architecture. It’s definitely needed in part because it lowers the inference cost quite a lot. It’s also nice to see it released with under the Apache 2 license and the training set be documented.

https://blog.rwkv.com/p/eagle-7b-soaring-past-transformers


Process spawning performance in Rust | Kobzol’s blog

Tags: tech, linux, rust, processes, system

I like this kind of rabbit holes. This gives a few interesting information on how forking processes behaves on Linux.

https://kobzol.github.io/rust/2024/01/28/process-spawning-performance-in-rust.html


On-demand-fork: A Microsecond Fork for Memory-Intensive and Latency-Sensitive Applications

Tags: tech, linux, system, kernel

Interesting paper for a new fork implementation in Linux.

https://www.cs.purdue.edu/homes/pfonseca/papers/eurosys21-odf.pdf


How I Learned to Stop Worrying and Love Juggling C++ Atomics | brilliantsugar

Tags: tech, c++, multithreading, atomics, tests

Very interesting tools for testing and verifying concurrent code.

https://brilliantsugar.github.io/posts/how-i-learned-to-stop-worrying-and-love-juggling-c++-atomics/


Microdot: a web framework for microcontrollers [LWN.net]

Tags: tech, embedded, python

Interesting little web framework to run on MicroPython. Clearly could make some IoT project more accessible.

https://lwn.net//Articles/959067/


High performance vector graphic video games | Spencer C. Imbleau’s blog

Tags: tech, rust, 2d, vector, game

Interesting tricks for having good vector graphic based animations and collision detection.

https://simbleau.github.io/rust/graphics/2023/11/20/using-vello-for-video-games.html


In Loving Memory of Square Checkbox @ tonsky.me

Tags: tech, gui, ux

This introduced lack on consistency and predictability in how you can interact with a GUI component is a problem, this will also reduce accessibility. There was value in this “tradition” of the square checkbox vs round radio button.

https://tonsky.me/blog/checkbox/


My favourite Git commit

Tags: tech, version-control, craftsmanship

Indeed the example is a bit extreme. Still it illustrate quite well what should be found in a commit message. It needs to tell a story and motivate the reasons behind a change.

https://dhwthompson.com/2019/my-favourite-git-commit


The art of good code review

Tags: tech, codereview, craftsmanship

Excellent post about code reviews. I particularly like the introduction about the motivations, it’s often forgotten.

https://philbooth.me/blog/the-art-of-good-code-review


Long Term Refactors

Tags: tech, engineering, refactoring

Interesting idea on how to schedule large refactorings and make sure they happen over time.

https://max.engineer/long-term-refactors


A Plea for more Mikado - Software Engineering and Stuff

Tags: tech, refactoring

Definitely a good approach for larger refactorings or preparing major upgrades.

https://dmathieu.com/articles/opinions/mikado/


Manage like an engineer | Ben Balter

Tags: tech, software, engineering, management

Interesting idea, why not use similar workflows than to develop software? For sure this would bring more transparency and automation, should help focusing on higher value tasks.

https://ben.balter.com/2023/01/10/manage-like-an-engineer/



Bye for now!

A lot has happened since the last update on KDE Itinerary, with the transition to Qt 6 finally completed, public transport coverage extended to more countries, a new journey map view and many more fixes and improvements.

New Features

Journey map view

Mathis added a map view to the journey details page, so besides a list view of all stops you can now alternatively look at the route of a bus or train trip on a map as well.

Screenshot showing a map of the route of a train connection from Zürich HB to Visp.
Map view of a train connection.

Clicking on intermediate or final stops will show additional information such as the platform and provides access to the detailed station map.

Extended public transport coverage

Jonah has put quite some effort into filling the gaps in public transport data coverage in Europe, adding support for the following providers to the KPublicTransport library:

  • Pasažieru vilciens (Latvia)
  • LTG Link (Lithuania)
  • Željeznički prevoz Crne Gore (ŽPCG) (Montenegro)
  • Srbijavoz (Serbia)
Screenshot showing a train connection between Riga and Vilnius.
Journey search result for a train connections between Latvia and Lithuania.

This not only benefits Itinerary but also KTrip.

Swapping arrival and departure location

A small but often requested convenience feature for the journey search has been added, the ability to swap arrival and departure stations with a single action.

Screenshot showing a swap button between the arrival and departure station search fields.
Arrival/departure swap button in the upper right.

Infrastructure Work

Qt 6 port

Itinerary and all its dependencies finally completed the switch to Qt 6 in December. Despite the lengthy preparations for this a number of issues were only uncovered in the final steps of that process:

  • Kirigami’s new way of displaying context actions clashes with Itinerary’s custom navigation bottom bar.
  • Subtle changes in QVariant comparison behavior resulted in excessive timeline updates.
  • Various default values in Kirigami and/or the Qt Quick Controls styles changed affecting list elements, ListView clipping, dialog/overlay placements, etc.
  • There’s a behavior change for file dialog file type filters that lead to several support file types not being selectable on Android.
  • Behavior changes in how Kirigami handles non-square icons required changes in how we display public transport line icons.

There’s also immediate benefits from this of course:

  • Itinerary now uses the Breeze style on Android, which not only looks better but also reduces differences with the Linux version simplifying development and testing.
  • Qt 6 allowed us to optimize the initial data loading by skipping expensive CBOR/JSON compatibility checks.

Qt 6 based Flatpak and Android nightly builds

Users of the nightly builds already get the new Qt 6 based version. For Android that has been a seamless switch, Flaptpaks moved to a new location though:

flatpak install https://cdn.kde.org/flatpak/itinerary-nightly/org.kde.itinerary.flatpakref

With Itineray being one of the more complex Android apps of KDE switching that to Qt 6 also exposed a number of remaining issues in the entire stack:

  • Temporary content: URIs like used when sharing attachments from an email program to Itinerary were not readable by Qt anymore (fixed in Qt).
  • Timezone lookup by IANA id performance is rather poor with Qt 6, which affects startup time if you have lot of data in Itinerary (partially worked around, fix for Qt pending).
  • Reporting of flipped video frames in Qt Multimedia now works correctly on Android, resulting in a previous workaround for that causing upside-down barcode geometries (workaround removed in KF::Prison).
  • Qt Multimedia camera access crashed when being used after an app had been suspended (fixed in Qt).
  • Kirigami Addon’s new date and time picker didn’t correctly use Android’s native controls (fixed in Kirigami Addons).
  • Remaining uses of Qt5Compat andQt.labs.platform components in Kirigami and Kirigami Addons were removed, decreasing the APK size noticeably.

All of this also benefits other KDE Android apps.

Accessibility

Motivated by getting automated UI tests set up using the AT-SPI Selenium driver, interaction with Itinerary using the accessibility interface has been improved in many places. Besides changes in the application itself this has also resulted in improvements in Kirigami and Kirigami Addons and thus helping all apps using those.

There’s more work to do though, around combo boxes and the date picker for example.

And even though this is not yet integrated in the CI pipeline, the first few automated tests created that way have already caught regressions in the application and in the Kirigami framework.

OSM raw data tile server update

The fixes for OSM raw data tile server powering e.g. Itinerary’s train station maps addressing node order loss on directional lines as well as improving tile generation performance have now finally been deployed on maps.kde.org. This unblocks work on rendering directional features, and it’s also crucial for the investigations around routing mentioned below.

Indoor map routing

As mentioned in my report from 37C3 we now have a very promising looking approach for routing in our train station maps. Compared to “outdoor” routing this is challenging as this has to work with areas rather than graphs, and on multiple floors.

Implementation of a proof of concept continued and is meanwhile running integrated in our indoor map demo application.

Screenshot showing two parts of a route through Berlin central station, left side floor level 0 right side floor level 1, connected via escalators and stairs.
Multi-floor route through Berlin central station.

Fixes & Improvements

Travel document extractor

  • New or improved travel document extractors for Accor, B&B Hotels, BlaBlaBus, Deutsche Bahn, Egencia, Emirates, Hilton, Iberia, IRCTC, Lufthansa, Meininger, NS, Pretix, SNCB, SpiceJet.
  • Improved generic extractor for RCT2 tickets crossing the end-of-year boundary.
  • Improved generic extractor for schema.org JSON-LD or Microdata events.
  • Fix crash on action-less PDF links.
  • Improved support for full-day events.
  • Added schema.org annotations on foss.events making events from there directly importable.

All of this has been made possible thanks to your travel document donations!

Itinerary app

  • Improved support for actions defined by providers via schema.org annotations, such as registering for an event or reserving a table at an restaurants.
  • Onboard live data is now merged into the current journey state when available.
  • Automatically pick an appropriate text color for Apple Wallet passes that don’t specify a text color themselves but use a background image. This fixes passes sometimes being rendered unreadable under these conditions.
  • Fix manually selecting transfers in the timeline.
  • Request camera runtime permissions on Android when using the barcode scanner.
  • Move loading indicator out of the way once the first results of a public transport search are displayed.
  • Fixed public transport stop searches after changing the country combo box.
  • Fixed seat section in train page not sometimes showing up correctly.
  • Added average speed statistics on the journey page.
  • Fixed import of large backups on Android.

FOSDEM

FOSDEM 2024

If you are at FOSDEM tomorrow or the day after don’t miss to meet us at the KDE stand, in building H this time!

How you can help

Feedback and travel document samples are very much welcome, as are all other forms of contributions. The KDE Itinerary workboard or the more specialized indoor map workboard show what’s on the todo list, and are a good place for collecting new ideas. For questions and suggestions, please feel free to join us in the KDE Itinerary Matrix channel.