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

Monday, 10 February 2025

Moving KDE's styling into the future

Image Four applications, four different ways of styling.

Last year during Akademy I gave a talk called Union: The Future of Styling in KDE?!. In this talk I presented a problem: We currently have four ways of styling our applications. Not only that, but some of these approaches are quite hard to work with, especially for designers who lack programming skills. This all leads to it being incredibly hard to make changes to our application styling currently, which is not only a problem for something like the Plasma Next Initiative, but even smaller changes take a lot of effort.

This problem is not new; we already identified it several years ago. Unfortunately, it also is not easy to solve. Some of the reasons it got to this state are simply inertia. Some things like Plasma's SVG styling were developed as a way to improve styling in an era where a lot of the technologies we currently use did not exist yet. The solutions developed in those days have now existed for a pretty long time so we cannot suddenly drop them. Other reasons are more technical in nature, such as completely different rendering stacks.

Introducing Union

Those different rendering stacks are actually one of the core issues that makes this hard to solve. It means that we cannot simply use the same rendering code for everything, but have to come up with a tricky compatibility layer to make that work. This is what we currently do, and while it works, it means we need to maintain said compatibility layer. It also means we are not utilizing the rendering stack to its full potential.

However, there is another option, which is to take a step back and realise that we actually may not even want to share the rendering code, given that they are quite different. Instead, we need a description of what the element should look like, and then we can have specific rendering code that implements how to render that in the best way for a certain technology stack.

This idea is at the core of a project I called Union, which is a styling system intended to unify all our separate approaches into a single unified styling engine that can support all the different technologies we use for styling our applications.

Image The three separate parts of Union

Union consists of three parts: an input layer, an intermediate layer and an output layer. The input layer consists of plugins that can read and interpret some input file format containing a style description and turn it into a more abstract desciption of what to render. How to do that is defined by the middle intermediate layer, which is a library containing the description of the data model and a method of defining which elements to apply things to. Finally, the output layer consists of plugins that use the data from the intermediate layer and turn it into actual rendering commands, as needed for a specific rendering stack.

Implementing Things

This sounds nice on paper, but implementing it is easier said than done. For starters, everything depends on the intermediate layer being both flexible enough to handle varying use cases but at the same time rigid enough that it becomes hard to - intentionally or unintentionally - create dependencies between the input and output layers. Apart from that, replacing the entire styling stack is simply going to be a lot of work.

Image Plasma's SVG styling uses specially-marked SVG items for styling.

To allow us to focus more on the core we needed to break things down into more manageable parts. We chose to focus on the intermediate layer first, by using Plasma's SVG themes as an input format and a QtQuick Style as output. This means we are working with an input format that we already know how to deal with. It also means we have a clear picture of what the output should look like, as it should ultimately look just like how Plasma looks.

At this point, a lot of this work has now been done. While Union does not yet implement a full QtQuick style, it implements most of the basic controls to allow something such as Discover to run without looking completely alien. Focusing on the intermediate layer proved very useful, we encountered and managed to solve several pretty tricky technical issues that would have been even trickier if we did not know what things should look like.

Image Plasma Discover running using Union.

Union Needs You!

All that said, there is still a lot to be done. For starters, to be an actual unified styling system for KDE we need a QtWidgets implementation. Some work on that has started, but it is going to be a lot harder than the QtQuick implementation. We also need a different input format. While Plasma's SVG styling works, it is not ideal for developing new styles with. I would personally like to investigate using CSS as input format as it has most of what we need while also being familiar to a lot of people. Unfortunately, finding a good CSS parser library turns out to be quite hard.

However, at this stage we are at a point where we have multiple tasks that can be done in parallel. This means it is now at a point where it would be great if we had more people developing code, as well as some initial testing and feedback on the systen. If you are interested in helping out, the code can be found at invent.kde.org/plasma/union. There is also a Matrix channel for more realtime disucssions.

Discuss this article on KDE Discuss.

ahiemstra Mon, 02/10/2025 - 12:32

Kasts polishing, progress on Krita Qt6 port and Kdenlive fundraising report

Welcome to a new issue of "This Week in KDE Apps"! Every week we cover as much as possible of what's happening in the world of KDE apps. This issue contains change from the last two weeks.

Much happened the past two weeks, we had a successful KDE presence at FOSDEM, we now have a location and date for this year's edition of Linux App Summit (April 25-26, 2025 in Tirana, Albania) and also continued to improve our apps. Let's dive in!

Releases

  • KDE Gear 24.12.2 is out with some bugfixes.
  • Glaxnimate 0.6.0 beta is out. Glaxnimate is a 2d animation software and 0.6.0 is the first version of Glaxnimate as part of KDE. Checkout Glaxnimate's website.
  • KStars 3.7.5 is out with mostly bugfixes and performance improvements.
  • GCompris 25.0 is out. This is a big release containing 5 new activities.
  • Krita 5.2.9 is out. This is a bug fix release, containing all bugfixes of our bug hunt efforts back in November. Major bug-fixes include fixes to clone-layers, fixes to opacity handling, in particular for file formats like Exr, a number of crash fixes and much more!

