Skip to content

Friday, 11 April 2025

Friday, 11 April 2025

KDE today announces the release of KDE Frameworks 6.13.0.

KDE Frameworks are 72 addon libraries to Qt which provide a wide variety of commonly needed functionality in mature, peer reviewed and well tested libraries with friendly licensing terms. For an introduction see the KDE Frameworks release announcement.

This release is part of a series of planned monthly releases making improvements available to developers in a quick and predictable manner.

New in this version

Attica
  • Add missing include mocs. Commit.
  • It compiles fine without qt6.9 deprecated methods. Commit.
Baloo
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
Bluez Qt
  • It compiles fine without qt6.9 deprecated methods. Commit.
Breeze Icons
  • Add symbolic links for telegram-desktop new icon names. Commit. See bug #502049
Extra CMake Modules
  • Add missing include mocs. Commit.
  • ECMAddTests.cmake: add support to pass environment variables and compile definitions. Commit.
  • Tests: Fix cmake deprecation warning. Commit.
  • ECMEnableSanitizers.cmake: replace tabs with spaces. Commit.
  • KDECompilerSettings: default to C++20 for level 6.13. Commit.
  • ECMEnableSanitizers.cmake: fix GCC's "note: variable tracking size limit exceeded" when using asan. Commit.
Framework Integration
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
  • Add a TODO note to drop knsrc alias workaround. Commit.
KArchive
  • Remove duplicate deprecation attribute. Commit.
  • Silence nodiscard warning. Commit.
  • Add missing since information. Commit.
  • Properly deprecate addEntry/removeEntry. Commit.
  • Handle Zip64 extra field in central directory. Commit. See bug #403899
  • Kzip: Remove repeated code for header detection. Commit.
  • Kzip: Fix misdetection of nested signatures, handle Zip64 data descriptors. Commit. Fixes bug #450597
  • Kzip: Detect Zip64 end of central directory records. Commit.
  • Kzip: Add various test cases. Commit. See bug #403899. See bug #450597
  • Add support for reading encrypted 7z archives. Commit.
  • Mark addEntry as deprecated, replaced with addEntryV2. Commit.
  • Add test files. Commit.
  • Fix QIODevice double deletion in KArchive::close(). Commit.
  • Introduce and use KArchiveDirectory::removeEntryV2. Commit.
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • Fix buffer boundary check in K7ZipPrivate::readNumber. Commit.
KAuth
  • Add missing include mocs. Commit.
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
KBookmarks
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
KCalendarCore
  • Clean headers. Commit.
  • Remove unused warning pragma. Commit.
  • Port to not deprecated methods. Commit.
  • It compiles fine without qt6.9 deprecated methods. Commit.
KCMUtils
  • Tools: Fix querying X-KDE-OnlyShowOnQtPlatforms. Commit.
  • Make kcmdesktopfilegenerator preserve X-KDE-OnlyShowOnQtPlatforms. Commit.
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
KCodecs
  • It compiles fine without qt6.9 deprecated methods. Commit.
KColorScheme
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
KCompletion
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
KConfig
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • KDesktopFile: Always put [Desktop Entry] group first. Commit.
  • Fix build warning. Commit.
  • Fix double unescaping of config keys. Commit.
KConfigWidgets
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
KContacts
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
KCoreAddons
  • Add missing include mocs. Commit.
  • Mimetypes: replace TODO comment with link to s-m-i MR. Commit.
  • Drop no longer needed export of KJobPrivate & KCompositeJobPrivate. Commit.
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • KDirWatch: Constify the 'path' variable. Commit.
  • Require CI to pass on FreeBSD. Commit.
  • KProcessList: Return login names based on ruid in the FreeBSD impl. Commit.
  • KDirWatch: Support the "direct" mode of the libinotify-kqueue library. Commit.
  • KShell:tildeExpand: Return filename if homedir is empty. Commit. Fixes bug #317513
  • Bump min required SharedMimeInfo to 2.1. Commit.
KCrash
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
KDav
  • CMakeLists.txt - Don't include quiet packages in the feature summary. Commit.
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
KDBusAddons
  • It compiles fine without qt6.9 deprecated methods. Commit.
KDeclarative
  • Add missing include mocs. Commit.
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
KDE Daemon
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
KDE SU
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
KDNSSD
  • It compiles fine without qt6.9 deprecated methods. Commit.
