Skip to content

Friday, 21 May 2021

For a long time now, KDE's about dialogues (the ones you find in the help menus in many of our apps) have supported the ability to fetch a bunch of information about the authors of our applications from the KDE Store through the Open Collaboration Services API. It does this by sending a request to the store for each of the authors who have an ocs username defined, to get the information on user avatars, profile links, and a few other potentially interesting details.

Phoning Home

If you are paying attention, you are now squinting at the screen and going "wait, I saw that title up there, and it clearly says not phoning home, and this is phoning home". You are, of course, entirely correct, and while it certainly was never done with ill intent, it is hard to dispute the fact that it is, in fact, phoning home. As a result, we have been poking about with ways of fixing this, without dropping overly much of the functionality.

Some of those crazy author people what make Discover happen

You might now be thinking what functionality, and sure, it's seems like perhaps a small thing, but remember: KDE is a world-wide community of people who work on this massive pile of software, and the about dialogue is basically the first place where many people are likely to learn of that concept, if they decide to go and look. As such, we want to put our best face forward, and in this case what we want is to firstly not be causing any undue internet traffic (because nobody wants that), but also we want to literally put faces forward.

Not Phoning Home

As of a couple of weeks ago, the KDE Store has had a simple url which will give you a redirect to the avatar that you have set on there, at the scale you need of it, and that's what we're using now. You can use it yourself as well - there's a short introduction to it over here. You can also link directly to your profile in a similar manner, by just linking to - for example, mine is

Oh look, authors what do money managementy things!

The result is two patches, which landed recently: One for Kirigami, and one for KXMLGui. All of this was originally spawned from a desire to reduce the complexity of KXMLGui itself, and specifically removing the requirement on Attica, which while certainly not heavy, was still doing an inordinate amount of work for an arguably small gain in this particular instance.

There is more to be done on this, mind you - if you read comments on the Kirigami patch, you will notice that one intention is to expand this avatarness to support things other than the store as well, and while i do have some ideas on the topic, if you've got some, don't hesitate to give me a poke! (not "why don't you just use gravatar", that's not the point here, any expansion of this needs to be generic, otherwise it doesn't make a huge deal of sense - the reason we're doing it this way is in part that the ocsUsername field is a part of KAboutData already, and it will Just Work(TM) for anybody who already uses that data structure).

Over To You?

Part of this work could arguably have been done before (specifically that not phoning home part, which from a user perspective is a checkbox which defaults to being off), but since this was originally based on removing the Attica requirement, frankly, this particular angle is something which i must confess, sadly, to have quite entirely missed.

And that, i guess, is the point here: It is staggeringly obvious in hindsight that this was totally a case of phoning home, and while it was never intended to be that, and to my knowledge was never used like that, it took someone pointing at it and going "yeah, this is doing a phoney homey thing" for me to go "yup, it clearly is, let's make that not happen". So that's what you can do here: Be that person that points out a blindingly obvious case of phoning home to someone who's just not noticed in a decade that that's what's happening, furthering KDE's goal of ensuring our software operates in a privacy conscious manner.

Finally, a direct question: Having to tick those boxes in each about dialogue is, arguably, a little far the other direction again, and having that tick apply to all about dialogues in our software would make that bit of life just a tiny bit simpler. Not a lot, arguably, but a little is also good, of course. The question, then, is this: Is it an acceptable tradeoff in privacy terms to let this tick box affect the about boxes in all our software, or should it be per-application? Personally i'm leaning toward it being acceptable, but i wanted to put it to the wider community before diving into that bit of the code.

The word of the day is: Care. Because we should, and we do :)

Plasma gets Prettier and more Blurred by the day!

Plasma gets Prettier and more Blurred by the day!

Tuesday, 18 May 2021

Last week I attended and even gave a small talk to the Linux App Submit (LAS). LAS is a cross-distro and cross-desktop event around Linux applications. It’s a good place to learn about all the new cool thing making it easier to build and distribute Linux applications. This motivated me to improve a bit more the presence of Plasma Mobile applications in Flathub, but also make various improvements to

Plasma Mobile and Flathub