Akonadi Background service for KDE PIM apps

We fixed an issue where loading tags was broken and would result in a constant 100% CPU usage. (Carl Schwan, 24.12.3. Link)

Elisa Play local music and listen to online radio

We now correctly re-open Elisa when it was minimized to the system tray. (Pedro Nishiyama, 24.12.2. Link)

Dolphin Manage your files

We made it possible to rename tabs in Dolphin. This action is available in each tab's context menu. This is useful for very long tab names or when it is difficult to identify a tab by a folder's name alone. (ambar chakravartty, 25.04.0. Link)

We also improved the keyboard based selection of items. Typing a letter on the keyboard usually selects the item in the view which starts with that letter. Diacritics are now ignored here, so you will for example be able to press the "U" key to select a file starting with an "Ü". (Thomas Moerschell, 24.12.3. Link)

We changed the three view buttons to a single menu button. (Akseli Lahtinen, 25.04.0. Link)

We made the "Empty Trash" icon red in conformance to our HIG as it is a destructive operation. (Nate Graham, 25.04.0. Link)

We improved getting the information from supported version control systems (e.g. Git). It is now faster and happens earlier. (Méven Car, 25.04.0. Link)

Falkon Web Browser

We added input methods hints to input fields. This is mostly helpful when using different input methods than a traditional keyboard (e.g. a virtual keyboard). (Juraj Oravec. Link)

KDE Itinerary Digital travel assistant

We continued to improve the coverage of Itinerary in Poland. This week we added support for the train operator Polregio, fixed and refactored the extractor for Koleo and rewrote the extractor for PKP-app to support the ticket layouts. (Grzegorz Mu, 24.12.3. Link 1, link 2, and link 3)

We also added support for CitizenM hotel bookings. (Joshua Goins, 24.12.3. Link)

We also started working on an online version of the ticket extractor. A preview is available on Carl's website.

Volker also published a recap of the past two months in Itinerary. This contains also some orthogonal topics like the free software routing service Transitous.

Kasts Podcast application

We fixed the vertical alignment of the queue header. (Joshua Goin, 25.04.0. Link)

We are now using Kirigami.UrlButton for links and Kirigami.SelectableLabel for the text description in the podcast details page to improve visual and behavior consistency with other Kirigami applications. (Joshua Goins, 25.04.0. Link)

We also improved the look of the search bar in the discovery page. It's now properly separated from the rest of the content. (Joshua Goins, 25.04.0. Link)

We added the ability to force the app to mobile/desktop mode. (Bart De Vries, 25.04.0. Link)

We fixed the sort order of the podcasts episodes. (Bart De Vries, 24.12.3. Link)

Finally we made various improvements to our usage of QML in Kasts to use newer QML constructs. This should improve slighly the performance while reducing the technical debt. (Tobias Fella, 25.04.0. Link 1, link 2, link 3, link 4, link 5, and link 6)

Kate Advanced text editor

We fixed some issues with the list of commits displayed in Kate. The highlight color is now correct and the margins consistent. (Leo Ruggeri, 25.04.0. Link)

We improved the diff widget of Kate. The toolbar icon sizes are now the same as other toolbars in Kate. (Leo Ruggeri, 25.04.0. Link)

Kdenlive Video editor

The Kdenlive team published a report about the result of their last fundraising. It contains a huge amount of great improvements, so go read it!

Added checkerboard option in clip monitor background (Julius Künzel, 25.04.0, Link)

Konqueror KDE File Manager & Web Browser

We fixed the handling of the cookie policy when no policy has been explicitly set. (Stefano Crocco, 24.12.3. Link)

Krita Digital Painting, Creative Freedom

The Krita team continued porting Krita to Qt6/KF6. The application now compiles and run with Qt6, but there are still some uni tests not working. Link to Mastodon thread

Krita with Qt6

Ramon published a video about "Memileo Brushes" on YouTube.

KRDC Connect with RDP or VNC to another computer

We implemented the dynamic resolution mode from the remote desktop protocol (RDP). This means we now resize the remote desktop to fit the current KRDC window. This works for Windows >= 8.1. (Fabio Bas, 25.04.0. Link)

We added support for the domain field in the authentication process. (Fabio Fas, 25.04.0. Link)

We adapted the code to work with FreeRDP 3.11. (Fabio Bas, 25.04.0. Link)

Marknote Write down your thoughts

We fixed the list of "Sort Notes List" option not being set by default. (Joshua Goins. Link)

We now properly capitalize the "undo" and "redo" actions. (Joshua Goins. Link)

We removed internal copies of some Kirigami Addons components in Marknote. (Joshua Goins. Link)

Okular View and annotate documents

