Skip to content

Friday, 8 March 2024

Greetings, Kubuntu enthusiasts! It’s time for our regular community update, and we’ve got plenty of exciting developments to share from the past month. Our team has been hard at work, balancing the demands of personal commitments with the passion we all share for Kubuntu. Here’s what we’ve been up to:

Localstack & Kubuntu Joint Press Release


We’re thrilled to announce that we’ve been working closely with Localstack to prepare a joint press release that’s set to be published next week. This collaboration marks a significant milestone for us, and we’re eager to share the details with you all. Stay tuned!

Kubuntu Graphic Design Contest

Our Kubuntu Graphic Design contest, initiative is progressing exceptionally well, showcasing an array of exciting contributions from our talented community members. The creativity and innovation displayed in these submissions not only highlight the diverse talents within our community but also contribute significantly to the visual identity and user experience of Kubuntu. We’re thrilled with the participation so far and would like to remind everyone that the contest remains open to applicants until the 31st of March, 2024. This is a wonderful opportunity for designers, artists, and enthusiasts to leave their mark on Kubuntu and help shape its aesthetic direction. If you haven’t submitted your work yet, we encourage you to take part and share your vision with us. Let’s continue to build a visually stunning and user-friendly Kubuntu together

Kubuntu Wiki Support Forum


Our search for a new home for the Kubuntu Wiki Support Forum is progressing well. We understand the importance of having a reliable and accessible platform for our users to find support and share knowledge. Rest assured, we’re on track to make this transition as smooth as possible.

New Donations Platforms


In our efforts to ensure the sustainability and growth of Kubuntu, we’re in the process of introducing new donation platforms. Jonathan Riddell is at the helm, working diligently to align our financial controls and operations. This initiative will help us better serve our community and foster further development.

Collaboration with Kubuntu Focus


Exciting developments are on the horizon as we collaborate with Kubuntu Focus to curate a new set of developer tools. While we’re not ready to divulge all the details just yet, we’re confident that this partnership will yield invaluable resources for cloud software developers in our community. More information will be shared soon.

Kubuntu Matrix Communication


We’re happy to report that our efforts to enhance communication within the Kubuntu community have borne fruit. We now have a dedicated Kubuntu Space on Matrix, complete with channels for Development, Discussion, and Support. This platform will make it easier for our community to connect, collaborate, and provide mutual assistance.

A Word of Appreciation


The past few weeks have been a whirlwind of activity, both personally and professionally. Despite the challenges, the progress we’ve made is a testament to the dedication and hard work of everyone involved in the Kubuntu project. A special shoutout to Scarlett Moore, Aaron Rainbolt, Rik Mills and Mike Mikowski for their exceptional contributions and to the wider community for your unwavering support. Your enthusiasm and commitment are what drive us forward.

As we look towards the exciting release of Kubuntu 24.04, we’re filled with anticipation for what the future holds. Our journey is far from over, and with each step, we grow stronger and more united as a community. Thank you for being an integral part of Kubuntu. Here’s to the many achievements we’ll share in the days to come!

Stay connected, stay inspired, and as always, thank you for your continued support of Kubuntu.

— The Kubuntu Team

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


KDE Neon shows that the Plasma 6 Linux distro is something truly special | ZDNET

Tags: tech, kde, foss

Another nice review for Plasma 6. Looks like it’s getting mostly very positive reviews. So glad!

https://www.zdnet.com/article/kde-neon-shows-that-the-plasma-6-linux-distro-is-something-truly-special/


CACM Is Now Open Access – Communications of the ACM

Tags: tech, science, research

This is great news, more scientific papers from the past decades will be accessible to everyone.

https://cacm.acm.org/news/cacm-is-now-open-access-2/


French Court Issues Damages Award for Violation of GPL – Copyleft Currents

Tags: tech, copyright, foss, law

This is a nice ruling about GPL violation in France. Gives some more weight to the GPL.

https://heathermeeker.com/2024/02/17/french-court-issues-damages-award-for-violation-of-gpl/


European crash tester says carmakers must bring back physical controls | Ars Technica

Tags: tech, automotive, ux

This is an important request. It has safety implications. It is non-binding request of course, but the insurance companies pay attention to it and so could have an impact.

https://arstechnica.com/cars/2024/03/carmakers-must-bring-back-buttons-to-get-good-safety-scores-in-europe/


Progressive Web Apps in EU will work fine in iOS 17.4