KDocTools
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
KFileMetaData
  • Add missing since information. Commit.
  • [Office2007Extractor] Fix Keywords handling in OPC CoreProperties. Commit.
  • [Office2007Extractor] Add support for 3MF and XPS formats metadata. Commit.
  • [Office2007Extractor] Fix several more OPC violations, cleanup. Commit.
  • [Office2007Extractor] Avoid double lookup of ZIP file entries. Commit.
  • Use categorized logging in all extractors. Commit.
  • Print diagnostic error string from KArchive if opening files fail. Commit.
  • Ffmpegextractor: extract video and audio codec, pixel format and color space. Commit.
  • [ExtractorCollection] Don't print warning for valid metadata. Commit.
  • [Dump utility] Use QGuiApplicaton as required by some extractors. Commit.
  • [MobiExtractor] Add debug message for invalid or DRMed files. Commit. See bug #482420
  • Mobiextractor.cpp - fix compile for ENABLE_TEXT_EXTRACTION undefined. Commit.
  • [MobiExtractor] Disable buggy text extraction by default. Commit. See bug #475975. See bug #482420. See bug #489275
KGlobalAccel
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
KGuiAddons
  • Add support for high-contrast mode on Windows. Commit.
  • It compiles fine without qt6.9 deprecated methods. Commit.
KHolidays
  • .krazy - modernize. Commit.
  • Add codespelling capability to the project (and fix misspellings). Commit.
  • Use "kholidays_debug.h" rather than <kholidays_debug.h>. Commit.
  • Update for 2025. Commit.
  • Holidayparserplan.cpp - comment unused variable. Commit.
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • Add public holidays for Puerto Rico. Commit.
KI18n
  • Use iso-codes' common_name field for country names when present. Commit. Fixes bug #501968
  • It compiles fine without qt6.9 deprecated methods. Commit.
KIconThemes
  • Fix missing initialization and copying of activeText. Commit.
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
KIdletime
  • It compiles fine without qt6.9 deprecated methods. Commit.
KImageformats
  • Add missing include mocs. Commit.
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • PSD: use linear profile on float images. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
  • Write tests for hej2 format. Commit.
  • Heif: enable saving of hej2 format. Commit.
  • CI: Enable heif so we make sure it compiles. Commit.
  • Writetest: special handling for HEIF format. Commit.
  • Readtest: special handling for HEIF format. Commit.
  • Heif: disable AVCI decoder for libheif before 1.19.6. Commit.
  • SKIP tests when libheif configuration is incomplete. Commit.
  • Heif: enable reading images with native 16 bit depth. Commit.
  • Use of heif_context_add_XMP_metadata instead. Commit.
KIO
  • Add missing include mocs. Commit.
  • KFileWidget and KDirOperator: Fix saving and loading preview settings. Commit. Fixes bug #501743
  • Add missing includes. Commit.
  • KUrlNavigatorButtonBase: Fix foreground color with accent color headers. Commit. Fixes bug #501803
  • PasteDialog: make text follow combobox and vice versa. Commit.
  • PasteDialog: make MIME type handling fancier. Commit. Fixes bug #499348
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
  • Fix touch interaction. Commit. Fixes bug #501708
  • SkipDialog: show msg with plaintext. Commit. Fixes bug #488910
  • KFileWidget: Allow saving single file with double quotes. Commit. Fixes bug #426728
  • Kurlnavigator: change frame border when in focus. Commit.
  • KCoreDirLister: use std::unordered_map for KCoreDirListerCacheDirectoryData. Commit.
  • KCoreDirLister: Refactor the two QLists for Holding and Listing KCoreDirListers into QHash. Commit.
  • RenameDialog: Enable word wrap for text content. Commit. Fixes bug #497732
  • Trash: Fix typo in ScanFilesInTrashOption enumeration. Commit.
  • KFileWidget: drop broken workaround for old s-m-i octet-stream file suffix. Commit. Fixes bug #501085
  • Use appropriate icon for blank file. Commit. Fixes bug #501462
  • KNewFileMenu: Forbid saving file or folder with ~USERNAME as name. Commit. See bug #317513
  • Scrolling with touch in KDirOperator. Commit.
Kirigami
  • Add missing since information. Commit.
  • ColumnView: More reliable touch horizontal scrolling. Commit.
  • ColumnView: watch columns implicitwidth change. Commit.
  • HeaderFooterLayout: introduce spacing property. Commit.
  • Add missing include mocs. Commit.
  • DialogLayer: force header style when on global pagestack. Commit.
  • PageRow: Fix the navigation buttons disappearing in certain situations. Commit.
  • Workaround for multiple engine types registration. Commit. Fixes bug #497616. Fixes bug #501945
  • Fix loading page header for pages with titleDelegate in PagePool. Commit.
  • Add missing include. Commit.
  • NavigationTabBar: don't use left/right padding in implicitWidth. Commit. Fixes bug #500229
  • NavigationTabBar: don't use availableWidth in contentWidth. Commit. Fixes bug #500229
  • Dialogs/DialogHeaderTopContent: always place close button top right. Commit.
  • Dialogs/DialogHeaderTopContent: remove margin instead of adding. Commit.
  • Increase KF/QT deprecated version. Commit.
  • Improve breeze icons install. Commit.
  • Layout/FormLayout: scroll to focus item if necesary. Commit.
  • BasicTheme: Allow creation without a QML engine. Commit.
  • NavigationTabButton: Don't bold selected. Commit.
  • Dialog: make header contents composable. Commit.
  • ShadowedImage: Hide ShadowedTexture with software rendering. Commit.
  • Dialog: guard even harder against null parent. Commit.