We added a way to filter the list of certificate to only show certificates for "Qualified Signatures" in the certificate selection. (Sune Vuorela, 25.04.0. Link)

PlasmaTube Watch YouTube videos

We improved the placeholder messages for empty views. (Joshua Goins, 25.04.0. Link 1 and link 2)

We fixed displaying thumbnails and avatars when using the Peertube backend. (Joshua Goins, 24.12.3. Link, link 2, and link 3)

Barcode Scanner Scan and create QR-Codes

Qrca can now scan a QR code directly from an image instead of just from the camera. (Onuralp Sezer, 25.04.0. Link)

Tokodon Browse the Fediverse

We are now using more fitting icons for the "Embed" and "Open in Browser" actions in Tokodon's context menu. We also removed the duplicated "Copy to Clipboard" action from that context menu. (Joshua Goins, 24.12.3. Link and link 2)

Following the improvements from two weeks ago, we did even even more accessibility/screen reader improvements to Tokodon. (Joshua Goins, 24.12.3. Link)

…And Everything Else

This blog only covers the tip of the iceberg! If you’re hungry for more, check out Nate's blog about Plasma and be sure not to miss his This Week in Plasma series, where every Saturday he covers all the work being put into KDE's Plasma desktop environment.

For a complete overview of what's going on, visit KDE's Planet, where you can find all KDE news unfiltered directly from our contributors.

Get Involved

The KDE organization has become important in the world, and your time and contributions have helped us get there. As we grow, we're going to need your support for KDE to become sustainable.

You can help KDE by becoming an active community member and getting involved. Each contributor makes a huge difference in KDE — you are not a number or a cog in a machine! You don’t have to be a programmer either. There are many things you can do: you can help hunt and confirm bugs, even maybe solve them; contribute designs for wallpapers, web pages, icons and app interfaces; translate messages and menu items into your own language; promote KDE in your local community; and a ton more things.

You can also help us by donating. Any monetarnky contribution, however small, will help us cover operational costs, salaries, travel expenses for contributors and in general just keep KDE bringing Free Software to the world.

To get your application mentioned here, please ping us in invent or in Matrix.

Sunday, 9 February 2025

by Alexander Bokovoy and Andreas Schneider

FOSDEM 2025 is just behind us and it was a great event as always. Alexander and I had a chance to talk
about the local authentication hub project. Our FOSDEM talk was “localkdc – a general local authentication hub”. You can watch it and come back here for more details.

But before going into details, let us provide a bit of a background. It is 2025 now and we should go almost three decades back (ugh!).

The picture shows a fail authentication
Local authentication localkdc

History dive

Authentication on Linux systems is interwoven with the identity of the users. Once a user logged in, a process is running under a certain POSIX account identity. Many applications validate the presence of the account prior to the authentication itself. For example, the OpenSSH server does check the POSIX account and its properties and if the user was not found, will intentionally corrupt the password passed to the PAM authentication stack request. An authentication request will fail but the attempt will be recorded in the system journal.

This joint operation between authentication and identification sources in Linux makes it important to maintain a coherent information state. No wonder that in corporate environments it is often handled centrally: user and group identities stored at a central server and sourced from that one by a local software, such as SSSD. In order to consume these POSIX users and groups, SSSD needs to be registered with the centralized authority or, in other words, enrolled into the domain. Domain enrollment allows not only identity and authentication of users: both the central server and the enrolled client machine can mutually authenticate each other and be sure they talk to the right authority when authenticating the user.

FreeIPA provides a stable mechanism for building a centralized domain management system. Each user account has POSIX attributes associated with it and each user account is represented by the Kerberos principal. Kerberos authentication can be used to transfer the authentication state across multiple services and provides a chance for services to discover user identity information beyond POSIX. It also makes strong linking between the POSIX level identity and authentication structure possible: for example, a Kerberos service may introspect a Kerberos ticket presented by a user’s client application to see how this user was authenticated originally: with a password or some specific passwordless mechanism. Or, perhaps, that a client application performs operations on behalf of the user after claiming it was authenticated using a different (non-Kerberos) authentication.

Local user accounts’ use lacks this experience. Each individual service needs to reauthenticate a user again and again. Local system login: authenticate. Elevating privileges through SUDO? Authenticate again, if not explicitly configured otherwise. Details of the user session state, like how long this particular session is active, is not checked by the applications, making it also harder to limit access. There is no information on how this user was authenticated. Finally, overall user experience between local (standalone) authentication and domain-enrolled one differs, making it harder to adjust and educate users.

Local authentication is also typically password-based. This is not a bad thing in itself but depending on applications and protocols, worse choices could be made, security-wise. For example, contemporary SMB 3.11 protocol is quite secure if authenticated using Kerberos. For non-Kerberos usage, however, it is left to rely on NTLM authentication protocol which requires use of RC4 stream cipher. There are multiple attacks known to break RC4-based encryption, yet it is still used in majority of non-domain joined communications using SMB protocol simply because there was no (so far) alternative. To be correct, there was always an alternative, use of Kerberos protocol, but setting it up for individual isolated systems wasn’t practical.