Jonah, Devin and myself started packaging more Plasma Mobile applications to Flathub. Currently we added Koko, Index, Vvave, Alligator and Pix to Flathub and more pull request are already open and hopefully soon merged. also got a few updates. Volker fixed a regression caused by my latest rewrite of the website that was preventing the application page to show links to F-Droid and the Play Store when available. This prompted me to also add additional links to Flathub, but also to the nightly Windows build.

GCompris is really everywhere
GCompris is really everywhere

Another small improvements and not yet visible in the UI is that it’s now possible to list all applications available on specific platforms. For example to see all the applications available on Android, you can use Similarly to see all the applications available on the Microsoft Store, you can use

On the Android page, some applications have been removed from the store and we should probably update the metadata accordingly or bring them back. Hint: It’s a good oportunity to get involved!

The next step is to expose these links in the homepage of the website.

Release tooling

A while ago, I added support for release information in Unfortunately the <release> tag isn’t often added in KDE applications for new release. Currently only a handful of applications like Krita, KDevelop, NeoChat or Calindori are using them. It’s a bit sad because it allows to link to the release announcements, but also link to the tarball and other artifacts (.exe, .dmg, .AppImage, …). Additionally this information are also displayed on Flathub and Discover.

To improve a bit the situation, for at least the package released by the release service, I started a merge request for the release-tools that adds more information to the AppStream file. This includes bugs fixed in the last version, a link to the tarball and the link to the announcement. A solution for other types of artifacts still need to be figured out, but since not all applications in the release service provide AppImages or Windows/macOS package, it’s more complicated.


Another application related improvement I have been working is a revamp of Discover homepage. This is still work in progress and the final visual result might change, but here is how it currently looks:

Discover new applications with Discover
Discover new applications with Discover

Plasma 5.22 is now in beta. This gives us, KDE developers, one month of intense testing, bugfixing and polishing. During this time we need as many hands on deck to help find regressions, triage incoming reports and generally be on top of things as much as possible.

With that in mind, you are officially invited to our "Beta Review Day". Join us online and do QA with us together as a group.


Any Plasma user able to install the latest beta or run a live ISO with our beta on it and who wants to help.


Saturday 22nd May. A full timetable with areas of focus is available on the wiki:


Join us over videoconferencing at There will be plenty of room available, and you can join with a camera and a microphone or just use the classic text chat.

What will we do?

• Introduce you to Bugzilla so you can support us filing or triaging bugs
• Assign short lists to experienced participants so you can validate and de-duplicate bugs
• Go through a defined list of all the new areas of Plasma to check for regressions
• Devs will be online so you can give us debug info for issues you have, and identify and fix things in real time

What should I prepare?

Set up a machine, real or virtual, with the latest Plasma beta desktop. Go here: and download choose and install a distro that ships either the master or Plasma 5.21.90.

See you all soon!

Google Summer of Code (GSoC) is a summer program by google that brings open-source organizations and students together to work on open-source projects.

This blog is my experience about how I started open-source contribution (with the motivation provided by GSoC). This includes the bugs and features I have worked on so far in addition to the way competitive programming and open-source affect me. The blog might have some new terms. So stay steady with me till the end and… let’s get started.

$ whoami (as on 26th Dec 2020)

Hiya fellas! My name is Santhosh and I am pursuing my graduation in NIT Bhopal. I am a linux user and a competitive programmer with c++ as my primary language. I have no idea about opensource and version control system. Today, I found about GSoC while surfing online. After reading a lot of good responses about GSoC and opensource, I thought to give it a try 🤔.

And I just made one of the best decisions in my life.

Week 1 : Picking the organization

The starting weeks were mostly reading documentations. Firstly I had to choose which organization to pick before starting my journey. I found KDE and decided to start with KDE because of its large community, availability of c++ projects and most importantly I was a kubuntu user.

Week 2 : Knock Knock KDE!

I have gone through the documentation to start contribution. I had a lot of downside while creating my development environment (facing a lot of new terms like Qt, cmake etc). I hesitated (enjoy it while you can, you won’t have it longer) to ask the developers but eventually I did and they gave a friendly response. Later I was able to successfully build KDE applications. However to understand the code, I realized that I should do some homework.

Week 3 : Hello Qt!

Qt is a framework written in c++, that is used for developing GUIs and multi-platform applications. Some of the popular softwares like VLC, Spotify, Google Earth are made with Qt. Most of the KDE applications are built using this framework. So I started learning it. Qt documentation is the best way to learn Qt but it might not be beginner friendly. The book “Mastering Qt5” helped me to start with Qt.