KItemModels
  • It compiles fine without qt6.9 deprecated methods. Commit.
KItemViews
  • It compiles fine without qt6.9 deprecated methods. Commit.
KJobWidgets
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
  • Kjobcreator: startElapsedTimer in Testjob::start. Commit.
KNewStuff
  • Add missing include mocs. Commit.
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
  • Attica/atticarequester: use logging categories. Commit.
  • Core/resultsstream: downgrade severity of "Finished" log message. Commit.
  • Core: use logging category. Commit.
  • Add AliasFor keyword. Commit.
KNotifications
  • KNotification: Update notification when action label changes. Commit.
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
KNotifyConfig
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
KPackage
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
  • Packagestructure_compat_p: add Icon field. Commit.
KParts
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
KPeople
  • It compiles fine without kf6.12 deprecated methods. Commit.
KPlotting
  • It compiles fine without qt6.9 deprecated methods. Commit.
KPTY
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
KQuickCharts
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • Controls: Use implicit size for layout calculations in AxisLabels. Commit.
  • Controls: Use polish in AxisLabels instead of custom relayout queueing. Commit.
KRunner
  • Restore FavoriteCountRole enum value. Commit.
  • Add missing include. Commit.
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
  • Revert "Give favorites a relative boost rather than absolute sorting position". Commit. Fixes bug #489866
KService
  • KService: Don't skip action without executable. Commit.
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
KStatusNotifieritem
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
KSVG
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
KTextEditor
  • Fix build with Qt 6.10. Commit.
  • Try to improve test stability. Commit.
  • Don't move the cursor to the current drop location for file drops. Commit. Fixes bug #501618
  • Try to flush less often to disk. Commit. Fixes bug #501508
  • Adapt unit test to changes in KF::SyntaxHighlighting. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
  • Add Text to Speech actions to context menu. Commit.
  • Cut down to right integer size. Commit.
  • Use _commit for safer swap files on Windows. Commit.
  • Ensure we don't run into corner cases in Qt for font sizes. Commit. Fixes bug #500766
  • KateScrollBar: Add minimap actions to context menu. Commit.
  • Trigger dictionary load. Commit.
KTextTemplate
KTextWidgets
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
KUnitConversion
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
KUserFeedback
  • Remove qmake info as it was removed. Commit.
  • Port some code from foreach to for(...:...). Commit.
KWallet
  • Add missing include mocs. Commit.
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
  • Better salt generation. Commit.
KWidgetsAddons
  • Add missing include mocs. Commit.
  • Ktitlewidget: Remove mention of bold text in doc comments. Commit.
  • Ktitlewidget: Add a note that the default level is 1. Commit.
  • Ktitlewidget: Update links to KDE HIG. Commit.
  • It compiles fine without qt6.9 deprecated methods. Commit.
KWindowSystem
  • Remain bug-compatiable on older plasma. Commit.
  • Wayland: Avoid creating the platform window in surfacehelper. Commit. See bug #499383
  • It compiles fine without qt6.9 deprecated methods. Commit.
KXMLGUI
  • It compiles fine without kf6.12 deprecated methods. Commit.
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • Ensure KMainWindow::canBeRestored is working with no data. Commit. Fixes bug #427552
Modem Manager Qt
  • It compiles fine without qt6.9 deprecated methods. Commit.
Network Manager Qt
  • It compiles fine without qt6.9 deprecated methods. Commit.
Prison
  • It compiles fine without qt6.9 deprecated methods. Commit.
Purpose
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • AlternativesModel: Always reset model when initializing. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
  • Clipboard: Set clipboard text, too, if applicable. Commit. See bug #501811
  • JobDialog: Cancel when closing window. Commit.
QQC2 Desktop Style
  • Add missing include mocs. Commit.
  • Frame: Use corner radius. Commit.
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
Solid
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • Return model (or vendor) if the battery technology is unknown. Commit.
  • Backends/fstab: override StorageAccess check signals. Commit.