The Kerberos protocol assumes the use of three different parties: a client, a service, and a key distribution center (KDC). In corporate environments a KDC is part of the domain controller system, a client and a service are both domain members, computers are enrolled in the domain. The client authenticates to KDC and obtains a Kerberos ticket granting ticket (TGT). It then requests a service ticket from the KDC by presenting its TGT and then presents this service ticket to the service. The service application, on its side, is able to decrypt the service ticket presented by the client and authenticate the request.

In the late 2000s Apple realised that for individual computers a number of user accounts is typically small and a KDC can be run as a service on the individual computer itself. When both the client and server are on the same computer, this works beautifully. The only problem is that when a user needs to authenticate to a different computer’s service, the client cannot reach the KDC hosted on the other computer because it is not exposed to the network directly. Luckily, MIT Kerberos folks already thought about this problem a decade prior to that: in 1997 a first idea was published for a Kerberos extension that allowed to tunnel Kerberos requests over a different application protocol. This specification became later known as “Initial and Pass Through Authentication Using Kerberos V5 and the GSS-API” (IAKerb). An initial implementation for MIT Kerberos was done in 2009/2010 while Apple introduced it in 2007 to enable remote access to your own Mac across the internet. It came in MacOS X 10.5 as a “Back to My Mac” feature and even got specified in RFC 6281, only to be retired from MacOS in 2019.

Modern days

In the 2020s Microsoft continued to work on NTLM removal. In 2023 they announced that all Windows systems will have a local KDC as their local authentication source, accessible externally via selected applications through the IAKerb mechanism. By the end of 2024, we have only seen demos published by Microsoft engineers at various events but this is a promising path forward. Presence of the local KDC in Windows raises an interoperability requirement: Linux systems will have to handle access to Windows machines in a standalone environment over SMB protocol. Authentication is currently done with NTLM, it will eventually be removed, thus we need to support the IAKerb protocol extension.

The NTLM removal for Linux systems requires several changes. First, the Samba server will need to learn how to accept authentication with the IAKerb protocol extension. Then, Samba client code needs to be able to establish a client connection and advertise IAKerb protocol extension. For kernel level access, the SMB filesystem driver needs to learn how to use IAKerb as well, this will also need to be implemented in the user space cifs-utils package. Finally, to be able to use the same feature in a pure Linux environment, we need to be able to deploy Kerberos KDC locally and do it in an easy manner on each machine.

This is where we had an idea. If we are going to have a local KDC running on each system, maybe we should use it to handle all authentication and not just for the NTLM removal? This way we can make both the local and domain-enrolled user experience the same and provide access locally to a whole set of authentication methods we support for FreeIPA: passwords, smartcards, one-time passwords and remote RADIUS server authentication, use of FIDO2 tokens, and authentication against an external OAuth2 Identity Provider using a device authorization grant flow.

How “local” a local KDC should be?

On standalone systems it is often not desirable to run daemons continuously. Also, it is not desirable to expose these services to the connected network if they really don’t need to be exposed. A common approach to solve this problem is by providing a local inter-process communication (IPC) mechanism to communicate with the server components. We chose to expose a local KDC via UNIX domain sockets. A UNIX domain socket is a well-known mechanism and has known security properties. With the help of a systemd feature called socket activation, we also can start local KDC on demand, when a Kerberos client connects over the UNIX domain socket. Since on local systems actual authentication requests don’t happen often, this helps to reduce memory and CPU usage in the long run.

If a local KDC is only accessible over a UNIX domain socket, remote applications could not get access to it directly. This means they would need to have help from a server application that can utilize the IAKerb mechanism to pass-through the communication between a client and the KDC. It would enable us to authenticate as a local user remotely from a different machine. Due to how the IAKerb mechanism is designed and integrated into GSS-API, this only allows password-based authentication. Anything that requires passwordless methods cannot obtain initial Kerberos authentication over IAKerb, at least at this point.

Here is a small demo on Fedora, using our localkdc tool to start a local KDC, obtain a Kerberos ticket upon login. The tickets can then be used effortlessly to authenticate to local services such as SUDO or Samba. For remote access we rely on Samba support for IAKerb and authenticate with GSSAPI but local smbclient uses a password first to obtain the initial ticket over IAKerb. This is purely a limitation of the current patches we have to Samba.

Make a pause here and think about the implications. We have an initial Kerberos ticket from the local system. The Kerberos ticket embeds details of how this authentication happened. We might have used a password to authenticate, or a smartcard. Or any other supported pre-authentication methods. We could reuse the same methods FreeIPA already provides in the centralized environment.