Tags: tech, apple, law, criticism

Looks like enough people complained that they had to change course. Good, until the next bad move…

https://appleinsider.com/articles/24/03/01/apple-reverses-course-on-death-of-progressive-web-apps-in-eu


Nvidia bans using translation layers for CUDA software

Tags: tech, nvidia, computation, vendor-lockin

This was only a matter of time before we’d see such a move. This doesn’t bode well for things like ZLUDA.

https://www.tomshardware.com/pc-components/gpus/nvidia-bans-using-translation-layers-for-cuda-software-to-run-on-other-chips-new-restriction-apparently-targets-zluda-and-some-chinese-gpu-makers


Generative AI’s environmental costs are soaring — and mostly secret

Tags: tech, ai, machine-learning, gpt, water, energy, ecology

This is one of the main problems with using those generative models as currently provided. It’s time for the legislators to step up, we can’t let a couple of players hoard energy and water for themselves.

https://www.nature.com/articles/d41586-024-00478-x


We’re told AI neural networks ‘learn’ the way humans do. A neuroscientist explains why that’s not the case

Tags: tech, neural-networks, ai, machine-learning, neuroscience

Friendly reminder that the neural networks we use are very much artificial. They’re also far from working like biological ones do.

https://theconversation.com/were-told-ai-neural-networks-learn-the-way-humans-do-a-neuroscientist-explains-why-thats-not-the-case-183993


Radicle: sovereign code infrastructure

Tags: tech, git, version-control, p2p

Looks like an interesting approach for a new family of development forges. Fully distributed and peer to peer, I wonder if it’ll pick up.

https://radicle.xyz/


List of 2024 Leap Day Bugs

Tags: tech, time

We’re collectively still failing at handling leap days properly it seems.

https://codeofmatt.com/list-of-2024-leap-day-bugs/


The Hunt for the Missing Data Type

Tags: tech, graph, mathematics, matrix, performance

Indeed, graphs are peculiar beasts. When dealing with graph related problems there are so many choices to make that it’s hard or impossible to come up with a generic solution.

https://www.hillelwayne.com/post/graph-types/


The “missing” graph datatype already exists. It was invented in the ‘70s

Tags: tech, graph, mathematics, performance

A response to “The Hunt for the Missing Data Type” article. There are indeed potential solutions, but they’re not really used/usable in the industry right now. Maybe tomorrow.

https://tylerhou.com/posts/datalog-go-brrr/


Java is becoming more like Rust, and I am here for it! | Josh Austin

Tags: tech, java, type-systems

Don’t fret, this just illustrates the fact that immutable data and algebraic data types are easier to have in Java now. Still that’s very good things to see spread in many languages.

https://joshaustin.tech/blog/java-is-becoming-rust/


CSS for printing to paper

Tags: tech, web, frontend, css, javascript

Nice set of tricks (might also involve Javascript, not only CSS) when you need to format web content for printing.

https://voussoir.net/writing/css_for_printing


DUSt3R: Geometric 3D Vision Made Easy

Tags: tech, 3d, computer-vision

Looks like an interesting pipeline for multi-view stereo reconstruction.

https://dust3r.europe.naverlabs.com/


How I use git worktrees - llimllib notes

Tags: tech, git, version-control, tools

Good reminder that git worktrees exist. They definitely come in handy sometimes.

https://notes.billmill.org/blog/2024/03/How_I_use_git_worktrees.html


Twenty Years Is Nothing – De Programmatica Ipsum

Tags: tech, version-control, git, history

Going back on the history of the introduction of version control in software engineering and how Git ended up so dominant. We often forget there was a time before Git.

https://deprogrammaticaipsum.com/twenty-years-is-nothing/


Google Testing Blog: Increase Test Fidelity By Avoiding Mocks

Tags: tech, tests

This is a good explanation of why you should limit your use of mocks. It also highlights some of the alternatives.

https://testing.googleblog.com/2024/02/increase-test-fidelity-by-avoiding-mocks.html?m=1


I’m a programmer and I’m stupid

Tags: tech, programming, craftsmanship, complexity

Interesting how feeling stupid can actually push you toward good engineering practices, isn’t it?

https://antonz.org/stupid/


Defining, Measuring, and Managing Technical Debt

Tags: tech, technical-debt, cognition