Week 4 : The Git begins😈!

Now that I was able to understand the codebase, I should learn the legendary git to start contributing. The best way to learn git is by doing git. This link provides a nice visualizing tutorial to git.

Week 5 : My first ever contribution

Open-source projects usually have starter bugs tagged with “junior jobs”, “good first issue” etc. This is when I have pushed my first contribution to the world of open-source. It was about improving the quality of icons of KdeConnect in Hi-Dpi devices. Moreover, it was only 2 lines of code (yes! that’s how it started). Usually it takes some time for the developer to check the patch. Luckily, the developer was active at that moment and they merged my patch instantly.

And my code is officially open-source

Week 6 : Expanding my territory

Now I started to explore other projects of KDE as well. Krita is a professional digital painting platform. By the first sight, I was scared and fascinated by it’s large codebase. I researched about Krita and decided to go for it.

Week 7 : First Merge Request(MR) in Krita

I asked in the IRC(Internet Relay Chat) about any beginner works that I could put my hands on. Krita(community) has generously responded by giving a link having some beginner tasks. So, the first feature I worked on was to provide shortcuts for toggling “brush smoothing options” on and off (something like Ctrl+B). The feature was asked by a user.

I remember how I felt when I wanted a feature in some application. Now I am on the other side of the table.

I have implemented the feature and pushed the MR. After a few modifications it got merged and I heard from the user who has actually asked for it. I couldn’t be much happier 😇.

Week 8 : Getting Involved

The best thing about open-source is communication. Krita developers conduct weekly meetings in the IRC room where anyone can voluntarily talk about the work they’re doing along the week. It helped me to make a connection with the software. In this week, I worked on setting default ‘colorspace’ while creating a new file. We discussed about various regressions in my work and then I did some modifications. After few such cycles, the patch(MR) was successfully merged.

Week 9 : Slow down Kiddo!

It felt like things were running little quick around me. This week I was working on the following case: “A brush in Krita has several settings (like brush size, tip shape, opacity etc) which can be temporarily changed without saving. Now while renaming a brush, the brush gets refreshed and these temporary settings are lost (which was not intended).” 

To solve this, I was digging through this huge codebase (from the way the gui is updated to the way everything is saved in the device). I tried a lot of methods and after a lot of effort I felt like giving up😢. I shared all my work with a krita developer and then she told me that I was very close to fixing it (as close as adding a header😅). Anyone would fall in love with open source if such incidents happen (❤ opensource).

Week 10 : Hibernation

This was my mid-semester exam week. So this week was mostly reading the bug reports on Krita and skimming through the codebase (and IRC).

Week 11 : Another week another patch

Crop Tool in Krita has an option to lock width to height ratio of crop selection. The bug was about a corner case where this lock was not followed. It involved getting my hands dirty on the algo (Oh! I love it). Worked on the bug, pushed the MR, had some chat and the patch was merged (uff! what a lazy me😓).

Week 12 : Rejuvenation🧘‍♂️! (or just a lazy week🤪)

This week, the other side of me was awaken and started to seek the other side of entertainment. Thus the whole week was dedicatively dedicated to some movies and the anime “One punch man” (in addition to usual quota😅).

Week 13 : Levelling Up

This is getting to another level now. Krita has rectangle and ellipse tools to draw respective shapes. There was a feature request reported about the ability of rotation to these tools. This could provide a lot of flexibility to artists to draw rotated rectangles and ellipses, especially ellipses (could be a workaround for perspective ellipses). So I decided to work on that.

Alright now! For this feature I had to think about the way UI should work (community discussion helped me with this), and the idea upon which I had to implement this feature. Moreover, I had to see that it works without breaking any existing feature (like drag transformations, size constraints etc).

With a lot of mind trekking and braingee jumping, I wrote a decent code and checked it twice. Everything was good and I build the application successfully. But when I tried to draw a rectangle, it was drawn with an entirely different size, angle and position. Not a single parameter had a resemblance (oh wait! It was still a rectangle). I had literally hit my head to the wall.