The Kerberos ticket also can contain details about the user session, including current group membership. It does not current have that in the local KDC case but we aim to fix that. This ticket can be used to authenticate to any GSS-API or Kerberos-aware service on this machine. If a remote machine accepts Kerberos, it theoretically could accept a ticket presented by a client application running on the local machine as well. Only, to do that it needs to be able to communicate with our local KDC and it couldn’t access it.

Trust management

Luckily, a local KDC deployment is a full-featured Kerberos realm and thus can establish cross-realm agreements with other Kerberos realms. If two “local” KDC realms have trust agreements between each other, they can issue cross-realm Kerberos tickets which applications can present over IAKerb to the remote “local” KDC. Then a Kerberos ticket to a service running on the target system can be requested and issued by the system’s local KDC.

Thus, we can achieve passwordless authentication locally on Linux systems and have the ability to establish peer to peer agreements across multiple systems, to allow authentication requests to flow and operate on commonly agreed credentials. A problem now moves to the management area: how to manage these peer to peer agreements and permissions in an easy way?

Systemd User/Group API support

MIT Kerberos KDC implementation provides a flexible way to handle Kerberos principals’ information. A database backend (KDB) implementation can be dynamically loaded and replaced. This is already used by both FreeIPA and Samba AD to integrate MIT Kerberos KDC with their own database backends based on different LDAP server implementations. For a local KDC use case running a full-featured LDAP server is not required nor intended. However, it would be great if different applications could expose parts of the data needed by the KDB interfaces and cooperate together. Then a single KDB driver implementation could be used to streamline and provide uniform implementation of Kerberos-specific details in a local KDC.

One of the promising interfaces to achieve that is the User/Group record lookup API via varlink from systemd. Varlink allows applications to register themselves and listen on UNIX domain sockets for communication similar to D-Bus but with much less implementation overhead. The User/Group API technically also allows to merge data coming from different sources when an application inquires the information. “Technically”, because io.systemd.Multiplexer API endpoint currently does not support merging non-overlapping data representing the same account from multiple sources. Once it would become possible, we could combine the data dynamically and may interact with users on demand when corresponding requsts come in. Or we can implement our own blending service.

Blending data requests from multiple sources within MIT KDC needs a specialized KDB driver. We certainly don’t want this driver to duplicate the code from other drivers, so making these drivers stackable would be a good option. Support for one level of stacking has been merged to MIT Kerberos through a quickly processed pull request and will be available in the next MIT Kerberos release. This allows us to have a single KDB driver that loads other drivers specialized in storing Kerberos principals and processing additional information like MS-PAC structure or applying additional authorization details.

Establishing trusts

If Alice and Bob are in the same network and want to exchange some files, they could do this using SMB and Samba. But that Alice can authenticate on Bob’s machine, they would need to establish a Kerberos cross realm trust. With the current tooling this is a complex task. For users we need to make this more accessible. We want to allow users to request trust on demand and validate these requests interactively. We also want to allow trust to be present for a limited timeframe, automatically expiring or manually removed.

If we have a Kerberos principal lookup on demand through a curated varlink API endpoint, we also can have a user-facing service to initiate establishing the trust between two machines on demand. Imagine a user trying to access SMB share on one desktop system that triggers a pop-up to establish trust relationship with a corresponding local KDC on the remote desktop system. Both owners of the systems would be able to communicate out of band that provided information is correct and can be trusted. Once it is done, we can return back the details of the specific Kerberos principal that represents this trust relationship. We can limit lifetime of this agreement so that it would disappear automatically in one hour or a day, or a week.

Current state of local authentication hub

We started with two individual implementation paths early in 2024:

  • Support IAKerb in MIT Kerberos and Samba
  • Enable MIT Kerberos to be used locally without network exposure

MIT Kerberos did have support for IAKerb protocol extension for more than a decade but since Microsoft introduced some changes to the protocol, those changes needed to be integrated as well. This was completed during summer 2024, though no upstream release is available yet. MIT Kerberos typically releases new versions yearly in January so we hope to get some updates early 2025.

Samba integration with IAKerb is currently under implementation. Originally, Microsoft was planning to release Windows 11 and Windows Server 2025 with IAKerb support enabled during autumn 2024. However, the Windows engineering team faced some issues and IAKerb is still not enabled in the Windows Server 2025 and Windows 11 releases. We are looking forward to getting access to Windows builds that enable IAKerb support to ensure interoperability before merging Samba changes upstream. We also need to complete the Samba implementation to properly support locally-issued Kerberos tickets and not only do acquisition of the ticket based on the password.

Meanwhile, our cooperation with MIT Kerberos development team led to advancements in the local KDC support. The MIT Kerberos KDC can now be run over a UNIX domain socket. Also on systemd-enabled systems we allow socket activation, transforming local KDC into an on-demand service. We will continue our work on a dynamic database for a local KDC, to allow on-demand combination of resources from multiple authoritative local sources (Samba, FreeIPA, SSSD, local KDC, future dynamic trust application).

