Skip to content

Welcome to Planet KDE

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

Friday, 30 July 2021

Let’s go for my web review for the week 2021-30.

The Pandemic Playbook

Tags: pandemic, health, politics

Very interesting series of articles about the pandemic in various countries. It’s a few months old now though so things evolved, still it gives an interesting account about the early days.

The Assange Case Is Collapsing – But it Remains a Travesty of Justice

Tags: assange, justice

I wish they’d just drop the charges now… this has been running for way too long. Maybe it’s time freedom of the press gets back to the center stage?

We Need To Talk About The Insecurity Industry

Tags: tech, surveillance

Pretty much this! Indeed it won’t stop until those weapons are banned and the companies selling them treated as criminals. Will take a while to get there though as long as the people in power use them as diplomatic tools…

From Stolen Laptop to Inside the Company Network — Dolos Group

Tags: tech, security, evil-maid

Good reminder of why if you got mobile devices which are outside of a secured office (like most companies nowadays) you should never underestimate the Evil-Maid scenario…

Agile at 20: The Failed Rebellion - Simple Thread

Tags: tech, agile, management, history

A very interesting look at the history of the Agile movement. What it really meant and what it degenerated into.

Joy, or Not

Tags: tech, programming, agile, life, joy, politics

Nice extracts with comments about finding joy in your (work) life or not. Two paths really… which one are you on?

Too bad this is stretching a bit too far on the politics side (although it’s not unjustified, I think it muddies the initial message in this context).

BirdNET – The easiest way to identify birds by sound.

Tags: biology, birds, tech, ai, machine-learning

Looks like an interesting system to recognize bird sounds in the wild. I’ll definitely test it.

Techdirt Is Now Entirely Without Any Google Ads Or Tracking Code | Techdirt

Tags: tech, google, surveillance

Illustrates nicely how difficult it can be to let go off the Google drugs on your website.

Solene’% : Why self hosting is important

Tags: tech, self-hosting

Nice piece advocating for self hosting. I especially like the fact that it stresses that it doesn’t mean “one server for one person” it’d be unrealistic to turn everyone into sysadmins.

Rust for Linux redux []

Tags: tech, rust, linux

The journey of Rust inside of the Linux kernel is still in its early days. I find especially interesting the questions raised by the community. It’s especially healthy in my opinion, it’s not just “fancy let’s have it”. They also wonder about the learning path for people to join the community if it’s accepted or where to best use it. It’s a good account of the social aspects triggered by technical changes.

Simulating shitty network connections so you can build better systems.

Tags: tech, tests, networking

Looks like an interesting tool, it’s always a bit of a problem to simulate various network conditions, especially slow links randomly dropping packets. Adding more tooling to tackle this is always welcome.

How to model application flows in React with finite state machines and XState

Tags: tech, web, frontend, statemachines

Ah! I thought this was often a missing piece in most React frontend code I’ve seen which mostly piles up useEffect and useState calls. Having a finite state machine is definitely a must have there, I’m glad some options actually exist, I didn’t bump into XState so far I’ll make sure to look into it.

Python behind the scenes #11: how the Python import system works

Tags: tech, python

A very thorough resource on how the Python import system works. Very convenient to figure out what’s broken when something goes wrong.

Postgres Full-Text Search: A Search Engine in a Database

Tags: tech, databases, postgresql, search

A good primer on full-text search features in Postgres. A nice way to get started.

Introducing Triton: Open-Source GPU Programming for Neural Networks

Tags: tech, gpu, data-science, python

Now that finally looks like an interesting approach to make GPU computation more accessible to the public. This seems to do a few things right to lower a bit the complexity while retaining good performances.

Bye for now!

Wednesday, 28 July 2021

KDE Dev-Vlog 2: The Eye of the Beholder

This video continues right where the prior one left off: Improving the user interface of Gwenview, the default image viewer of KDE.

Different than the first video, this one is slightly thrilling at times. It also has more of a focus on showing the work processes instead of mostly presenting the results and thoughts behind it.

Have fun!

This is a German video with hand-crafted English subtitles.

Tuesday, 27 July 2021

Some time ago, I noticed that a unit test was quite slow, using 100% CPU for a number of seconds at one point in the test.

I used perf and KDAB’s Hotspot to record and examine where the CPU cycles were spent in that unit test, and I quickly noticed that a lot of time was spent in QFileSystemEntry::fileName(), an internal method in Qt that’s called when listing directories with QDir.

Here’s what zooming into that method with Hotspot showed:

Hotspot showing the performance issue in QFileSystemEntry::fileName