Sonnet
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • Speller: Load dictionary on demand. Commit.
Syndication
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • It compiles fine without kf6.12 deprecated methods. Commit.
Syntax Highlighting
  • Add Devicetree Source syntax highlighting. Commit.
  • CMakeLists.txt - Don't include quiet packages in the feature summary. Commit.
  • Fix build with Qt 6.10. Commit.
  • It compiles fine without qt6.9 deprecated methods. Commit.
  • Update Elixir Syntax, Add EEx/HEEx. Commit.
  • Add "echo" keyword to Gleam. Commit.
  • Add example SPDX and alerts comments in test.gleam. Commit.
  • Replace inlined license by SPDX-License-Identifier in gleam.xml top comment. Commit.
  • Refactor alerts keywords to crash keywords and add import keyword list. Commit.
  • Increment gleam.xml version number. Commit.
  • Add example documentation comments. Commit.
  • Refactor comments and improve import highlighting. Commit.
Threadweaver
  • It compiles fine without qt6.9 deprecated methods. Commit.

Thursday, 10 April 2025

Wednesday, 9 April 2025

Some time ago we reached out to Wesley Gardner because, a bit belatedly, we saw he has published a great book on Krita, titled Draw and Paint Better with Krita.

For krita.org, Wesley wrote an introduction to his book!


Teaching art has been a passion of mine for a long time, and seeing students find their “inner voice” and push through barriers they thought insurmountable is one of the coolest things in the world. In 2021, I was approached to write a “how to digital paint” book, geared towards beginners to digital art, but with the goal of also having enough weight to give intermediate and advanced digital artists some fun exercises as well. Without second thought, I agreed, and knew that Krita would be the focal point of the book. Thus, in 2022, ‘Draw and Paint Better with Krita’ was published worldwide, and has become a sort of “guardian angel” guide for artists around the world, which I’m super humbled by and grateful for.

:

Krita’s everything that I believe digital art is about: Open access, customizable to fit your needs, easy to get started, and impossible to master. There’s always something new to learn in art, and likewise, there’s always something fun to learn in Krita. Whether it’s the various effects you can get with the ever-expanding layer management and adjustments, or the near-infinite pool of incredible custom brushes made by the community, there’s ALWAYS a new way to push yourself to that next level in your journey.

Cover

I’ve been a Krita user since Krita 3, and seeing how much it has evolved and expanded in the past few years has been unbelievable! It’s always installed on EVERY machine that I make art on, and is one of my “must-download” softwares the moment I get a new machine. It’s one of those programs that grows with you, and can handle absolutely anything you can throw at it. I’ve produced personal work and art prints, as well as professional client work for the likes of Star Wars, Warhammer 40k, and Riot Games, and the program never breaks a sweat. When I’m stumped on what type of video to make for my YouTube channel, I can always fall back on playing around in Krita, as it’s always a treat to poke around and learn new workflows.

Writing the book on Krita was a no-brainer, as I think learning Krita can help you learn ANY digital painting software, as the workflows are so similar. It’s the perfect entry-point for every artist that wants to work digitally, and it’s the perfect ending point for tenured veterans that need a little bit of “extra spice” to finish off their work and build their brand. If there’s one digital art program every single person needs on their machine, it’s Krita.

For real, what CAN’T Krita do? Go join the forums, be part of the community, and (if you’re financially able to, of course) donate somewhat regularly to the Krita Foundation. They do incredible work, and the fact that Krita’s available on Windows, Mac, AND Linux, for FREE, is still some sort of wizardry I can’t wrap my head around. For the Krita Team: Keep knocking it out of the park, it’s an honor to be a part of the Krita legacy, and for the team, and all artists out there:

Go make cool art.

Monday, 7 April 2025

Icy morning Witch Wells Az
Icy morning Witch Wells Az

Life:

Last week we were enjoying springtime, this week winter has made a comeback! Good news on the broken arm front, the infection is gone, so they can finally deal with the broken issue again. I will have a less invasive surgery April 25th to pull the bones back together so they can properly knit back together! If you can spare any change please consider a donation to my continued healing and recovery, or just support my work 🙂

Kubuntu:

While testing Beta I came across some crashy apps ( Namely PIM ) due to apparmor. I have uploaded fixed profiles for kmail, akregator, akonadiconsole, konqueror, tellico

KDE Snaps:

Added sctp support in Qt https://invent.kde.org/neon/snap-packaging/kde-qt6-core-sdk/-/commit/bbcb1dc39044b930ab718c8ffabfa20ccd2b0f75

This will allow me to finish a pyside6 snap and fix FreeCAD build.

Changed build type to Release in the kf6-core24-sdk which will reduce the size of kf6-core24 significantly.

Fixed a few startup errors in kf5-core24 and kf6-core24 snapcraft-desktop-integration.