Later when I was able to manage my hysteria, I sat back and checked my code again. Then I figured that there are many symbols other than a semicolon that could make a developer’s life miserable😅. I kept on debugging and testing. After a few cycles, the feature was suddenly working like a masterpiece. I was shouting in my head that it’s working.

I made a few touch-ups and pushed an MR. The developers liked it and were ready to merge. Then I got into a git issue. I did some googling to understand it. Somehow I fixed the issue and finally the patch was merged 🔥.

Week 14 and 15: GSoC

It’s time to think about my GSoC project. Organizations usually have a few starter ideas upon which a student can build their project proposal. Krita has many areas open to develop (kudos to its users for their reports). Again with community discussion and codebase skimming, I chose my project for GSoC.

The template provided by the organization helped me to frame my project proposal as well as my idea. I made my proposal and shared its draft. The developers responded and a few regressions in my timeline were fixed. On the final date of student application phase, my proposal was locked successfully.

My start in the world of open-source has been very beautiful with KDE and Krita. I have experienced fun in coding and seriousness towards the project simultaneously.

I realized that the whole community was a few steps away waiting to help me. All I had to do was to take them and tada! I am an open source contributor.

Open Source and Competitive Programming(CP)

It is not an unlikely scenario to choose between CP and open source (especially for a student). CP and open-source are two different worlds that one can thrive in independantly. But they need not be mutually exclusive. In my case, I am enabled by open-source in a better way with the competitive programming mindset and open-sourcing has made my problem solving more structured. So if anyone asks me, I’d say go for CP and open-source (have the best of both the worlds).

As a final note, I am selected for GSoC’21. The true journey is just begun.

Monday, 17 May 2021

Moving on 🔗

Bhushan Shah bshah 13:30 +00:00

I joined Bluesystems GmbH in August 2015, over the course of ~6 years I had opportunity to work in some of most exciting projects (in no particular order).

  • KDE Plasma Mobile and Desktop
  • Plasma-bigscreen
  • Halium
  • KDE Neon
  • Several other hardware bring-up projects

I also had opportunity to work with some of nicest colleagues and most-skilled hackers,

Doing presentation in room full of awesome hackers

However, I have decided to leave Bluesystems at end of this month. I am thankful to Bluesystems for sponsoring work on KDE and in general open-source development. If you are interested in working with them, they are looking for new personnel in various areas, their about page gives more information about this.

Next month after short holidays, I will be joining MBRDI as a consulting software engineer for my next adventure.

I hope to continue my volunteer involvement in KDE community and Plasma Mobile as time permits.

Day #7 of the #100DaysToOffload series.


Hello everyone, as it appears the Latte Dock issue with Plasma 5.22 was solved by openSUSE. Everyone should thank Fabian Vogt for providing the relevant patch and give a few more months life for v0.9.x branch.

You can get both  v0.9.12 [stable]  and v0.9.91 [pre-beta of v0.10.x] from*

* archives have been signed with gpg key: 325E 97C3 2E60 1F5D 4EAD CF3A 5599 9050 A2D9 110E


You can find Latte at Liberapay if you want to support,     Donate using Liberapay

or you can split your donation between my active projects in kde store.

Sunday, 16 May 2021

Hello everyone, this is a notice for users and distro packagers.
Latte v0.9.11 is the last published stable version for v0.9.x branch but it is not updated or maintained any more. It has not beed updated for more than a year and unfortunately  the next stable branch v0.10.x is not ready yet. I will probably need three or four months from now to complete its implementation.
The bad news is that v0.9.11 is not compatible with Plasma 5.22 . All users using v0.9.11 when they update to Plasma 5.22 will observe a broken Latte Tasks plasmoid.
  • Distros should update to latest Latte git version which I call pre-beta and is versioned v0.9.91 in master branch
  • Someone steps in and publishes a new v0.9.12 release that is compatible with Plasma 5.22 . No problem if some features do not work, it just needs to provide a valid Latte Tasks plasmoid
  • Users after 5.22 should switch to plasma panels and wait for official Latte v0.10.x to be provided from their distros
All relevant talk can be followed at: bug#413187

Saturday, 15 May 2021

Drumstick Multiplatform MIDI File Player 1.3.0 has been released this week, right after the Drumstick Libraries 2.2.0 and VMPK 0.8.3; business as usual: we write programs, we release stuff. This post is about the first program, a MIDI file player (reloaded). Let's start by the beginning...