We can see that QFileSystemEntry::fileName() calls QString::lastIndexOf(), which calls data() on the string, i.e. detach(), leading to an expensive deep copy! Surely that’s not supposed to happen from a const method. Looking at the Qt code revealed that lastIndexOf() calls a template method which calls .data() on the string-like template type (which is in this case a QString but can also be QStringView or QLatin1String, and those don’t have a constData() method). The author of that method in fact never intended for it to be instantiated with a QString type besides QStringView, but that’s exactly what happened, accidentally. The fix was, therefore, to wrap the QString in a QStringView, whose data() method does not detach.

After making the change, the expensive detach() disappeared:

Hotspot showing QFileSystemEntry::fileName after the fix in Qt

Don’t be fooled by the fact that the rectangle for QFileSystemEntry::fileName is just as wide as before. I selected it in Hotspot, so it always takes 100% of the width. However it’s 100% of a much smaller amount now.

I submitted the fix for inclusion into Qt and it got merged into Qt 5.14.1 and following versions. You can see the patch in the Qt merge request.

By the way, when I give trainings about profiling of C++ applications, I always insist that profiling should be done on an optimized build, never on a non-optimized (“debug”) build. This is so we don’t do the job of the compiler optimizer ourselves. But this is one case where even profiling a debug build showed very interesting results, and the fix had an impact on release builds as well. That’s because, in this case, the compiler cannot optimize away the deep string copy triggered by the call to data(), so the bug did exist in optimized builds too.

In conclusion, if something is slow, fire up Hotspot, record the program (ideally a unit test, but the full program is also a possibility), switch to the flamegraph, and hopefully the reason for the slowness will be very visible.

Happy profiling!

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 Hotspot: How const Can Improve Performance appeared first on KDAB.

Tuesday, 27 July 2021. Today KDE releases a bugfix update to KDE Plasma 5, versioned 5.22.4.

Plasma 5.22 was released in June 2021 with many feature refinements and new modules to complete the desktop experience.

This release adds three weeks' worth of new translations and fixes from KDE's contributors. The bugfixes are typically small but important and include:

  • Discover: Address the keyboard shortcut tooltip. Commit. Fixes bug #438916
  • Sort Unsplash POTD image categories alphabetically. Commit. Fixes bug #422971
  • Info Center: Unbreak about CPU value when solid is missing a product string. Commit. Fixes bug #439464
View full changelog

Monday, 26 July 2021

GSoC 2021 KMyMoney - Post First Evals to Week 7

The plan for the post first evals week was to complete the following tasks:

  • Make changes as suggested by mentors on my last work.
  • Modify the AlkOnlineQuoteSource constructor for new members (m_idSelector and m_idNumber)
  • Write unit tests for the added members in the AlkOnlineQuoteSource.

I modified the code as suggested by my mentors that were related to coding conventions(according to C++, Qt and KDE).

After adding the new members to the AlkOnlineQuoteSource constructor. I jumped into writing the unit tests. I realized that I haven’t added the new members in the function signature. After adding that, I build the files to check what all things break related to the constructor’s usage. They were :

  • defaultQuoteSources() - The function having default quote sources. I modified those according to the new signature with quotes data from webpricequote.
    I proceeded to work on tests then and modified the test functions according to the new signature. I ran all the tests only to realize later that alkonlinequotesourcetest fails. It was due to the undeclared IdSelector variable. After fixing(assigning a default type) it was very relaxing to see all tests pass.

My work can be found here : Alkimia and KMyMoney.

Learnings -

I got to know more about the importance of coding conventions and writing tests.

What’s next -

This week will revolve around implementing the libalkimia changes in kmymoney. I am also looking at this as suggested by Ralf.
If anyone wants to suggest something or have a discussion please reach out to me on suraj[dot]mahto49[at]gmail[dot]com or in matrix.

Setup on Windows

setting up mingw on windows is PITA, at first since i am not used to backslash for filepaths, it load the gdb printers, i then realised that it does not come with python enabled. Downloaded a new one it does not come with python3 instead it is python 2.7.

I could not find any mingw that is built with python3 on windows, if you do send me a link here.