Soumyadeep fixed wayland icons in https://invent.kde.org/neon/snap-packaging/kf6-core-sdk/-/merge_requests/3

KDE Applications 25.03.90 RC released to –candidate ( I know it says 24.12.3, version won’t be updated until 25.04.0 release )

Kasts core24 fixed in –candidate

Kate now core24 with Breeze theme! –candidate

Neochat: Fixed missing QML and 25.04 dependencies in –candidate

Kdenlive now with Galxnimate animations! –candidate

Digikam 8.6.0 now with scanner support in –stable

Kstars 3.7.6 released to –stable for realz, removed store rejected plugs.

Thanks for stopping by!

In this blog post, I would like to talk about the improvements in documentation navigation you can see in the Qt Framework's documentation for the Qt 6.9 release. 

Sunday, 6 April 2025

As a former Apple guy, it pains me a bit to say this, but I’m coming to believe that the whole “It Just Works” thing is a temporary illusion.

Oh, it can be achieved! But the real trick lies in keeping it. This came to mind while I was watching a video about one of Bambu Labs’ very impressive-looking Apple-style “It Just Works” 3D printers, and felt myself drawing a parallel between the world of 3D printing and our more familiar KDE world.

As I mentioned recently, my first real introduction to the world of free software was 15 years ago with 3D printers, back when the field was dominated by RepRap hackers designing open hardware and software. And last year, I bought a new printer for the first time in over a decade. After drooling over a bunch of very cool Vorons, I eventually settled on a Prusa Mk4 instead of a different Bambu printer that looked very impressive at the time: printing faster, having an enclosed chamber and smoother wireless functionality, being cheaper, and looking prettier.

But the Prusa felt like KDE: simple by default, but powerful when needed. Big friendly community. Built by a company led by one of the early RepRap hardware hackers. Buying it was investing in the people helping to keep their part of the industry open, rather than private. No spyware, no lock-in, no phone app or internet connection needed. Can’t be bricked if the company goes out of business. Open, hackable, humane, trustworthy.

I’m making this sound like the decision was some sort of ideological compromise, but the Prusa Mk4 is also excellent. It’s as good or better in many ways, almost as much in others, and its UX still pretty polished. Maybe it’s not Apple polished, but it’s very easy to use and produces great prints. I did have to invest a bit more time and money into the Prusa upfront, but now I have a tool I can truly rely on, not because it’s got a seamless auto-updating cloud-based AI-enabled UI, but because it doesn’t.

And since then, both companies went in exactly in the directions I expected: Prusa released a new version of their printer that’s cheaper and better, plus a $100 kit for existing owners so they don’t have to buy a whole new thing… while Bambu released a firmware upgrade that lets them control how your Bambu printer can be used.

It Just Works… until it doesn’t.

I’m glad I went with the Prusa, the same way we’re all glad we went with KDE over Apple or Microsoft. In KDE we know this well, so it’s up to us to spread the message to everyone else: resist the lure of “easier now, screwed later.” This is where the big commercial offerings start to fail: anything proprietary and closed source that Just Works may simply stop working at any time. You’ll invest in it, and it’ll work out great for a while, but then start to worsen, break, or exploit you.

Even as we invest in making our software easier to use, we need to level the playing field by advertising our advantages in ownership, privacy, personalization, and freedom. Our software is trustworthy because it can’t be taken away by us or anyone else; you’ll be able to use it over the long term, developing skills and efficiencies over time. Investing in KDE is investing in yourself, rather than someone else’s bottom line.

Saturday, 5 April 2025

Last week I attended this year’s FOSSGIS Konferenz in Münster, Germany, focusing on public transport and indoor navigation topics.

Group photo of the FOSSGIS 2025 conference attendees.
Photo by FOSSGIS e.V./Sergey Mukhametov, CC-BY-SA

Indoor Navigation

We use indoor map rendering and indoor routing in KDE Itinerary for e.g. train stations. There were a number of interesting talks and discussions in that area:

  • A 2.5D visualization of buildings and especially of the vertical connectivity (stairs, elevators, etc) between floors, by a team from TU Dresden, with a free implementation available. Compared to our current 2D view this makes it easier to understand how to move between floors, but it brings new challenges as well (video).
  • Indoor localization and routing including an AR demo by the German Federal Agency for Cartography and Geodesy (BKG). The routing is done via Unity, which uses the same library underneath that we use as well. Localization is using a mix of sensors available in normal smart phones, which is particularly interesting for us. Unfortunately like most similar systems the implementation isn’t published (talk).
  • Work on importing building geometries for 400+ buildings of TU München, using IFC BIM data. That’s the best way to get high-quality building geometries into OSM I think, but while there has been previous work on building an import toolchain for this, getting the actual BIM data has been elusive due to various concerns by building owners.
  • Modelling and tagging of infrastructure in and around train stations in OSM (session notes).