For experiments and ease of deployments, a new configuration tool was developed, localkdc. The tool is available at localkdc and COPR repository can be used to try the whole solution on Fedora.

If you want to get that test tried in a simple setup, you might be interested in a tool that we developed initially for FreeIPA: FreeIPA local tests. This tool allows to provision and run a complex test environment in podman containers. The video of the local KDC usage was actually generated automatically by the scripts from here.

Saturday, 8 February 2025

Last weekend I attended this years edition of FOSDEM in Brussels again. Besides meeting old and new friends I focussed on emergency and weather alerting as well as public transport topics.

KDE

KDE had a stand again, this time in the minimally less crowded (on the FOSDEM scale of crowdedness at least) AW building, next to our friends from GNOME.

KDE stand at FOSDEM showing several different devices running KDE software as well a pile of stickers, t-shirts and amigurumi Konqis.
KDE stand (photo by Carl Schwan)

Besides getting stickers, t-shirts and even the rare handmade amigurumi Konqi mascots you could see KDE software running on a large range of devices, from laptops and phones to embedded boards, drawing tables and handheld gaming consoles.

Emergency & Weather Alerts

Together with Nucleus I had a talk on Saturday about the public alert server we have been working on.

This resulted in numerous interesting conversations:

  • There are people looking into getting access to alerts in other countries.
  • Learned about the CAP over XMPP standard (XEP 0127), which could be a more efficient way to receive CAP messages compared to the current high frequency CAP feed polling. We yet have to find a alerting authority supporting that though.
  • The Netherlands open-sourced their national weather app a few days prior to FOSDEM.
  • Possible approaches for integrating alerts with home automation systems, something particularly interesting in an accessibility context.
  • Adapting to UnifiedPush’s work on aligning with the WebPush standard.

There was also an interesting and somewhat related discussion on how to test cell broadcast, emergency calls and emergency location services on free mobile platforms. Especially testing emergency location services is tricky and not even the Google-free Android platforms have that at the moment as it’s part of Google Play Services rather than AOSP (ie. the closed source rather than the open source part of Android).

On the way to FOSDEM I managed to port the KDE public alert client to the new server API. It still needs a UI refresh though, as it’s based on a 5 era prototype.

KPublicAlerts showing a list of a few weather and health alerts, with a frost warning selected showing the affected area on a map.
KDE emergency and weather alerts client prototype.

Transitous

On Sunday Felix, Jonah and Marcus presented Transitous in the Railways and Open Transport track.

Transitou logo

As this was unfortunately the second to last talk of the event there wasn’t much time for discussions afterwards, but at least for several people involved with Transitous FOSDEM has been the first opportunity to meet in person. It’s great to see how this has grown in just one year.

For more of that, there was also a discussion about organizing a Transitous sprint/hack weekend.

Travel

Spending several hours on various trains to get there and back also provides plenty of opportunity for field-testing KDE Itinerary, which allowed the new and much more comprehensive and efficient realtime update approach using trip queries to be tested and integrated for 25.04.

Welcome to a new issue of "This Week in Plasma"! Every week we cover as much as possible of what's happening in the world of KDE Plasma and its associated apps like Discover, System Monitor, and more.

This week Plasma's contributors spent a lot of time putting the finishing touches on Plasma 6.3 before its final release in three days to make sure it's as good as possible!

Notable new Features

Plasma 6.4.0

There's now an option to make panel pop-ups use the floating style even when the panel itself doesn't use that style. (Niccolò Venerandi, link)

Notable UI Improvements

Plasma 6.4.0

Improved the appearance of the Welcome Center page that shows up after you've finished upgrading to a new Plasma feature release. (Oliver Beard, link)