10 years ago, there was not a fully featured MIDI file player for Linux. Of course, there was Linux software that could (barely) play MIDI files, but nothing comparable to the vanBasco MIDI Karaoke player (which is a Windows 32 bit application, updated the last time in 2006). This program can be run in Wine, by the way. The key features of the vanBasco player are described in its site, and anyone with a musical background can identify its value, beyond the entertainment use case:

  • lyrics can be displayed in a resizable window or full-screen
  • control window: ability to change tempo, volume, key of song
  • real-time MIDI output window: shows notes, volumes, and instruments, can mute or play solo individual instruments
  • piano view: displays notes on a big piano keyboard

The KDE 4 desktop was starting to become mature and stable at the time, so I've decided to scratch my itch rewriting the old and abandoned KMid  application, adding my favorite features from vanBasco. This was already told on this blog a few times. KMid2 was a total rewrite almost from scratch, with the additional goal to make it multiplatform. Indeed, it was possible to build and run it on Linux, macOS and Windows, but there wasn't an easy way to deploy KDE programs on macOS and Windows at the time, so the only viable target was Linux. On the other hand, because the chosen architecture, it  was difficult to maintain and port the program to other platforms. Then, several Linux distributions boycotted this application, with the total indifference of the KDE community. Good riddance.

Fast forward to the roaring twenties. Nothing changed for Linux. The vanBasco player is still the king in the Windows world. In spite of most Windows 10 users running a 64 bit Operating System, vanBasco is rotting its 32 bits. The only alternative fulfilling the four mentioned features is Falcosoft MIDI player. I don't know about native macOS alternatives, either. Of course there are players for macOS, and WinAmp for Windows, and even VLC plays MIDI files, but that is not what I'm talking about...

I prefer to avoid hard use cases. Someone asked me once about my VMPK program: how it would be classified? Is it a Game? No, it is not a game, it is a toy! A game has a set of rules that the player must follow to reach the final goal: to win the game. On the other hand, a toy has no written rules. The player can explore, learn, and have fun on its own. No winners, no losers. Sometimes a good game may be repurposed by the users, like Wolfenstein 3D, but it is uncommon. It is in the definition of free software: the freedom to run the program as you wish, for any purpose.

Anyway, here is an usage example for this program: there is a choir, with a conductor or composer that arranges or edits pieces using some MIDI software like Rosegarden, MuseScore, Frescobaldi, or similar. He prints the scores (or exports PDF files for electronic distribution) for the singers. He also exports the pieces as MIDI files, that can be loaded by dmidiplayer, and used by the singers to learn and practice the lyrics and music of each voice. The examples in dmidiplayer include some choral music, edited in Rosegarden and directly exported as MIDI files.

You can download this program for free, either as sources that you may study, modify and build, or an AppImage for any Linux distro, or as ready to install packages for Windows, and macOS, from Sourceforge and GitHub.

There is also a Flatpak available at Flathub. And thanks to deb-multimedia, there are also deb packages for Debian and Ubuntu users.

Friday, 14 May 2021

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

Branch predictor: How many “if”s are too many? Including x86 and M1 benchmarks!

Tags: tech, cpu, performance

This is a very interesting deep dive in how branch predictors work. Also comparing timing profiles between different families of CPUs.

The price of dynamic memory: Allocation - Johny’s Software Lab

Tags: tech, memory, performance

Interesting piece covering: how a memory allocator works, why it can be slow, how to use it the best way possible and how to pick an allocator for your project.

FragAttacks: Security flaws in all Wi-Fi devices

Tags: tech, security, wifi

Oops… security flaws ready to exploited in Wi-Fi again. And that includes WPA3.

Incrementally porting a small Python project to Rust

Tags: tech, rust, python

The use of PyO3 keeps being very interesting for Rust / Python interoperability. The porting experiment in this article is well done and shows well the strength and weaknesses of both.

The Mortifying Ordeal of Pairing All Day

Tags: tech, programming, pairing

Like everything, Pair programming also has a dark side. It’s obviously more potent if you do it too much.

Praise is different from positive feedback (positive feedback is better) - Jacob Kaplan-Moss

Tags: management hr

Very insightful view on the differences between praises and positive feedback. It’s indeed very easy to conflate the two by mistake.

Bye for now!