And of course there was also the yearly offline FOSSGIS edition of the OSM indoor meetup for connecting everyone working on that subject (translated session notes).

Open Transport

The other big topic for me was public transport routing, which we do in Transitous, for use in Itinerary and many other apps.

There were several talks and poster sessions in that area:

There also has been a lot of hallway track discussion on this:

  • Together with several MOTIS users and contributors we reviewed and updated the MOTIS feature wish list.
  • There are ideas for collaborating on a public transport optimized geocoder, between Nominatim, Transitous and other people needing this. Currently this is usually based on OSM data, but additionally using schedule data would allow things like considering the number of lines or trips at a stop for ranking. “Meta-stations” were another subject, ie. if you select “Paris” as the destination any of its major railway stations and airports would be expected destination, rather than just the first stop inside the city boundary.
  • GTFS data quality was a prevalent topic, including during the offline FOSSGIS edition of the Open Transport Meetup, and now also with the German Federal Agency for Cartography and Geodesy (BKG) joining everyone else in exploring the wonders of this. More eyes (and more pressure) can only help here.
  • Possible datasets for elevation models usable for routing, for Transitous something particularly interesting for first/last mile bike routing.
  • Plans for a Transitous sprint/hack weekend are getting a bit more concrete, with two promising options in June/July.
  • Ideas for improving Transitous’ outreach activities and social media presence/PR.

Also, if you are interested or involved in FOSS or Open Data topics around mobility/transit keep October 17/18 free, there’s an exciting announcement coming up shortly.

OSM

The FOSSGIS conference is of course much larger than just those two topics, and while those kept me occupied most of the time I managed to pick up a few more things as well:

And as always when hanging out with people from different communities there’s experiences to share on things like mentorship and funding programs as well as nowadays sadly also on defense measures to protect our infrastructure from overly aggressive AI crawler bots.

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

This was a week of smaller improvements: lots of stability enhancements user interface upgrades. All good preparation for Plasma 6.4, which will be released in a little over two months!

Notable UI Improvements

Plasma 6.4.0

Sticky Notes widgets that live in a panel can now have their pop-up pinned open, just like most other panel pop-ups. (Christoph Wolk, link)

Sticky note widget in panel with popup pinned open

Notifications no longer switch to scientific notation when showing extremely large numbers; now they always show normal numbers. (Nate Graham, link)

Did a round of UI polish on the crash reporting wizard to improve its layout, appearance, and text clarity. (Thomas Duckworth, link)

If you change the cursor blink rate (currently a hidden setting, but we may expose it in the GUI), this preference will now be synced to GTK-based apps too. (Kai Uwe Broulik, link)

KWin's Zoom effect and Plasma's desktop mouse wheel actions are now much easier to trigger and end by scrolling with a touchpad or a mouse with a high resolution scroll wheel. (Xaver Hugl, link 1 and link 2)

Persistent notifications can now be sent to the notification history in case you don't want to look at them anymore, but keep them around for later, e.g. for timers. (Kai Uwe Broulik, link)

System tray with notification from KClock showing buttons to reset, pause, or extend the timer, or open the app

Improved the visuals of the portal-based account details request dialog. (Joshua Goins, link)

Dialog requesting access to user account data

Sound themes can now be applied with a double-click, same as other items on System Settings' grid-based theme chooser pages. (Kai Uwe Broulik, link)

Frameworks 6.14

Telegram's System Tray icons are once again Breeze-themed when using the Breeze Icon theme and Telegram version 5.12.4 or later; we had to create some symlinks to react to Telegram changing the icon names they use. (Rocket Aaron and Nate Graham, link)

Notable Bug Fixes

Plasma 6.3.4

Fixed a variety of small layout bugs in notifications: now URLs and long words wrap properly; the orange line on critical notifications no longer squares off the normally-rounded bottom-left corner; and internal paddings and spacings have been restored to exactly what they were in Plasma 6.2 and earlier, undoing some small layout changes unintentionally introduced with the big code refactor in Plasma 6.3. (Nate Graham, link 1, link 2, link 3, link 4, and link 5)

Stack of Plasma notifications showing improved sizing, spacings, and margins

The "Always open with this app" option in portal-based app chooser dialogs now actually works. (Nicolas Fella, link)

Plasma 6.3.5

Fixed a somewhat common Plasma crash related to power-cycling screens in multi-screen setups. (Marco Martin, link)

Fixed a bunch of bugs related to notifications not moving to new positions when they should under various circumstances. (Marco Martin, link)