(Here shown with the appearance it would have had for Plasma 6.2, since 6.4 doesn't exist yet!)

Info Center's energy graph now uses the system's accent color, rather than always being red. (Ismael Asensio, link)

When using software-based screen brightness, the minimum brightness level is now significantly darker. (Xaver Hugl, link)

Improved the Kate Sessions widget's keyboard navigation in multiple ways. (Christoph Wolk, link)

Frameworks 6.11

In the open/save dialogs used throughout KDE software, changes to the text in the filename field are now undo-able and the text field itself shows a little undo button. This is especially useful if you mis-click on a file while saving and accidentally overwrite the filename; now you can quickly undo that by clicking the button or pressing Ctrl+Z! (Marco Martin, Link)

Notable Bug Fixes

Plasma 6.3.0

Fixed a case where KWin could sometimes crash after resuming from sleep on certain hardware. (Xaver Hugl, link)

Fixed a case where System Settings' Firewall pager could crash during normal usage, and also fail to save changed settings properly. (David Edmundson, link l and link 2)

Fixed a performance issue caused by using the "Sidebar" Alt+Tab task switcher visualization that could eventually cause KWin to bog down or hang. (Marco Martin, link)

Fixed two glitches related to scrolling not working properly while System Monitor's "Configure Columns" dialog was open. (David Redondo, link)

When using the Kicker Application Menu widget with a right-to-left language like Arabic or Hebrew, its sub-menus now open to the left if there's space. (Christoph Wolk, link)

Fixed a subtle issue that could cause automatic screen sleep to stop working after apps block and unblock it multiple times. (David Redondo, link)

Uninstalling an app that was made a favorite in the Kickoff Application Launcher now removes it immediately, rather than only after a restart. (Harald Sitter, link)

Fixed the Mouse Click KWin effect so it works again in the X11 session. (Vlad Zahorodnii, link)

Fixed a case where the keyboard language System Tray icon could be missing on login in the X11 session. (Dark Templar, link)

Plasma 6.3.1

Fixed two intermittent crashes in the portal-based screen chooser dialog: one after selecting a virtual output, and another one after an app disconnects from a stream. (David Redondo and Fushan Wen, link 1 and link 2)

Fixed a case where opening a .flatpakref file in Discover could sometimes make it crash after launching. (Aleix Pol Gonzalez, link)

Fixed a case where Discover could sometimes crash while trying to load app reviews without network connectivity. (Fushan Wen, link)

Fixed a weird bug where repeatedly entering text in the Clipboard widget's search field and then deleting it could sometimes cause items in the list view to end up overlapping. (David Edmundson, link)

Improved the reliability with which a trashcan icon on the desktop detects when it should change its appearance based on the presence or absence of files in the trash. (Méven Car, link)

Non-square images used for the Kickoff Application Launcher's panel button are once again presented as expected. (Niccolò Venerandi, Link)

Plasma 6.4.0

Fixed two cases where text wasn't translated in Spectacle's placeholder config UI and Info Center's Energy page graph labels. (Noah Davis and Ismael Asensio, link 1 and link 2)

When a screen edge has multiple panels of different thicknesses, panel-pop-ups on the thinner panels now appear in the right place. (Niccolò Venerandi, link)

Frameworks 6.11

Fixed a case where Plasma could crash while trying to render SVG images, which it does a lot of. (Fushan Wen, link)

Fixed multiple bugs relating to focus and tab-ordering in the open/save dialogs used throughout KDE software. (Marco Martin, Link)

Fixed a visual bug most prominently affecting the System Tray, where icons could sometimes look blurry until hovered while using a fractional screen scale factor. (Marco Martin, link)

In the Properties dialog for symlinks on the desktop, the button to open Dolphin at the target's location now works. (Kamil Kaznowski, link)

Other bug information of note:

How You Can Help

KDE has become important in the world, and your time and contributions have helped us get there. As we grow, we need your support to keep KDE sustainable.

You can help KDE by becoming an active community member and getting involved somehow. Each contributor makes a huge difference in KDE — you are not a number or a cog in a machine!

You don’t have to be a programmer, either. Many other opportunities exist:

You can also help us by making a donation! Any monetary contribution — however small — will help us cover operational costs, salaries, travel expenses for contributors, and in general just keep KDE bringing Free Software to the world.

To get a new Plasma feature or a bugfix mentioned here, feel free to push a commit to the relevant merge request on invent.kde.org.

Friday, 7 February 2025

Let’s go for my web review for the week 2025-06.


Chatbot Software Begins to Face Fundamental Limitations | Quanta Magazine

Tags: tech, ai, machine-learning, gpt, mathematics, logic

When you put the marketing claims aside, the limitations of those models become obvious. This is important, only finding the root cause of those limitations can give a chance to find a solution to then.

https://www.quantamagazine.org/chatbot-software-begins-to-face-fundamental-limitations-20250131/


LLMs: harmful to technical innovation?

Tags: tech, ai, machine-learning, gpt, copilot, innovation, learning, vendor-lockin

This will definitely push even more conservatism around the existing platforms. More articles mean more training data… The underdogs will then suffer.

https://evanhahn.com/llms-and-technical-innovation/


Bad idea: “Artificial Intelligence” automatically improves productivity

Tags: tech, ai, machine-learning, gpt, copilot, programming, productivity

Be wary of the unproven claims that using LLMs necessarily leads to productivity gains. The impacts might be negative.

https://jchyip.medium.com/bad-idea-artificial-intelligence-automatically-improves-productivity-0829fcf2146c


The LLM Curve of Impact on Software Engineers

Tags: tech, ai, machine-learning, gpt, copilot, productivity, learning

Again it’s definitely not useful for everyone… it might even be dangerous for learning.

https://serce.me/posts/2025-02-07-the-llm-curve-of-impact-on-software-engineers


SQLite or PostgreSQL? It’s Complicated!

Tags: tech, databases, performance, postgresql, sqlite

It shows unexpected results in its measurements. It also highlights the importance of proper settings for your database system.

https://www.twilio.com/en-us/blog/sqlite-postgresql-complicated


Falsehoods programmers believe about null pointers | purplesyringa’s blog

Tags: tech, memory

If you didn’t realise that null pointers open a maze of different traps, this is a good summary of widespread misconceptions.

https://purplesyringa.moe/blog/falsehoods-programmers-believe-about-null-pointers/


String vs &str

Tags: tech, rust, memory

Another reminder that you don’t want reference to primitive types everywhere in Rust code. There’s actually ways to handle this properly. This post gives a couple of simple guidelines to apply.

https://blog.sulami.xyz/posts/string-vs-str/


py-free-threading

Tags: tech, python, multithreading

Looks like a nice resource to handle the coming move to free threaded Python.

https://py-free-threading.github.io/


Decorator JITs - Python as a DSL

Tags: tech, python, performance, jit

Nice exploration of JIT based techniques in Python.

https://eli.thegreenplace.net/2025/decorator-jits-python-as-a-dsl/


Big Packages or Many Dependencies

Tags: tech, supply-chain, dependencies, complexity

Indeed there is a tension between both approaches in package ecosystems.

https://v5.chriskrycho.com/notes/big-packages-or-many-dependencies/


Developer philosophy

Tags: tech, programming, learning

Definitely a good list of lessons to learn when you’re a junior developer.

https://qntm.org/devphilo



Bye for now!

Thursday, 6 February 2025

Glaxnimate 0.6.0 Beta has finally been released for testing!

It has been a while since the last release of Glaxnimate, but in the background we worked hard to make this first release under the KDE umbrella happen!

Please help us testing and report any issue you may encounter on https://bugs.kde.org/enter_bug.cgi?product=glaxnimate

Glaxnimate joins KDE

The Glaxnimate team is proud to announce Glaxnimate is now part of KDE. Glaxnimate benefits from the shared KDE build and distribution infrastructure, the collective knowledge of the community and libraries such as KDE Frameworks. This way the developers can spend more time on the code to fix bugs and develop new features for you!

Changes

Editing

  • The rotation handle now preserves rotation direction and multiple full rotations
  • Alt + click on keyframes cycles between built-in easing curves
  • Alt + click on bezier points cycles between tangent symmetry modes (Ctrl+click still works)
  • Changing a bezier point from corner to smooth will add tangents if they are missing
  • The import image dialog now allows importing multiple images at once

I/O

  • Added support for SVG text-anchor

User Interface

  • Middle mouse drag now pans the timeline
  • There is an icon on the timeline to quickly toggle keyframes
  • Buttons to jump to the next/previous keyframe in the timeline
  • Improved LottieFiles import dialog
  • Improved autosave recovery process
  • Script console now supports basic autocompletion

Scripting

  • Exposed method to add new compositions

Misc

  • Switched to an even/odd version numbering scheme
  • Integration with KDE Frameworks

Bug Fixes

  • Fixed keyframe context menu showing the wrong "after" transition
  • When drawing bezier points that don't have tangents are correctly marked as corner
  • The play button now resumes from the current frame rather than resetting to the start
  • Fixed saving custom templates
  • Toggling visibility / lock of a layer by clicking on its icon now adds an undo/redo action
  • Fixed LottieFiles import
  • Fixed dropping file as object
  • Fixed closing compositions from the tab bar
  • Fixed loading colors from older lotties
  • Shape modifiers marked as not visible are now correctly ignored
  • Fixed rendering of round corners modifier
  • Fixed "New Composition" action creating an invisible layer
  • Fixed repeater opacity not being applied correctly
  • Improved handling of repeater with stroke
  • Fixed SVG animation export
  • Fixed animated raster plugin I/O

How to get it

Note that this is a beta release. Most Linux distributions do not package unstable releases.

We recommend to test this release with one of the binaries we provide:

Packager Section

The source code tarball are available from the KDE servers:

URL: https://download.kde.org/unstable/glaxnimate/0.5.80

Source: glaxnimate-0.5.80.tar.xz

Signed by: 97B71AA02D63EA6C5C44C23B962AC48EF0501F0B Julius Künzel julius.kuenzel@kde.org

Over 180 individual programs plus dozens of programmer libraries and feature plugins are released simultaneously as part of KDE Gear.

Today they all get new bugfix source releases with updated translations, including:

  • kalk: Fixes for the History view (Commit)
  • dolphin: Fix pixelated preview images (Commit, fixes bug #497576)
  • kdevelop: Fix locations of Uses in macro expansions when using clang 19 or later (Commit, fixes bug #496985)

Distro and app store packagers should update their application packages.

Wednesday, 5 February 2025

Qt for MCUs 2.8.2 LTS (Long-Term Support) has been released and is available for download.  This patch release provides bug fixes and other improvements while maintaining source compatibility with Qt for MCUs 2.8. It does not add any new functionality.

Claude 3.5 Sonnet is the best LLM to write QML code when prompted in English. If you want to know why we reached this conclusion, keep reading.