The $50,000 the Krita Foundation has received has been earmarked for improving Krita on Android. We've already started working on the project, in cooperation with Drawpile.
Last week I attended the 2025 edition of the CAP Implementation Workshop in Rome, Italy,
a three day conference around the use of the CAP protocol for emergency warnings.
Common Alerting Protocol (CAP)
The Common Alerting Protocol (CAP) is an OASIS
standard for exchanging emergency alerts between altering authorities (meteorological or hydrological institutes,
civil protection authorities, etc.) and alert dissemination channels (mobile network operators, media broadcast, sirens, etc.).
As that’s very widely used all over the world, including for global aggregation of alerts (e.g. by Google or by us),
there’s the yearly CAP Implementation Workshop as a forum for exchange between all those stakeholders. Besides
alerting authorities and aggregators/distributors this also included NGOs helping with and pushing for setting up
early warning systems for weather, climate or geophysical emergencies as well as equipment vendors
and researchers.
Alert Aggregators
With the FOSS Public Alert Server we have implemented
and operate a CAP alert aggregation service, which receives alerts from more than 200 sources.
This means we get to deal with alert feeds becoming temporarily unavailable, feeds changing their URL, different
interpretations of the data formats and other interesting issues in the alert data. All of that needs continuous
monitoring, investigating and working on resolving issues with the alert publishers or, when that’s not possible,
implementing technical workarounds.
We aren’t facing this alone though, it’s the same for all aggregators. In order to at least avoid duplicated
efforts there’s now plans to improve collaboration and establish a communication channel between the aggregators.
Perfectly timed we discovered a new issue during the conference which was triggering problems on our server as well,
caused by an alert feed reusing identifiers that were meant to be permanently unique.
Talk
Our talk on Thurday afternoon mainly focused on our observations and experiences with data availability, data
quality (particularly from an end-user perspective) and CAP standard ambiguities
(slides).
Q&A after the talk
This includes:
Alert feeds being inaccessible for automatic access due to captchas, geo-blocking, paywalls or outright denial of access.
Alert feeds preventing redistribution with license or copyright restrictions.
Alert feeds where the corresponding geocode geometry isn’t published.
Excessively detailed geometry and confusion between affected and to be alerted areas.
Different ways of implementing multi-lingual alerts.
The most important user-facing issue however is probably alerts stopping at borders while the corresponding emergencies or
disasters don’t, and we weren’t the only ones pointing that out.
That’s not a technical issue though, but a very political one.
Alert area for a toxic smoke cloud being clipped to state borders.
Alerting Authorities
The alerting authorities on the other hand have a very different view on this, being legally prohibited
from alerting outside of their corresponding jurisdiction. This is also part of the reason for excessively
detailed area geometries and additional technical complexity like device-based geofencing for more precise
cell broadcast targeting, ie. things I’d even consider counter-productive in many cases.
It’s not like this problem isn’t recognized by some alerting authorities at least, there’s e.g. some promising
collaboration for cross-border alerting between Belgium, Germany and the Netherlands.
There were other topics we were able to discuss with representatives from alert producers as well, such as:
Obtaining access to feeds we currently don’t have, such as non-weather alerts in Belgium or volcano warnings in Iceland.
Finally resolved an issue with wrong categories on non-weather alerts in Germany.
I had so far underestimated how much the Common Policies and Practices
document is relied upon to clarify room for interpretation and corner cases of the CAP standard, such as:
Polygon winding order and thus how to deal with geometry crossing the anti-meridian.
0-radius circles.
Alert content licensing.
Category and ETL event code translations.
Those are things we had encountered as well, so this helps. However, since those are merely common practices
and not requirements of the standard, we can’t rely on this and thus it’s not a viable solution for the anti-meridian
crossing geometry problem at least, as that remains ambiguous.
The other aspect that still needs a proper solution (which is in the works) is the ETL versioning issue,
that I at least only realized to the full extent while discussing this at the conference: There’s a
draft version
with completely different meanings of the event codes and which due to a misunderstanding appears to have the
higher version number.
To make matters worse, the key for those values is the same (OET:v1.0), so they aren’t distinguishable at all, which
practically means we can’t distinguish whether a warning is about a dust storm or a drug supply issue, nor whether
it’s about the fall of snow or space debris, for example.
That currently renders all existing ETL codes practically useless unfortunately.
Outlook
It’s always good to meet everyone involved in person, and this helped a lot with getting a better understanding of
the views and priorities of different stakeholders as well as with clarifying a number of details of CAP usage.
Let’s see what we can get going in terms of closer collaborations with other aggregators here.
This week we worked really hard on fixing bugs! Overall, Plasma 6.5’s rollout went smoothly. But there were some regressions, and we’ve been working on fixing them as quickly as possible. Hopefully the release of 6.5.2 on Tuesday should have all the important stuff sorted.
In addition, several features that have been in development for a while were merged for release in Plasma 6.6 in a couple of months. And with the urgency for madly fixing bugs receding, a bunch of UI improvements managed to make an appearance as well. There’s some really cool stuff here! Check it all out:
Notable New Features
Plasma 6.6.0
You can now configure your preferred level of visual boldness for the frames and outlines around Breeze-themed UI elements, or even turn them off entirely. This supports people who like everything to blend into everything else or only be separated by different background colors, as well as people who need high contrast accessibility-oriented color schemes. To learn more, see Akseli’s blog post on the topic. (Akseli Lahtinen, link)
When using hardware that supports it and version 6.19 or later of the Linux kernel, you’ll be able to adjust the visual “sharpness” of all content on the screen. (Adarsh G M, link 1, link 2, link 3, link 4)
Implemented the USB portal, which allows sandboxed apps to request access to USB devices. (David Redondo, link)
Notable UI Improvements
Plasma 6.5.2
Improved KRunner’s search result ordering, as the fuzzy feature introduced in Plasma 6.5 exposed and worsened some pre-existing deficiencies. Now KRunner will prioritize exact matches of names and keywords, substring matches anchored to the beginning of the name or caption, and substring matches in the middle, all before moving onto any fuzzy matches. (Harald Sitter, link 1, link 2, and link 3)
Changed the blur implementation in Plasma 6.5 to be more like it was in Plasma 6.4: now the “background contrast” effect is off by default and needs to be opted into, and the Breeze Plasma style does opt into it. This should resolve issues with blurs appearing brighter than intended, especially with dark color schemes and Plasma styles, and “fully transparent” Plasma styles. (Marco Martin, Vlad Zahorodnii, and Niccolò Venerandi, link)
Plasma 6.6.0
The slideshow wallpaper thumbnail grid that appears in a few places now has “Select All” and “Deselect All” buttons. (Adam S., link)
Improved the way some of the Info Center pages display their content. (Michał Kula, link)
The Breeze GTK theme has dispensed with button gradients, as the Breeze theme for Qt apps did a while ago. (Someone going by “chocolate image”, link)
All the sliders on System Settings’ Display & Monitor page now have the same width. (Vsevolod Stopchanskyi, link)
System Settings’ Bluetooth page has received some tweaks to better conform to the KDE Human Interface Guidelines: list item buttons are framed, the “Connect” buttons have visible text, and the page for the active device closes when Bluetooth is disabled. (Nate Graham and Ivan Tkachenko, link 1, link 2, and link 3)
You can now re-check for updates in Discover after existing updates have finished being installed and the app is prompting you to reboot. (Nate Graham, link)
Added a bit of needed padding to the top of the single-monitor layout on System Settings’ Wallpaper page. (Nate Graham, link)
You can now launch System Settings with Meta+I, which may be familiar to Windows refugees. (Méven Car, link)
Added “dxdiag” to the list of keywords that will let you find Info Center’s graphical info pages. Note to certain Phoronix commenters: the beatings will continue until morale improves. (Michał Kula, link)
Plasma’s text fields now use standard-style buttons for their inline actions, which improves visual consistency and accessibility. This change is also coming to KDE’s Kirigami-based apps in Frameworks 6.20. (Nate Graham, link)
Frameworks 6.20
The “starred/un-starred” icons used throughout Plasma and KDE apps now have margins that match other icons. (Nate Graham, link)
Notable Bug Fixes
Plasma 6.4.6
Fixed one of the only two known data loss issues in Plasma: where the text of a Sticky Note widget on the desktop could get lost if the note is created via middle-click-paste and never clicked in to focus it, or when Plasma crashed or the system lost power while the note had active focus with unsaved changes. Now the text is continuously auto-saved 10 seconds after the last change. (Nate Graham, link)
Screencasts of rectangular regions no longer lose resolution on screens using a scale factor higher than 100%. (David Redondo, link)
When using numberpad-based pointer movement and holding down the “5” key to simulate a press-and-hold, moving the pointer using a pointing device like a mouse no longer releases the drag prematurely. (David Redondo, link)
Fixed an issue that made wallpapers with certain symbols in their filenames fail to display thumbnail previews. (Kai Uwe Broulik, link)
Plasma 6.5.1
Fixed a case where KWin could crash when you disconnected a screen. (Xaver Hugl, link)
Fixed a bug preventing the “Swap Memory” column from showing up in System Monitor. (Arjen Hiemstra, link)
Fixed another source of the bug that made System Monitor widgets using the “Text Only” style appear empty after a restart. (Arjen Hiemstra, link)
Fixed a bug making the switch to enable and disable the firewall still interactive when no firewall backend is installed. (Kai Uwe Broulik, link)
Plasma 6.5.2
Fixed a case where KWin could crash after moving the pointer on certain external screens plugged into certain laptops with certain graphics drivers. (Xaver Hugl, link)
Fixed a case where the screen chooser could crash when you asked it to create a new virtual output. (Xaver Hugl, link)
Fixed a case where Discover could crash when accessing the “Installed” page on distros with asserts turned on that ship firmware files in their main repos. (Aleix Pol Gonzalez, link)
Fixed a regression that made it impossible to paste clipboard contents into WINE apps. (Vlad Zahorodnii, link)
Fixed a regression that broke copy-paste from certain apps to certain VMs. (Vlad Zahorodnii, link)
Fixed a regression that broke Spectacle’s options to exclude window shadows, borders, and titlebars from window screenshots. (Xaver Hugl, link)
Fixed a regression that could make the pointer get stuck in games played using WINE in native Wayland mode. (Xaver Hugl, link)
Fixed a regression that made the loopback interface visible in the Networks widget. (Nate Graham, link)
Fixed a regression that broke the Quick Launch widget’s off-by-default popup feature. (Nicolas Fella, link)
Fixed an issue that made Plasma inappropriately send notifications about loopback and other special connections after waking from sleep. (Kai Uwe Broulik, link)
Fixed an issue affecting the day/night color change feature with sunset times after midnight. (Vlad Zahorodnii, link)
Frameworks 6.20
Fixed one of the top 10 Plasma crashes which could happen to people using lots of System Monitor widgets. (Arjen Hiemstra, link)
Fixed a bug that made the open/save dialog not show any files when invoked by certain Flatpak apps that specified their supported mimetypes using file globbing. (David Redondo, link)
Qt 6.10.1
Fixed the most common Plasma crash in Qt. (Ulf Hermann, link)
Fixed a regression that made the glow effect for screen edges and corners not use the right color. (Hatem ElKharashy, link)
The virtual desktop limit has been raised from 20 to 25, allowing you to create perfect 5x5 grids if that’s the way you roll. (Blazer Silving, link)
Frameworks 6.20
Made a technical change to the way config file locking happens, which aims to prevent a rare case where Plasma could hang forever on login when using an LDAP-administrated home directory on an NFS share. (Sebastian Sauer, link)
How You Can Help
Donate to KDE’s 2025 fundraiser! It really makes a big difference. We’ve officially hit our €50k goal and are now working towards the stretch goal of €75k! This is the time of year when KDE does over half its fundraising, evidence of all your incredible generosity. Thank you everyone for helping to keep the lights on!
If money is tight, you can help KDE by directly getting involved. Donating time is actually more impactful than donating money. 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.
KWin, our fantastic and flexible window manager and Wayland compositor, can not just drive your session but also run in windowed mode for development purposes:
Et voila, a windowed KWin appears, running KWrite. The separate DBus session is important so it doesn’t mess with your running session, notably trying to take over your global shortcuts.
Speaking of shortcuts: when grabbing the mouse (press right Ctrl), it now blocks the session’s global shortcuts. This makes it behave more like a full “input grab” on X11. As a result, you can now use global shortcuts in your windowed KWin, for instance to more easily trigger the Overview effect (Meta+W), if you want to work on it without affecting your running session.
KWin also includes a debug console that lets you inspect open windows, see input devices and events, the state of the clipboard, load and unload desktop effects, and so on. We particularly moved developer-facing desktop effects (like the “Compositing” indicator or FPS effect that isn’t a benchmark) from System Settings to the debug console. You can access it by typing “kwin” in KRunner and selecting “KWin Debug Console”. Mind that it’s a developer tool, so function definitely outdoes form.
After a recent bug report about a blurry window icon in the Alt+Tab window switcher, I noticed that we didn’t include any information about the window’s icon. It would have been helpful to see the icon name used, if any, and what sizes were available. In fact, there were a couple of window properties using custom types that the debug console didn’t know how to visualize. I therefore added a couple of custom converters to the tree model:
QIcon, (e.g. window icon): Display the icon, its name, and list of available sizes. Generally, for properties of Window type, such as dialog parent (transient parent), also show the window icon
KWin::Output: the name of the output, its geometry, and scale factor
KWin::Tile (quick tile and custom tiles): its geometry, shape (e.g. floating) and/or quick tile mode (e.g. left/right)
KWin::VirtualDesktop: its name
QPalette (e.g. window color scheme): show a 2×2 grid of important theme colors, similar to the application color scheme selector we have in many apps
A lot more value in the debug console window list
With that, the list of windows becomes much more useful and nicer looking. For those who prefer a command-line tool, David Redondo added a little kwindowprop application similar to xwininfo that prints information about a given window.
I’m pleased to share that my career transition has been successful! I’ve joined our local county assessor’s office, beginning a new path in property assessment for taxation and valuation. While the compensation is modest, it offers the stability I was looking for.
My new schedule consists of four 10-hour days with an hour commute each way, which means Monday through Thursday will be largely devoted to work and travel. However, I’ll have Fridays available for open source contributions once I’ve completed my existing website maintenance commitments.
Open Source Priorities
Going forward, my contribution focus will be:
Ubuntu Community Council
Kubuntu/Debian
Snap packages (as time permits)
Regarding the snap packages: my earlier hope of transitioning them to Carl hasn’t worked out as planned. He’s taken on maintaining KDE Neon single-handedly, and understandably, adding snap maintenance on top of that proved unfeasible. I’ll do what I can to help when time allows.
Looking for Contributors
If you’re interested in contributing to Kubuntu or helping with snap packages, I’d love to hear from you! Feel free to reach out—community involvement is what makes these projects thrive.
Thanks for your patience and understanding as I navigate this transition.
I’m happy to see I’m actually very much aligned with one of the “Attention Is All You Need” co-authors. The current industry trend of “just scale the transformer architecture” is indeed stifling innovation and actual research. That said I find ironic that he talks about freedom to explore… well this is what public labs used to be about, but we decided to drastically reduce their funding and replace that with competition between startups. It’s no surprise we have very myopic views on problems.
Indeed, in most case you don’t need the extra complexity. Also interesting is showing that even if the application has to scale rapidly you still got quite some time to plan the transition to something else. It makes Postgres a sane default choice.
Indeed, WebDAV is too easily overlooked nowadays although it’s a respectable protocol with general availability. It’s likely available somewhere in what you already use.
A good introduction at the early steps when a process is started. Covers what happens in the kernel, the ELF interpreter and your language runtime before the main function is called.
Interesting notes about borrow checking in Rust. Looks like it does a good job exploring the whole space of issues one can encounter with potential solutions.
Serverless Is An Architectural Handicap (And I’m Tired of Pretending it Isn’t)
Tags: tech, cloud, architecture, complexity
A bit of an advertisement toward the end. That said, the evaluated constraints are completely valid. You don’t want to fit your whole code base into the “cloud function” model, only a few workloads will make sense there.
For a while now, probably two years, I wanted to have support for high-contrast colorschemes in KDE Plasma.
Technically, this was already doable, by just modifying your colorscheme to such colors.
However one thing was lacking: Outlines were calculated automagically with hardcoded value.
Well, no more! Now you can set your own frame contrast value!
And you may ask "Why not change the color completely?" which is a good question and
I will answer that later.
This feature will be in Plasma 6.6. Hopefully. Or if you use KDE Linux you can
already try it out. :)
The settings
This is how the settings will look like.
This setting used to be a slider.. And guess what, it did nothing in Breeze style.
It was leftover from Oxygen times. Do not worry though if you use Oxygen style, the
slider value is just percentage now and it will be converted to the value Oxygen uses.
Desktop examples
Some examples how it might look like in desktop setting.
All items are updated to follow this:
QtQuick windows (qqc2-desktop-style)
QtWidgets style and decorations (Breeze)
Plasma SVG files (Anything using class: ColorScheme-Frame )
There's still some bugs with panels not always updating immediately,
though we're working on fixing them.
Why not change the whole color?
Currently across all of our apps and styles, we do the following:
Take background color and foreground color
Mix them with previously hardcoded frameContrast value, which was 0.2
Use that as the color for all the frames
If we wanted this to be recolorable completely, we would have to go through every single occurence
of this color mixing. Most apps luckily rely on the styling, but some may have custom things,
for example custom QtQuick Controls that are doing this manually, using the Kirigami.Theme.frameContrast
value.
I think we most likely would have gotten away with it for most apps, but then rest of them would
look wrong, and some of them may not even be KDE apps but are using Kirigami.. So we would need
to tell everyone to do this update, or risk things look broken.
This was the compromise solution: Allow users to change the Kirigami.Theme.frameContrast value to
whatever they wish, even turn it off. :)
A lot of work
This was a lot of work. In total, it was 8 merge requests
that had to work together and be merged in correct order, etc..
And this is why modifying Breeze in our current stack is so difficult. You have to do many many changes
across the platform.. And make sure that nothing breaks in the process!
My first draft: Use kdeglobals
First step for me was trying to make this a global configuration value only in ~/.config/kdeglobals,
which every platform would watch for modifications for this particular value.
It worked fine, but it was quite messy, and I had to make sure all the default values across the
stack would be synced. That is annoying for anyone who wants to maybe modify the default value later.
On top of that, I felt like different platforms constantly watching the config file for changes just was
not a good idea..
Second draft: Use KColorScheme
After chatting with people, we decided it would be best to just add this as a new value into
our KColorScheme library. Instead of all the platforms looking for this configuration change,
only the KColorScheme library did it.
This allowed me to simplify the implementation significantly.
Summary of changes
All in all, I had to do the following:
Update KColorScheme to load this value from kdeglobals/current colorscheme | Link
Update the settings for plasma-workspace to allow users to change this value | Link
Update Breeze window decorations and QtWidgets style to use this value | Link
Update Kirigami platformtheme to notify any platforms that use it about the changes | Link
Update the libplasma library to actually listen for changes to this contrast value and change accordingly | Link
Update qqc2-desktop-style (QtQuick style) to listen for changes to this value and change accordingly | Link
Update KSvg library so that the Plasma styles can now use ColorScheme-Frame class to load correct color | Link
Update kde-gtk-config to make sure the Breeze GTK theme also updates correctly when value is changed | Link
Yeah. It's a lot. This took me about a week to work on.
A week to make one number user modifiable.
Now imagine how long it would have taken if I had made the whole color modifiable!
And remember, there's tons of legacy code here which rely on each other,
so I could not take shortcuts at places without possibly breaking everything.
And that's why Union was born
This is why Union is such an important project when it comes to styling,
and which is why we are most likely NOT going
to modify Breeze much further, aside maintenance: A lot of work for even small changes.
Union lets us have a "single source of truth." We can change things only in one place and (hopefully)
see the visuals update everywhere, be it QtQuick, QtWidgets or Plasma style or whatever we decide to support!
Which means easier to work on styling and iterate on it, designers have easier time collaborating because changes
do not take days.. Etc.
So I am putting more effort in Union from now on.
Summary and future
I felt this was important change due to accessibility reasons, so I did it. And I am happy that I did, even
if it was tons of work. (And there's more left with bugfixing lol.)
This will also help alleviate issues where people feel like our apps are too "framey." You can now
turn them off (well, you can make their color same as the background color) by setting the contrast to 0%.
I must warn you that setting the value to 0% will probably look broken at some places, so we will probably
have to add a warning to the color editor that "hey this is not optimal but you can do it lol."
In short-term future, I want this to be tied to the desktop portal interface for high-contrast accessibility preference:
When user has this enabled, be they on Plasma desktop or not, the applications will maximize
this frame contrast value automatically.
And then, there's bug hunting and finding out any weird inconsistencies. If you spot any, please
report them to https://bugs.kde.org!
In long-term, this whole color thing will be rewritten to something much more robust, shinier, fancier and
it will work with Union and everything is nice and beautiful. At least, that's what I hope.
I hope people will like this feature, especially those who need high-contrast colors.
Fedora 43 has been released!
🎉 So let’s see what is included in this new release for the Fedora Atomic Desktops variants
(Silverblue, Kinoite, Sway Atomic, Budgie Atomic and COSMIC Atomic).
Alongside the rest of Fedora, we are now compressing our initrds with the Zstandard (zstd) algorithm.
This should make the initrd a bit smaller and the boot a bit faster.
Alongside the rest of Fedora, systems will install with a 2GB /boot partition.
This should make things easier with the growing initrd sizes (mostly due to firmwares).
Existing systems will require a backup and re-install to benefit from this change.
We are adding the wireguard-tools to all variants.
Users can still use the graphical interface in their desktop environment to configure WireGuard connections.
However, it should now be easier to debug issues using the wg tool.
This change was decided too late to be included in the installation ISO but it will come via an update.
We temporarily removed the Third Party page shown during the first boot as it
was causing issues. Users will be asked if they want to enable Third Party
repositories when then open GNOME Software.
It will be re-enabled once we figure out where the bug is.
Updates are now automatically applied on a weekly basis, for Flatpaks and the
system. You can configure the frequency or disable auto-updates in the system
settings.
As always, I heavily recommend checking them out, especially if you feel like some things
are missing from the Fedora Atomic Desktops and you depend on them (NVIDIA drivers, extra
media codec, out of tree kernel drivers, etc.).
We have established a roadmap
(atomic-desktops-sig#26)
and we need your help to make this a smooth transition for all of our existing
users.
New home for the Fedora sysexts
We have moved the systemd system extensions (sysexts) to a new GitHub organization.
The sysexts are now split between those built exclusively from Fedora packages and those built from various community sources.
Make sure to update your systemd-sysupdate configs to point to the new URLs.
Your toolbox defines your craft. The freedom to choose, evolve, and master your tools is not just a productivity choice—it’s a long-term strategic decision that will put you in control of your craft, for life. Yet another reason to choose open source tools.