New Printers

  • QFile

    this private class has the following structure

    type = class QFilePrivate : public QFileDevicePrivate {
    QString fileName;

    it inherits from a QFiledeviceprivate, but the size of the qfiledeviceprivate is not consistent across operating system, architectures and qt5 versions.I got the list of offset from the qtcreator types this problem exists for also qprocess (not fully implemented as of now) and for others as i may not be able to get it size for all operating systems, architectures and qt5 versions.

    relevant commit

  • QDBusMessagePrinter

  • QUUidPrinter from here

Fixes and Tests

  • Added QByteArrayPrinterTest
  • Fix QFileInfoPrinter causing segfaults when calling a method that does not exist commit
  • The tests only runs when CMake builds successfully

Here is a link to the repo

Hi reader! It's been some time since I have posted a blog on my GSoC project. I am writing this blog to keep you updated with the development of Krita. To avoid duplicating code I have gone through relevant part of existing code in Krita (again). I must say it always amazes me as the … Continue reading GSoC’21: Week 4-7 with Krita

mobile upload dialogue

Tok now has TWO new completely revamped upload dialogues: one for desktop, and one for mobile. Despite how much of the app is spent using stuff that isn't the upload dialogues, the upload dialogues took a LOT of time and work to get implemented correctly.

The mobile dialogue makes it convenient to browse through your most recent photos, videos, music, and files to share them with your friends.

video upload dialogue on mobile

music upload dialogue on mobile

files upload dialogue on mobile

On desktop, the upload dialogue now offers a preview of your file, and for images, the option to compress it.

photo upload on desktop

video upload on desktop

music upload on desktop

file upload on desktop

Sending State

send state

The sending state of outgoing messages is now displayed with a little icon by the timestamp.

Adjusted Chat List Look

adjusted chat list look

The look of the chat list has been slightly adjusted, to make it look more like other KDE apps. More information is shown, such as the sending status of outgoing messages and the timestamp of the latest message.

Improved Pasting

Tok now has improved pasting capabilities, able to paste from apps that put images on the clipboard directly like Firefox and Spectacle now.

Obtaining Tok

Tok can be built from source from

There's a Telegram room for Tok available at, where you can come on and chat about anything Tok related, such as asking questions on using or building Tok.


Interested in contributing? Come on by the dev chat and say hello!

Tags: #libre

Sunday, 25 July 2021

Kubuntu Groovy Gorilla was released on October 22nd, 2020 with 9 months support.

As of July 22nd, 2021, 20.10 reached ‘end of life’.

No more package updates will be accepted to 20.10, and it will be archived to in the coming weeks.

The official end of life announcement for Ubuntu as a whole can be found here [1].

Kubuntu 20.04 Focal Fossa and 21.04 Hirsute Hippo continue to be supported.

Users of 20.10 can follow the Kubuntu 20.10 to 21.04 Upgrade [2] instructions.

Should for some reason your upgrade be delayed, and you find that the 20.10 repositories have been archived to, instructions to perform a EOL Upgrade can be found on the Ubuntu wiki [3].

Thank you for using Kubuntu 20.10 Groovy Gorilla.

The Kubuntu team.

[1] –
[2] –
[3] –

Last week brought a significant new addition: the schedule view. It, and all of the other features explored in last week’s post, have been added over the course of this week and are now part of the master branch of Kalendar!

  1. !8: Improved event info drawer, event collection editing, attachments
  2. !9: Add undo/redo functionality
  3. !10: Add a schedule view to Kalendar

This week brings a number of smaller visual tweaks and a significant new feature that has involved a lot of wrangling inside Kalendar’s guts. Let’s go through ’em!

Making the incidence editor prettier

!11: Improve appearance of incidence editor

The incidence editor’s has been modified to make it nicer to look at and easier to differentiate between its different sections. The description textarea has been moved to the top, and separators have been added between each of the model-driven sections (attendees, attachments, reminders, and recurrence exceptions).

Additionally, these model-driven sections have been changed to use much more visually attractive Kirigami components.

Tweaks to the calendar views

!10: Add a schedule view to Kalendar (and tweak the month view)

Kalendar’s views have seen some small changes. First, the schedule view: on desktop, the padding on the cards has been reduced in order to present more incidences at once, since on desktop the cursor allows you to click on smaller cards just as precisely.

Additionally, both the schedule and the month view now let you double-click on a date in order to instantly open the event addition window set to the date you double-clicked on. Right-clicking opens a context menu that lets you specify what kind of incidence you’d like to add.

New incidence types

!12: Add support for more incidence types

That’s right! A lot of work has gone into Kalendar this week in order to let you view, edit, and add different types of incidences. Now, you can add todos in addition to events to your calendars. This has meant significant changes under the hood, which should make work to add support for additional types of incidences much more straightforward.

Including new types of incidences has also meant some changes to the UIs of different parts of the application. Event addition buttons are now replaced with menus that let you select the type of incidence you want to add, for example. Both the month and schedule views now show what type of incidence something is alongside its name. The layout and contents of the incidence editor also change depending on what sort of incidence you are adding or modifying. In the case of todos, you can also mark them as complete or incomplete from the incidence information drawer.

This merge request is big, so it is still under review (sorry!) but it should land over the next few days.

Coming up next

Up next will be to finish tailoring the different aspects of Kalendar to accommodate new incidence types. This will include changes to the incidence editor to include support for additional and specific features of todos. Journals will also be added in the next few days.

Also coming up is the addition of a view focused on todos — but more on that when it’s ready. 😉

Is there anything you’d like to see added to Kalendar? Get in touch! I’m on Matrix.