A bit of a high level view on technical debt. There’s a couple of interesting insights though. In particular the lack of good metrics to evaluate technical debt… and the fact that it’s probably about “both the present state and the possible state” of the code base. So it’s very much linked to the human cognition in order to conceive the “ideal state”.

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


Enabling constraints | Organizing Chaos

Tags: tech, architecture, complexity

Interesting thinking about constraints and their rough classification as restrictive or enabling. I also liked how they’re tied to complexity.

https://jordankaye.dev/posts/enabling-constraints/


The Bureaucratization of Agile. Why Bureaucratic Software Environments… | by Kevin Meadows | Feb, 2024 | Medium

Tags: tech, agile, management, project-management, product-management, culture

A few points to take with a pinch of salt, especially regarding the proposed solutions. Still it makes a very good point that most transformation failures toward agile organizations are due to lack of trust and the swapping of one bureaucracy for another.

https://jmlascala71.medium.com/the-bureaucratization-of-agile-025dd5e2d2d0


These companies tried a 4-day workweek. More than a year in, they still love it : NPR

Tags: management, work, life

Interesting outcome from those experiments. Interesting insights coming from the practices the companies put in place. The failures also bring interesting information.

https://www.npr.org/2024/02/27/1234271434/4-day-workweek-successful-a-year-later-in-uk


Lemmings: Can You Dig It?

Tags: tech, game, history

Very nice documentary about the creation of Lemmings. It’s especially incredible what you can do with a bunch of pixels. This is a lesson in minimalism. And to think it was initially rejected by publishers… This is a fascinating story through and through with a lot of (sometimes surprising) ramifications.

https://www.youtube.com/watch?v=RbAVNKdk9gA



Bye for now!

Thursday, 7 March 2024