When using multiple screens, reverting a change to one of the screen's settings no longer makes the UI inappropriately show the settings of the other screen. (Oliver Beard, link)

Plasma 6.4.0

Fixed a case where KWin could crash with misbehaving 3rd-party scripts. (David Redondo, link)

Fixed auto-update in Discover again, as part of a larger package of work to make the notifier tray widget behave more reliably and predictably. (Aleix Pol, link)

Switching pages in Plasma widgets' configuration dialogs no longer inappropriately prompts you to save or discard your changes when there were no changes! (Christoph Wolk, link)

Frameworks 6.13

Fixed a bug in Kirigami that resulted in Plasma widgets' config dialogs and "Get New [thing]" dialogs sometimes missing their header text or buttons. (Marco Martin, Link)

Other bug information of note:

Notable in Performance & Technical

Plasma 6.4.0

System Monitor and its widgets are now capable of getting statistics from Intel GPUs. (David Redondo, link)

Improved KWin's startup speed a little bit by not having it pointlessly compute font metrics for something that didn't really need to adjust with the font size anyway. (Aleix Pol Gonzalez, link)

Refactored the portal-based dialogs in a way that eliminates an entire class of crashes, both actual and potential. (David Redondo, link)

Made Plasma practically silent in its log output. This project is almost finished! (Christoph Wolk, link 1, link 2, link 3, link 4, link 5, link 6, and link 7)

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.

Work done so far

Move tracker for PvC game

Implemented the code for tracking the move played by player and computer in bohnenspiel TUI game.

It is achieved using getLastMove method initialized and defined in mankalaengine.h and mankalaengine.cpp. This method returns a pair containing the last moved as int played and the player as Player who made it.

During each iteration of the game loop, the above method is called for both player and computer to retrieve their respective last moves.

The above code in TUI file of bohnenspiel game variant is used to display the move played in the terminal.

The player move is tracked using user.getLastMove() and the computer move is tracked using opponent.getLastMove(). The game loop alternates between the player and the computer, updating the board and tracking moves after each turn. The last moves are printed after each turn. The computer’s move are adjusted by adding 6 to align it’s side of board(move 6-11).

How it works?

  1. Player’s Turn:
    • The player select the hole to play.
    • The move is played, and the board is updated.
    • The move is tracked using user.getLastMove().
  2. Computer’s Turn:
    • The computer select the hole to play.
    • The move is played, and the board is updated.
    • The move is tracked using opponent.getLastMove().

After each turn the last moves played are displayed.

What’s next

The next goal moving forward is to create a PvP game mode for two different users.

Friday, 4 April 2025

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


How crawlers impact the operations of the Wikimedia projects

Tags: tech, ai, machine-learning, gpt, criticism, knowledge

Unsurprisingly, Wikimedia is also badly impacted by the LLM crawlers… That puts access to curated knowledge at risk if the trend continues.

https://diff.wikimedia.org/2025/04/01/how-crawlers-impact-the-operations-of-the-wikimedia-projects/


Beyond Public Access in LLM Pre-Training Data: Non-public book content in OpenAI’s Models – Social Science Research Council (SSRC)

Tags: tech, ai, machine-learning, gpt, copyright, ethics

We just can’t leave the topic of how the big model makers are building their training corpus unaddressed. This is both an ethics and economics problem. The creators of the content used to train such large models should be compensated in a way.

Between this, the crawlers they use and the ecological footprint of the data centers, there are so many negative externalities to those systems that law makers should have cease the topic a while ago. The paradox is that if nothing is done about it, the reckless behavior of the model makers will end up hurting them as well.

https://www.ssrc.org/publications/beyond-public-access-in-llm-pre-training-data-non-public-book-content-in-openais-models/


AI ambivalence

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

I somehow recognise myself in this piece. Not completely though, I disagree with some of the points… but we share some baggage so I recognize another fellow.

https://nolanlawson.com/2025/04/02/ai-ambivalence/


Why I stopped using AI code editors

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

Even if you use LLMs, make sure you don’t depend on them in your workflows. Friction can indeed have value. Also if you’re a junior you should probably seldom use them, build your skill and knowledge first… otherwise you’ll forever be a beginner and that will bite you hard.

https://lucianonooijen.com/blog/why-i-stopped-using-ai-code-editors/


Pixelfed leaks private posts from other Fediverse instances - fiona fokus

Tags: tech, social-media, fediverse

Clearly the security practice around Pixelfed bears questioning. I’m also a bit surprise at the lack of protection of private messages in the ActivityPub protocol (even though it’s a hard admittedly a hard problem).

https://fokus.cool/2025/03/25/pixelfed-vulnerability.html


How to report a security issue in an open source project - Jacob Kaplan-Moss