If you work on C++ projects on Windows that need to be built with multiple Visual Studio C++ compiler versions, you need some way to manage the installations of all these build environments. Either you have multiple IDEs installed, or you know about build tools (https://aka.ms/vs/17/release/vs_BuildTools.exe) and maybe keep only the latest full VS IDE plus older Build Tools.

However, it turns out that you can have just the latest IDE but with multiple toolchains installed for older compiler targets. You won’t even need the Build Tools.

To use these toolchains you need to install them in your chosen VS installation and then call vcvarsall.bat with an appropriate parameter.

You can even have no IDE installed if you don’t need it but only the Build Tools with the required toolchains. That’s useful when you use a different IDE like JetBrains Clion or Visual Studio Code. Note, however, that to be license- compliant, you still need a valid Visual Studio subscription.

Installing the toolchain

  1. Go to the Visual Studio Installer and click “Modify” on your main VS version (2022 in my case).
  2. Go to “Individual components” and search for the appropriate toolchain. For example, to get the latest VS2019 C++ compiler in VS 2022 installer, you need to look at this:Screenshot of Visual Studio 2022 installer illustrating how to locate Visual Studio 2019 toolchainHow do you know that 14.29 corresponds to VS 2019? Well, you have to consult this table: https://en.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B#Internal_version_numbering – look at the “runtime library version” column as that’s the C++ compiler version really.
  3. Finish the installation of the desired components.

Setting up the environment from cmd.exe

The only thing you need to do to start with a different toolchain is to pass an option to your vcvarsall.bat invocation:

C:\Users\mikom>"c:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvarsall.bat" -vcvars_ver=14.29

With such a call, I get a shell where cl.exe indeed uses the VS2019 compiler variant:

Screenshot of windows command prompt showing the results of using the discussed technique. It shows that visual studio 2019 compiler, version 19.29 is set up from Visual Studio 2022 installation folder

As you can see, I called vcvarsall.bat from VS2022 yet I got VS2019 variant of the compiler For more info about vcvarsall.bat see: https://learn.microsoft.com/en-us/cpp/build/building-on-the-command-line.

Setting up the environment for PowerShell

If you do your compilation in Powershell, vcvarsall.bat is not very helpful. It will spawn an underlying cmd.exe, set the necessary env vars inside it, and close it without altering your PowerShell environment.

(You may try to do some hacks of printing the environment in the child cmd.exe and adopting it to your Pwsh shell, but that’s a hack).

For setting up a development environment from PowerShell, Microsoft introduced a PowerShell module that does just that.

To get it, you first have to load the module:

Import-Module "C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"

And then call the Enter-VsDevShell cmdlet with appropriate parameters:

Enter-VsDevShell -VsInstallPath 'C:\Program Files\Microsoft Visual Studio\2022\Professional\' -DevCmdArguments "-vcvars_ver=14.29" -Arch amd64 -SkipAutomaticLocation

This cmdlet internally passes arguments to vcvarsall.bat so you specify the toolchain version as above.

With this invocation, you get your desired cl.exe compiler:

Screenshot of windows powershell console showing the results of using the discussed technique. It shows that visual studio 2019 compiler, version 19.29 is set up from Visual Studio 2022 installation folder

For more info about Powershell DevShell module see: https://learn.microsoft.com/en-us/visualstudio/ide/reference/command-prompt-powershell

Setting up Qt Creator Kit with a toolchain

Unfortunately, Qt Creator doesn’t detect the toolchains in a single Visual Studio installation as multiple kits. You have to configure the compiler and the kit yourself:

Screenshot showing the Qt Creator kit setup illustrating how to configure custom Visual Studio compiler version through a toolchain

I am a script, how do I know where Visual Studio is installed?

If you want to query the system for VS installation path programatically (to find either vcvarsall.bat or the DevShell PowerShell module) you can use the vswhere tool (https://github.com/microsoft/vswhere).

It’s a small-ish (0.5MB) self-contained .exe so you can just drop it in your repository and don’t care if it’s in the system. You can also install it with winget:

winget install vswhere 

It queries the well-known registry entries and does some other magic to find out what Visual Studio installations your machine has.

By default it looks for the latest version of Visual Studio available and returns easily parseable key:value pairs with various infos about the installation. Most notably, the installation path in installationPath.

It also has various querying capabilities, like showing only the VS installation that have the C++ workload installed.

For example, to get the installation path of the newest Visual Studio with C++ workload, you call:

vswhere -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath

Screenshot illustrating the output of calling vswhere to locate Visual Studio installation. Query: vswhere -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath results in the output of: C:\Program Files\Microsoft Visual Studio\2022\Professional

Caveats

I haven’t found an easy way to query vcvarsall for something along the lines “give me the latest available toolchain in a given VS product line (2019, 2022 etc.)”. So if you call an explicit version (like 14.29) and a newer one appears, you will still be looking for the older one. However:

  • When vcvarsall.bat is called without any toolchain parameter (vcvars_ver), it defaults to itself so you may assume that it’s the latest one in this installation folder.
  • Microsoft seems to stop bumping the relevant part of the version of the Visual Studio C++ compiler once the next version of VS is out. So for example it seems that 14.29 will be a proper target for VS2019 C++ compiler until the end of time.

About KDAB

If you like this article and want to read similar material, consider subscribing via our RSS feed.

Subscribe to KDAB TV for similar informative short video content.

KDAB provides market leading software consulting and development services and training in Qt, C++ and 3D/OpenGL. Contact us.

The post Reducing Visual Studio Installations with Toolchains appeared first on KDAB.

Wednesday, 6 March 2024

Wednesday, 6 March 2024. Today KDE releases a bugfix update to KDE Plasma 5, versioned 5.27.11.

Plasma 5.27 was released in February 2023 with many feature refinements and new modules to complete the desktop experience.

The bugfixes are typically small but important and include:

  • Plasma Browser Integration: 🍒🍒Download Job: Truncate excessively long URLs. Commit.
  • KWin: Tabbox: match Shift+Backtab against Shift+Tab. Commit. Fixes bug #438991
  • Powerdevil: Kbd backlight: Fix double brightness restore on LidOpen-resume. Commit.
View full changelog

Tuesday, 5 March 2024

Here's our bi-monthly update from KDE's personal information management applications team. This report covers progress made in the months of January and February 2024.

Since the last report, 34 people contributed approximately 1742 code changes, focusing on bugfixes and improvements for the coming 24.02 release based on Qt6.

Akonadi

The database migration tool to help users easily switch between different database engines has been completed and merged. The tool can be used like this to migrate from the current engine to SQLite, however migration between any combinations of the supported database engines works.

akonadi-db-migrator --newengine sqlite

Unfortunately, the migrator is not available in the 24.02 megarelease, as some big fixes came too late to be safely merged into a stable branch. It will be included in the next feature release.

We also tried to improve handling of a race condition when syncing a very large IMAP folder, where if user marked an email as read in KMail while the folder was syncing, the change got reverted by the sync.

There were also some additional code improvements, test fixes and some last-minute fixes due to changes betwene Qt5 and Qt6 that we missed.

Thank's to g10 Code GmbH for sponsoring part of Dan's work on Akonadi improvements.

KOrganizer

A long-standing issue with un-answered and declined invitations not showing in KOrganizer was fixed. It's common when using enterprise calendar solutions (Google, EWS, etc.) that when a user is invited into a meeting, the invitation is automatically added to their calendar. KOrganizer used to filter those out and instead implemented special "Open Invitations" and "Declined Invitations" meta-calendars that were supposed to show those. Unfortunately this feature never really worked properly and so users were confused where are their meetings. This "feature" has been removed in 24.02 and KOrganizer will show all invites without any filter. In 24.05 release, KOrganizer will also have a checkbox in its Settings to let users to choose whether to hide declined invitations globally.

  • Fixed syncing of Google contacts not working if the sync token has expired.
  • Prepared for upcoming changes in Google Calendar API behavior.
  • Calendar colors not matching configured colors in Google or DAV has been fixed.
  • When creating a recurrence exception, KOrganizer now uses correct timezone #481305.
  • Fixed 'Create sub-todo' action in KOrganizer being always disabled #479351.
  • Fixed iCal resource getting stuck in a loop and consuming lots of CPU when syncing specific calendars #384309.

Dan's work on improving KOrganizer and calendaring was sponsored by g10 Code GmbH.

KMail

Big new feature is support for OAuth login for personal Outlook365 accounts via IMAP and SMTP. The OAuth login is more reliable than standard username+password authentication and it means that users with Two Factory Authentication for their Outlook365 accounts no longer have to set up an app-specific password. Note that users who have account as part of their school or work organizations should use the EWS resource, which already supports OAuth login.

The account wizard rewrite using QML is progressing and aside from some edge cases, the automatic configuration of your account based on the Thunderbird online configuration should work again. The UI also received some improvements:

Welcome Page
Configuration slection
Manual configuration

In addition a lot of bugs were fixed. This includes:

  • Fixed encrpyted attachments not showing in email header even after decrypting the email.
  • Fixed EWS configuration dialog asking for both an username and an email address
  • Changed the default encryption of new IMAP and SMTP connections to the more secure SSL/TLS transport

Itinerary

With the Qt 6 transition completed Itinerary has gotten a new journey map view, public transport data coverage for more countries and many more improvements. See Itinerary's bi-monthly status update for more details.

Itinerary showing a planned train trip on a map.

Kleopatra

For large files the performance of encryption, decryption, signing, and signature verification has been improved (by making gpg read and write the files directly). This is most noticeable on Windows. T6351

The usability was improved in a few places:

  • The configuration of certificate groups is now much easier because changes are applied directly. T6662
  • Users can now change the name of the decryption result if a file with the same name already exists. T6851
  • The workflow of moving a key to a smart card was streamlined. T6933
  • Kleopatra now reads certificates automatically from certain smart cards. T6846

Additionally, a few bugs affecting the Windows builds have been fixed:

  • A wrong permission check when writing the decryption result to a network drive was fixed. (Technical details: Qt allows to enable expensive ownership and permissions checking on NTFS file systems. Unfortunately, these checks seem to give wrong results for network drives.) T6917
  • Kleopatra now displays all icons also in dark mode. Previously, some icons, most noteably the system tray icon, were missing when dark mode was enabled. T6926

Related to Kleopatra, pinentry-qt, the small program that asks for the password to unlock your OpenPGP keys also received some love:

  • pinentry-qt can now be built for Qt 6. T6883
  • pinentry-qt now supports external password managers (via libsecret), but only outside of KDE Plasma to avoid deadlocks with KWallets using GnuPG to encrypt the passwords. T6801
  • pinentry-qt now has better support for Wayland. T6887

Hey all,

I have been away for a minute but wanted to give you an update on the work so far in updating and adapting Breeze icons to the 24px grid. Check out the video below.

Sunday, 3 March 2024

The KDE Mega-Release came out a few days ago and I’m happy to report that it went well. Initial impressions seem to be overwhelmingly positive! I’ve been doing extra bug triage and social media monitoring since then to see if there were any major issues, and so far things look really good on the bug front too. I think our 3 months of QA paid off! So congratulations everyone for a job well done! Hopefully this should help banish those now 16-year-old painful memories of KDE 4. 🙂 It’s a new KDE now. Harder, better, faster, stronger!

The roll-out in Neon has been a bit rockier, unfortunately. At this point, most of the packaging issues have been fixed, and folks who encountered them are strongly encouraged to update again. We’re doing an investigation into how this happened, so we can prevent it in the future. So thanks for your patience there, Neon users!

Needless to say, the week was full of other bug-fixing activity as well. There were still a few regressions, many of which have already been fixed, amazingly. I am just so impressed with KDE’s contributors this week! ❤

New Features

There’s a new KWin effect called “Hide Cursor” (off by default for now, but try it!) that will automatically hide the pointer after a period of inactivity (Jin Liu, Plasma 6.1. Link)

On System Settings’ Legacy App Permissions page, there’s now an option to allow XWayland apps to eavesdrop on mouse buttons as well (Oliver Beard, Plasma 6.1. Link)

UI Improvements

The message shown on widgets not compatible with Plasma 6 is now clearer (Niccolò Venerandi, Plasma 6.1, though it might end up backported to 6.0.1 or 6.0.2. Link 1 and link 2):

A widget on the desktop that's incompatible with Plasma 6 showing the text "Night Color Control is not compatible with Plasma 6" and two buttons below it, one with the text "Copy to Clipboard" and the other with the text "View Error Details…"

When you try to activate the Cube effect with fewer than 3 virtual desktops, it will now tell you why it’s not working and prompt you to add some more virtual desktops so it will work (Vlad Zahorodnii, Plasma 6.1. Link):

The default top-left hotcorner that triggers Overview once again closes the effect if you trigger it a second time, while Overview is still open (Vlad Zahorodnii, Plasma 6.0.1)

A number of pages in System Settings have been modernized to move buttons that were on the bottom up to the top, and make their placeholder messages more consistent (Shubham Arora, me: Nate Graham, Fushan Wen, and Jakob Petsovits, Plasma 6.1. Link 1, link 2, link 3, link 4, link 5, link 6, link 7, link 8, link 9, link 10, link 11, and link 12):

  • System Settings showing Window Rules page, with placeholder menu in the center and buttons in the header
  • System Settings showing Firewall page, with a switch in the top-right corner in the disabled position and a placeholder message in the center
  • System Settings showing About this System page, showing multiple buttons in the top bar
  • System Settings showing Game Controller page, showing a placeholder message instead of any game controllers

In Kirigami-based apps, the animation used when moving from one page to another is now a lot nicer and smoother (Devin Lin, Frameworks 6.1. Link)

You know that awkward little line in the toolbars of Kirigami-based apps that separates the sidebar from the content area? Now it has the appearance of a normal toolbar separator line (Carl Schwan, Frameworks 6.1. Link):

Bug Fixes

Taking a screenshot in Spectacle immediately after a screen recording now works (Noah Davis, Spectacle 24.02.1. Link)

VLC’s fullscreen mode once again works (David Edmundson, Plasma 6.0.1. Link)

Fixed a source of brief screen freezes in the X11 session (Vlad Zahorodnii, Plasma 6.0.1. Link)

Fixed a random-seeming crash in Plasma (Fushan Wen, Plasma 6.0.1. Link)

Dragging desktop files or folders onto another screen no longer causes them to temporarily disappear, and the fix for this issue also fixes a crash in Plasma that could be caused by dragging files or folders from the desktop into a folder visible in Dolphin (Marco Martin, Plasma 6.0.1. Link 1 and link 2)

Clicking on the “Defaults” button on System Settings’ Task Switcher page no longer breaks your task switcher until you manually choose it again (Marco Martin, Plasma 6.0.1. Link)

When a panel popup is open, clicking on something else on the panel once again activates that thing instead of just closing the open popup (David Edmundson, Plasma 6.0.1. Link)

There’s once again a blue outline around the active (and now also hovered) virtual desktop in the Desktop Grid view of the Overview effect (Akseli Lahtinen, Plasma 6.0.1. Link)

When you right-click on a panel in Auto-Hide mode and select “Add Widgets…”, the panel no longer frustratingly closes again right after the Widget Explorer opens, which previously prevented you from actually adding a widget to the panel that way, and made you want to throw your computer out the window (Niccolò Venerandi, Plasma 6.0.1. Link)

In the Tile Editor screen, you can no longer break your tile layout by dragging splits on top of other splits (Akseli Lahtinen, Plasma 6.0.1. Link)

Clicking on the search field in the Overview effect no longer closes it (Patrik Fábián, Plasma 6.0.1. Link)

Saving changes made to commands assigned to global shortcuts now works (me: Nate Graham, Plasma 6.0.1. Link)

Fixed some glitches with the new Cube effect: zooming with a scroll (did you even know that was a thing?! I didn’t!) now goes in the direction you would expect, and zooming goes in out too far no longer clips away the cube (Vlad Zahorodnii, Plasma 6.0.1. Link 1 and link 2)

When sending a file to a Bluetooth device, the notification that indicates the progress of the transfer no longer shows a broken link after the transfer finishes (Kai Uwe Broulik, Plasma 6.0.1. Link)

MPV windows with the “Keep Aspect Ratio” setting turned on are now full-screenable (Łukasz Patron, Plasma 6.1. Link)

The layout of the “Overwrite this file?” dialog in “Get New [Thing]” windows is no longer visually broken (Akseli Lahtinen, Frameworks 6.1. Link)

Fixed an issue that could cause glitchy horizontal lines to appear on graphs and charts in System Monitor when using a fractional scale factor with certain integrated Intel GPUs (Arjen Hiemstra, Frameworks 6.1. Link)

Other bug information of note:

Automation & Systematization

Created documentation about how to write Appium-based GUI tests for KDE software (Fushan Wen and Thiago Sueto, link)

Created documentation about how to expose C++ models to the QML GUI side in KDE software (Someone going by the pseudonym “Kuneho Cottonears”, link)

Added a test to ensure the functioning of the SystemDialog component, which powers a number of portal-based permission dialogs (Fushan Wen, link)

…And Everything Else

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

How You Can Help

Thanks to you, our Plasma 6 fundraiser was been a crazy success! The final number of members is an amazing 885. Not quite 1000, but given that the original goal was 500 (which I even viewed as wildly optimistic at the beginning), I’m just bowled over by the level of support here. Thank you everyone for the confidence you’ve shown in us; we’ll try not to screw it up! For those who haven’t donated yet, it’s not too late!

If you’re a developer, let’s continue to try to focus on bug reports for the next week or two in the software we’re involved with, to make sure that any issues people find get noticed and fixed. I want that perception of quality to continue! We’re building up a good reputation here, so let’s keep pushing for just a bit longer before we pivot to feature work for Plasma 6.1.

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

I'm happy to announce the launch of our revamped Blogs.KDE.org website, now powered by Hugo instead of Drupal 7! This switch was motivated by the fact that Drupal 7 is now reaching end of life and since Blogs.

Saturday, 2 March 2024

As many have noticed, Neon’s release of Plasma 6 was not without its problems. We would like to apologise for the totally unexpected packaging problems as “Testing Edition” and “Unstable Edition” had been working just fine without these issues.

Of course the first round of fixes have already hit the “User Edition” archives. Expect more to follow as we continue to ‘Q.A.’ the packages and eliminate as many bugs as we can.

Last week I attended the bi-annual OSM Hack Weekend in Karlsruhe again, hosted by Geofabrik, focusing on indoor routing as well as Transitous.

Structured Email / Semantic Web

But first to something different (skip to the next section for OSM content).

While traveling to Karlsruhe anyway I used the opportunity to meet with people working on Structured Email, something that has a lot of overlap with the travel document extractor used by KDE Itinerary.

There’s plenty of aspects for collaboration here:

  • Sharing of test data. I learned about Web Data Commons for example, which is a giant corpus of structure data extracts from crawling the web by the University of Mannheim.
  • Sharing of lessons learned, approaches and quirks/workarounds for processing structured data. We are currently lacking a forum for that.
  • A standardized way for applications to register for handling a specific schema.org type. That way email clients or Plasma Browser Integration could dispatch objects they encounter to the respective application in a generic way, similar to how this is done for files based on MIME types. Ideally this is done on the XDG level, and while at it it’s probably worth looking at other areas where the same need came up (URLs, ActivityPub, barcode content, etc).

What we do in Itinerary for importing events, restaurants or hotels from websites is meanwhile also found in the Nextcloud Cookbook app, using the schema.org recipe data embedded in websites. And that’s still just scratching the surface, combining this with e.g. Open Food Facts could open very interesting possibilities. Very cool to see things like this being done :)

Indoor Routing

A month ago I had shown indoor routing running integrated in KDE’s indoor map demo application. That’s an important milestone, only the final 80% of the work remain now, namely making sure this produces reliable and useful results in a variety of locations.

Prefer corridors over rooms

Giving a computer the task of finding the shortest path will usually not yield practical results. That’s because human expectations around this contain many implicit assumptions, constraints and nuanced cost considerations that we all have to implement as well.

One example is shown below. The shortest path here crosses through two conference rooms or lecture halls, however you most likely don’t want to disturb whatever is ongoing in those rooms but rather take the slightly longer corridor around.

Two routes through an university building in side-by-side comparison.
Shortest path (left), preferring corridors (right).

Giving different room types different routing cost factors helps with this.

Along the same line other details have been fixed or improved, such as:

  • Emergency exists are not the same as regular doors.
  • Not all OSM barrier types are actually blocking your way (eg. bollards, but also gates/turnstiles).

Data level of detail

Another aspect to deal with is that the OSM data in some places doesn’t have the necessary level of detail needed for routing. Examples include:

  • Missing “cut outs” in the ground for stairs coming up from the floor below.
  • Missing doors to rooms, staircases or elevator cabins.

Either of those can result in significant detours or even entirely inaccessible areas.

While augmenting the OSM data is the proper solution eventually, that is quite a large task. Fortunately we have a few workarounds and heuristics to deal with some of these issues:

  • Stairs are now implemented as “off-mesh links” everywhere, rather than as 3D geometry as done previously, which allows “teleporting” through any obstacle on the way.
  • We now drop walls around any elevator or staircase if there are no door nodes at all. That may lead to routing into those areas from the wrong side, but that’s still better than not being able access those at all.

With these improvements we can now also find a way out of the most complex test labyrinth so far, the Paris Metro.

One floor level of the complex underground maze of the Paris Metro.
Paris Metro station at Gare de l'Est.

Data modelling

This work also identified a few issues where the OSM indoor data model is ambiguous or cannot express relevant details yet:

  • There’s a significant difference between implicit walls on indoor=corridor elements in the Simple Indoor Tagging (SIT) scheme and usage in reality. No matter how you interpret that for routing you either end up either with unreachable areas or routes through walls.
  • Similarly, there’s ambiguities on how (implicit) outer building walls should be mapped/interpreted.
  • There is no way to model service counters that you might find at ticket offices or fast food stands. This matters to route towards the right side of a building/room.

See also the corresponding mailing list post for details, as well as the the upcoming quarterly OSM Indoor Meetup (Wednesday March 6th, 18:00 CET, online).

Transitous

Transitous, an effort to set up a free and open public transport routing service, also involves a lot of OSM data and software, so that was the other big topic for me.

Intermodal routing

While the public transport routing part for this works quite well already, enabling the intermodal routing has proven challenging. That is routing the first and last mile to and from public transport stops by foot/bike/scooter/car or a combination thereof, possibly considering things like available parking spaces or rental vehicles.

That is build on top of existing OSM routing engines, and MOTIS supports different options there as well. We haven’t found a combination yet that can import planet-wide data or at least data for all of Europe on the hardware we have (ie. needing significantly less than half a TB or RAM), offers the feature set needed by MOTIS for intermodal routing (1:1, 1:N and N:M routing, customizable profiles) and deliver all that with sufficient runtime performance. Bonus points for at least having the option for other advanced routing features (elevation support, realtime traffic support, etc).

There was a clear recommendation from the people running and developing those things professionally for GraphHopper. MOTIS has no support for that one yet, but it seems doable to add that. The bigger problem here is potentially that GraphHopper’s “Matrix API” (the part doing very efficient N:M routing) is apparently not available in the open source release. So we still don’t have a proper solution for this.

Geocoding

Another component needed for all this is address and POI search and as-you-type completion. There was an equally clear recommendation for Photon. That comes in an easy to get started package with a single binary and a pre-built database for a single country or the entire planet, but also allows to transition to a more complex setup enabling incremental data updates and offering a ton of options to fine-tune and customize the results (support more languages, bias towards certain types of locations, etc).

MOTIS integration for this also yet has to be done, but should be quite straightforward. Without intermodal routing this doesn’t gain us much on its own though.

Public transport coverage

Meanwhile the public transport coverage on Transitous is growing rapidly, see Jonah’s blog post on how to get your region included.

Map of (parts of) Europe, with many small colored markers showing current train/bus positions.
Transitous coverage in Europe.

If you are interested in collaborating on this, join the #opentransport Matrix channel and the Transitous Github project.