Tags: tech, foss, security

This is considered standard practice at this point. The article does a good job explaining it and the reasoning behind it.

https://jacobian.org/2025/mar/27/reporting-security-issues-in-oss/


The Surprise of Multiple Dependency Graphs - ACM Queue

Tags: tech, dependencies, supply-chain

Dependency resolution is harder than people generally expect. This is a difficult problem and is very sensitive to the context.

https://queue.acm.org/detail.cfm?ref=rss&id=3723000


A Retrospective on the Source Code Control System

Tags: tech, version-control, history

This paper is a look back at SCCS. This is nice to see how much progress was made in version control systems since then, it’s also interesting to see how the design choices changed.

https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10821013


git-revise

Tags: tech, version-control, git, tools

Looks like a nice alternative to git rebase to manage patchsets. Definitely interesting if you’re using something like Gerrit. With other forges… It’ll depend how your reviews are handled I think.

https://mystor.github.io/git-revise.html


Tags: tech, version-control, git, codereview

Could be interesting if it gets standardized. Maybe other forges than Gerrit will start leveraging the concept, this would improve the review experience greatly on those.

https://lore.kernel.org/git/CAESOdVAspxUJKGAA58i0tvks4ZOfoGf1Aa5gPr0FXzdcywqUUw@mail.gmail.com/T/#u


Empowering WebAssembly with Thin Kernel Interfaces

Tags: tech, webassembly, virtualization, portability, research

This is interesting research. It shows nice prospects for WebAssembly future as a virtualization and portability technology. I don’t think we’ll see all of the claims in the discussion section realized though.

https://dl.acm.org/doi/pdf/10.11453689031.3717470


A Study of Undefined Behavior Across Foreign Function Boundaries in Rust Libraries

Tags: tech, rust, safety

Rust itself might bring interesting properties in term of safety. As soon as it needs to interact with other languages though the chances of undefined behavior increase drastically. This definitely pushes towards using more dynamic analysis tools to catch those.

https://arxiv.org/abs/2404.11671


Introducing Stringleton

Tags: tech, rust, memory, safety

Nice feature, but more interesting in its explanation is the topic of static initializers in Rust. They’re clearly not a settled area in the language, that’s in part because of how low level static analyzers are.

https://simonask.github.io/introducing-stringleton/


A pattern for obtaining a single value while holding a lock

Tags: tech, multithreading, c++

This is indeed a nice pattern to obtain a value, brings neat advantages.

https://devblogs.microsoft.com/oldnewthing/20250127-00/?p=110809


Deadlock-free Mutexes and Directed Acyclic Graphs

Tags: tech, multithreading, rust

Interesting trick to check at runtime that you always acquire mutexes in the same order.

https://bertptrs.nl/2022/06/23/deadlock-free-mutexes-and-directed-acyclic-graphs.html


Anime.js | JavaScript Animation Engine

Tags: tech, web, frontend, animation

Interesting JS library for animation on the Web. It’s nice that it seems really small.

https://animejs.com/


Learn CSS Layout The Pedantic Way

Tags: tech, web, frontend, css

Looks like a nice resource to deep dive into CSS layouts and really understand their behaviours.

https://book.mixu.net/css/


CSS System colors

Tags: tech, web, frontend, css, colors

Nice way to have a web frontend which respects the system color choices of the user.

https://anto.pt/articles/css-system-colors


Minimal CSS-only blurry image placeholders

Tags: tech, web, frontend, colors

This is a very smart way to create pure CSS placeholders.

https://leanrada.com/notes/css-only-lqip/


The Fifth Kind of Optimisation

Tags: tech, multithreading, optimization, rust

A good look back at parallelisation and multithreading as a mean to optimise. This is definitely a hard problem, and indeed got a bit easier with recent languages like Rust.

https://tratt.net/laurie/blog/2025/the_fifth_kind_of_optimisation.html


Ports and fat adapters

Tags: tech, architecture, complexity

A good reminder of why you often don’t want to follow an architecture pattern to the letter. They should be considered like guidelines and depending on your technical context you should properly balance the costs. Here is an example with the Ports and Adapters pattern in the context of an ASP.NET application.

https://blog.ploeh.dk/2025/04/01/ports-and-fat-adapters/


Thoughts on ECS | Voxagon Blog

Tags: tech, architecture, simulation, game

Nice post about pros and cons of ECS architectures.

https://blog.voxagon.se/2025/03/28/thoughts-on-ecs.html


The manager I hated and the lesson he taught me

Tags: tech, programming, engineering, leadership

For sure the aforementioned manager need to fix his communication style. That being said the core advice was indeed good.

https://www.blog4ems.com/p/the-manager-i-hated



Bye for now!