Language Selection

English French German Italian Portuguese Spanish

Kde Planet

Syndicate content Planet KDE
Planet KDE
Updated: 8 hours 11 min ago

It finally arrived

Sunday 19th of July 2020 09:19:40 AM

After waiting a bit over a month, followed by an agonizing week when the new gizmo was at my DHL pickup point and I was some 2h by car away in our summer house.

What gizmo? A Pinebook Pro!

The Pinebook comes in many layers. Like, properly many. I guess this means that it is safe during transport. At least mine arrived without any bruising despite a long journey from Hongkong to Alingsås.

After powering the system on it took quite a long time for the system to reach the Manjaro logo, but once up and running, things move along at a decent pace.

Initial impressions are positive. I had to crank up the backlight a bit, but I’m sitting outdoors (it is overcast). Right now I’m installing the initial set of software updates (some 400+MB to download) while I type this. I also set the keyboard layout to Swedish. I have an ISO keyboard model, so all the keys are there and I don’t mind that the keycaps say something else than what they type.

On the topic of the keyboard. I was warned about the keyboard feel. I was also told that the Pro-model is better than the original Pinebook (which I’ve only used for ~5s at fosdem). To be honest, the keyboard is decent, but not on par with my Dell XPS13, nor my Sculpt Egonomic keyboard.

I still have the night time hacking test to perform – will my wife accept this keyboard clicking in the early morning hours? She preferred the MacBook Pro over the XPS13, so let’s see how this fares ;-).

I also have to see if I can adopt to Manjaro Linux, or if I’ll go to Debian, which I run on all my other machines. It has been years since I tried any alternative distro, so I’ll give it a few days at least to see how much I will miss apt-get – at least it runs KDE Plasma ;-)

Book your BoF for Akademy 2020 now!

Saturday 18th of July 2020 11:32:00 PM
BoF sessions are an integral part of Akademy, it's the "let's discuss and plan how to make things happen" oriented part after the more "this is what we've done" oriented part of the talks.
So go to and book a session to discuss with the rest of the community about something you're passionate! :)

Summer 2020 (real short)

Saturday 18th of July 2020 10:00:00 PM

Most summers I go on a bicycle vacation with my family, and we do a couple hundred kilometers and get back and it puts a reasonable-sized dent in Calamares development in the summer months. Like in 2019 2018 2017.

This year, for personal reasons (and limitations on travel, and on campgrounds, and not wanting to put ourselves or others at risk), the bike trip was limited to 200km and a week in a “trekkershut”.

What this means for the rest of the summer is that I’ll occasionally be “on vacation” which will mean “in the front yard, building an awning” or “in the back yard, building a chicken coop”, but no long absences from the Free Software world. In general, the plan is:

  • release Calamares every two to three weeks,
  • track KDE software releases (Frameworks, Plasma, and the release service) on FreeBSD within a few days of release,
  • keep up with KDE-FreeBSD CI failures and bug reports as and when Nate pokes me about it (thanks, Nate, for watching all the things so I don’t have to).

Contributing via GitLab Merge Requests

Saturday 18th of July 2020 05:53:00 PM

KDE switched over to a self-hosted GitLab instance this year: Many thanks again to our system administrators and all other contributors to this large effort!

This means, e.g. Kate, KTextEditor and KSyntaxHighlighting are now using the GitLab workflow for all contributions. Whereas there are still some old review requests and tasks on, all new contributions should arrive as merge requests on

For the three projects I take care of, you can see what already arrived and is now under discussion or already merged here:

Even this website is located there, regenerated via HUGO every few minutes on the web server hosting it. If you want to write some post about Kate or update some of our pages, please just submit a request here:

I think the current setup is really superior to what we had before. For example, Kate already has now 79 merge requested accepted. It was never easier to contribute than now.

I apologize that sometimes the review speed for merge requests is still lacking, I hope this improves with more people taking care in the development process. But I reelly encourage people that can code to help us out by contributing fixes + features!

We have a rather long backlog of bugs and wishes that are not really taken care of as it should, see the below lists:

We really would appreciate help with this, give it some try.

You want to contribute a new LSP server config? Easy, see this accepted merge request as template.

You want to improve the UI by e.g. having a more “normal” tab bar instead of our LRU variant? Submit a request like this.

It might look in the bug tracker like we are not eager to improve or accept changes, that is not true, we are just not that free to work a lot on our own on larger things, as the team is small and we don’t have that much spare time left to handle it. But if somebody steps up to do it, we will help out to get it in, as can be seen by the already merged stuff.

Still, there might be discussions about what shall go in or not. Please be open to accept the feedback we give and better start early to ask for some, as that might avoid wasted effort on your side.

I think the new infrastructure makes it easier for people to step up and do some work, I really like that. I hope a nice stream of merge requests keep coming in ;=) At least for the projects mentioned above I think scratching your own itch was never easier.

This week in KDE: Get New Stuff fixes and more

Saturday 18th of July 2020 05:09:36 AM

Do you like more features, fewer bugs, and a better UI? I do. So as I look over this week’s update, I smile. In particular, some much-needed fixes for the Get New [thing] system have landed, and more are on the way. We realize this is a pain point and we’re working on it.

In Plasma, we’ve been actually using Bugzilla’s priority feature to prioritize bugfixes, beginning with recent regressions. Every day I triage all new bugs and mark any recent regressions accordingly, then try to try to track down people who can fix things, or do it myself if I’m able to. Hopefully over time we’ll have fewer regressions, and the ones that do slip through will get fixed faster.

New Features

When drawing annotations in Okular, holding down the Shift key now constrains the new annotation to increments of 15 degrees or perfect squares, as in many drawing apps (Luca Citi, Okular 1.11.0)

Okular now has a new hidden action you can put on its toolbar that will toggle right-to-left reading direction for the current document (David Hurka, Okular 1.11.0)

KRunner can now display bookmarks from Falkon too (Alexander Lohnau, Plasma 5.20)

The Properties Dialog can now also display SHA512 checksums for files (Nazar Kalinowski, Frameworks 5.73)

Bugfixes and performance & security Improvements

Dolphin’s selection highlight in Compact and Details modes is no longer too short (Ismael Asensio, Dolphin 20.08.0)

Fixed a recent regression that caused wallpapers downloaded using the Get New [Thing] dialog to not be apply-able (David Edmundson, Plasma 5.19.4)

Fixed a recent regression that caused Plasma to overwrite the system locale settings even if nothing had been changed (Plasma 5.19.4)

When decrypting a Plasma Vault, if the password has been made visible, it now becomes hidden again the moment you submit it so that it doesn’t sit around visible yet un-erasable on the screen for a few seconds (Ivan Čukić, Plasma 5.19.4)

The Plasma Networks System Tray applet no longer crashes when clicked if there is an OpenVPN VPN configured (Lamarque Souza, Plasma 5.20.0)

KRunner’s single runner mode now works (Alexander Lohnau, Plasma 5.20)

The KRunner Plasma widget now respects the list of enabled and disabled runners set in System Settings (Alexander Lohnau, Plasma 5.20)

KRunner no longer crashes when you type anything while the PIM Contact Search plugin is active (Friedrich Kossebau, Frameworks 5.73)

When using the Get New [thing] dialog to download new wallpapers, the “Use” button will now actually apply the wallpaper as it should (Dan Leinir Turthra Jensen, Frameworks 5.73)

When installing something using the Get New [thing] dialog fails, it is no longer incorrectly marked as installed (Alexander Lohnau, Frameworks 5.73)

Get New [thing] dialogs now display the same sort order that the sort order combobox indicates (Dan Leinir Turthra Jensen, Frameworks 5.73)

The URL Navigator in Dolphin and the file dialogs and various other KDE apps now has a saner auto-complete behavior (Noah Davis, Frameworks 5.73)

Plasma widget pop-ups no longer appear in the Task Switcher (me: Nate Graham, Frameworks 5.73)

User Interface Improvements

FUSE mounts are now automatically excluded from the list of disks visible in the Disk Usage widget (Arjen Hiemstra, Plasma 5.20)

The cursor no longer changes in size when hovering over GTK/GNOME app windows (Mikhail Zolotukhin, Plasma 5.20)

After taking into consideration feedback from users and designers, the System Tray icon arrangement options now include a way to return to the old style: one or two rows/columns of small-ish icons that do not scale with panel thickness (me: Nate Graham, Plasma 5.20)

System Tray popups have been made a little bit taller–just a little bit (me: Nate Graham, Plasma 5.20):

The System Tray Battery applet now tells you when the power source you’re plugged into isn’t supplying enough power to charge the battery (me: Nate Graham, Plasma 5.20)

Scrollable pages in Kirigami-based apps can now be scrolled with the arrow keys (Carl Schwan, Frameworks 5.73)

The “Overwrite” action/button used in various places throughout KDE software now has a nice icon (David Hurka, Frameworks 5.73)

When the file type list in open/save dialogs would show multiple entries with the same name, they are now disambiguated by appending the filename extension (Albert Astals Cid, Frameworks 5.73):

The icons-only view buttons in the Get New [thing] dialogs now show tooltips so you can tell what they are (Alexander Lohnau, Frameworks 5.73):

How You Can Help

If you are an experienced developer who would like to make a gigantic impact very quickly, fix some recent Plasma regressions or longstanding bugs. Everyone will love you forever!

Beyond that, have a look at to discover ways to help 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!

Finally, consider making a tax-deductible donation to the KDE e.V. foundation.

Kubuntu 19.10 Eoan Ermine reaches end of life

Friday 17th of July 2020 05:19:16 PM

Kubuntu 19.10 Eoan Ermine was released on October 17th, 2019 with 9 months support.

As of July 17th, 2020, 19.10 reaches ‘end of life’.

No more package updates will be accepted to 19.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 continues to be supported.

Users of 19.10 can follow the Kubuntu 19.10 to 20.04 Upgrade [2] instructions.

Should for some reason your upgrade be delayed, and you find that the 19.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 19.10 Eoan Ermine.

The Kubuntu team.

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

Krita, OpenGL and Qt

Friday 17th of July 2020 08:15:42 AM
The Beginning

Adrian Page first coded an OpenGL-based canvas implementation for Krita in 2005. That was back in the Qt3 days. OpenGL was fairly simple back then, but we had to duplicate all our canvas handling code, once implemented in OpenGL, once implemented with QPainter.

Krita’s canvas code executes in three phases. There’s the image projection, that is, the result of combining all the layers, which is drawn first. Then we draw the canvas decorations: that’s the selection outline, the guides, the assistants, the reference images and so on. Then we draw the tool decorations: that’s the outline cursor, the line for the straight line or ruler tool and so on.

Obviously, implementing all of that twice, once in  OpenGL, once with QPainter isn’t ideal.

The Good Days

So we were elated when Qt4 appeared. Qt4 came with an OpenGL based QPainter engine. This was ideal; we could split up our canvas code. The image would be drawn with pure OpenGL on a QGLWidget or with QPainter on a QWidget, and the canvas decorations and tool decorations would be drawn with QPainter on either canvas.

The Qt documentation even came with a nice example showing how this was to be done.

The First Fly in the Ointment

However, the Qt developers apparently saw the OpenGL QPainter engine more as a way to speed up the drawing of QWidgets than something that application developers would use. And the OpenGL QPainter engine never was able to render a complex application completely correctly.

So at some point, the engine stopped working on macOS. Mostly because Apple doesn’t want people to use OpenGL, so they’re starving their drivers from development, but also because the Qt developers thought that the OpenGL QPainter engine was a failed experiment because it didn’t improve performance when painting their widgets: they had forgotten that applications developers are using QPainter in their OpenGL applications. Or even told them not to do that. Though the documentation never reflected that opinion.

That sucked, since we needed it, and in 2016 we had to spend a Summer of Code slot on fixing the OpenGL QPainter engine so it worked on macOS with OpenGL 3.2 Core Profile. That landed in Qt.

R.I.P Touch UI for Krita

With the migration from Qt4 to Qt5 something else happened: Qt4 QML was based on QGraphicsView. I’ve always suspected that QGraphicsView was created for companies that needed mapping software, but in the Nokia days there were several attempts to use QGraphicsView as a basis for a mobile ui framework, DUI (best link I could find; there’s serious loss of history here).

Those attempts failed, until someone came up with QML, which initially was also rendered with QGraphicsView.

We used QML to create Krita Sketch and Krita Gemini. Because it was based on QGraphicsView, the touch ui we created worked seamlessly with our OpenGL-based canvas.

When Qt5 came out, QML was based on OpenGL and a scenegraph. We spent several months and quite a bit of money trying to integrate our OpenGL canvas in in the new scenegraph, but it just did not work. At all. It couldn’t be made to work, and Krita Sketch and Krita Gemini died.

(As an aside: it was much harder than we had expected to port our OpenGL code from Qt4 to Qt5. It was a huge hassle, in fact.)

The Next Episode

And then Google Chrome happened.

The quality of OpenGL drivers on Windows was always variable, sometimes even really bad. We had already encountered that when developing Krita Sketch, when we suddenly had a lot of Windows users.

Google encountered the same problems with Chrome, and they implemented a solution: Angle.

Angle seamlessly translates OpenGL into Direct3D. And once Chrome used that, all their crashes were gone.

And the GPU manufacturers had no reason all anymore to fix their drivers, so they didn’t. Games would use Direct3D, Chrome used Angle, and pretty soon Qt added an option to use Angle, too, because otherwise QML-based applications on Windows would keep crashing.

This was excellent news for us. We started using Angle, and the number of bug reports dropped a serious amount. And when we wanted to support HDR screens on Windows, the fact that we were using Angle already was great, because that enabled us to make HDR work, because on Windows, HDR can only be made to work when the window is rendered using Direct3D.

The HDR patches still haven’t landed in Qt, so we are carrying them, along with a lot of other patches that are needed to make Krita work well.

We regularly port those patches to newer versions of Qt5, but we make all our Krita binary builds with Qt 5.12, because every version of Qt since 5.12 has been too buggy to use. For example: with 5.15, using a QMdiArea in subwindow mode will hang on Windows.

Except for the fact that Krita Sketch was still dead, and we were porting to Android, and a mobile UI would have been nice, everything was fine.

Qt6 Drops Angle

Because, obviously, Qt’s Angle build option only  existed to make sure that QML apps would work on Windows, not for anything, Qt6 has dropped the Angle option…

Because there’s going to be a new framework which will use the various GPU API’s (Metal, Vulkan, Direct3D, OpenGL) directly with a abstraction layer (Rendering Hardware Interface ) above them that will be used to render the QML scenegraph. It looks like that’s all internal to Qt, though.

It’s really hard to find documentation, but it looks like QPainter will render using those modules; but what isn’t clear is what will happen when we’re going to use QPainter on a QOpenGLWidget. Or would we have to implement a Metal canvas, a Direct3 canvas, and an OpenGL canvas? And will we be able to access the HDR functionality on Windows?

Or should we just patch Qt6 so it can be built with Angle again?

Konsole in 2020

Thursday 16th of July 2020 12:00:00 AM

Konsole is having a resurge in the moment, it’s the terminal emulator of choice for the power user that wants to break the 4th wall in *nix systems. Right now it can do almost all the things I want it to do, and a few more.

Since last year you can use splits in Konsole, with full drag & drop support between tabs and windows.

You can also use Konsole to quickly check for thumbnails of anything that dolphin can show you, just by hovering with the mouse (and depending of your configuration) pressing shift/control/alt. To my knowledge Konsole is the only terminal emulator that supports this.

Probably you already used ls to list a file that you need to get the full url, to open in an unrelated program that does not accept the common way to open files via the shell, and you need to paste into a dialog, or you just need to send the full path of a file for a project colleague. I had problems with this untill I snapped and implemented a way for konsole to Copy Location, it copies the full file path of the selected file, and adds this data to your clipboard.

Konsole supported for quite a while a way for you to click in a file and open it in a the default editor (you need to have this configured in the profile) - but sometimes we don’t want to open it in the default file, we wan’t to visualize a image in gwenview or edit it in gimp, so now konsole supports a Open With menu quite helpful when you don’t remember the name of the app you want to use but remember the icon. :)

Now a few features I’m working that I expect that will be ready for the next version of konsole, those are still in review and I don’t know when they will be ready, it’s just a sneak peek:

Configurable dimm stength for inactive terminals - when you are working with split views and many terminals, there’s a option in the profile that makes the terminals without focus darker, so it’s easier to know which terminal you are, but it was not possible to configure the amount of darkening - and different people have different needs, so now you can do this: (not merged yet)

Improved broadcast support - Konsole already supported this, but it did not play well with splits, and it was not really easy to integrate multiple windows. How you can now select what kind of broadcast group a terminal belongs to, any terminal that belongs to the same group will send data to it, there’s also a None group - for terminals that should not send data anywhere, and a Broadcast to All groups, that will push data everywhere - despite being in the group or not. (not merged yet)

Support for URL Escape Codes. There’s a spec that specifies how a terminal application can embbed a URL inside of a block of text, by using the special notation: \e]8;;\e\\click here\e]8;;\e\\\n this is equivalent to the html code <a href="> click here </a> and there’s a work in progress implementation for that in the works (featuring a VIP list of accepted schemas, currently only file, http and https are allowed, but the user can overrite)

Those are all of the features that I worked (minus tons of bugfixes, security improvements and general rewrites that are unrelated to new features). I hope you all enjoy the new konsole, that is still one of the fastest terminal emulators around, even tough it’s packed with features for the experienced and novice user.

foss-north kdenlive workflow

Wednesday 15th of July 2020 08:21:47 PM

As some of you might already have noticed, we’ve complemented foss-north with a new pod / vod / vlog – I’m not sure what to call it. Basically, it is a video based pod cast (making it available as a audio only pod-cast is high on the todo). Our main focus right now is a series on licenses and copyright, but there is more to come.

As a part of this, I’ve started editing videos in kdenlive on a weekly basis, and I’m very happy with it so far.

In this blog, I want to share my workflow. It is probably far from ideal, but it does the work for me.

I usually start with a set of presentation slides that we’ve used to direct the discussions. These are exported as pdf, which is then converted to 1920×1080 pngs for consumtion in kdenlive.

I do this in two steps using ImageMagick, as the results seems nicer by first rendering too large images and scaling them down.

convert -verbose -density 300 ../open\ projects-1.pdf -quality 100 -sharpen 0x1.0 11.png mogrify -resize 1920x1080 *.png

The session is recorded using OBS from our Jitsi instance, but we also encourage each participant to record their audio separately, as it makes it easier to fix things afterwards. (foss-north now self-hosts a Jitsi instance – check out to learn about how to setup virtual conferences).

You would be surprised over how many times we’ve run into issues with one or more sound recordings. We’ve had:

  • Too low volume (inaudible)
  • Too high gain (noisy)
  • Local echo of the rest of the participants in one recording (no use of headphones)
  • No recording (forgot to press record)

I’m sure the list will grow longer as we record more episodes :-)

Before I start cutting the recording, I use one of my favorite features in kdenlive. First I set the Jitsi recording as the audio reference as shown below.

Then for each audio track, I tell kdenlive to align it to the reference. This will position it correctly in relation to the Jitsi recording, meaning that I can fade in and out of individual recordings without having to worry about any time shifts.

Finally, I select all the audio recordings and group them. This means that all editing I do (cuts, movements, etc) is applied to all channels.

Now it is just a matter of listening for trouble (you can spot awkward silence in the visualization of the audio tracks), press i to mark the beginning of a section, press o to mark the end, and then shift+X to cut it out.

In general, I try to edit as little as possible, but tightening some parts by removing silence, and sometimes remove failed parts when we’ve decided to start over a section.

Finally I add the pngs as a video stream, our pre-recorded intro sequence, and a YouTube friendly end-screen and click render and go to bed :-)

Compiling Krita for ARM: an AppImage tale

Wednesday 15th of July 2020 02:15:00 PM
The AppImage running on a Raspberry Pi 3B+. It's slow, but it works

Week 6: GSoC Project Report

Wednesday 15th of July 2020 04:27:29 AM

This week I worked on writing tests for interactions between different parts of Krita and investigated how to update all affected items in the storyboard.

I added two test classes, one for interactions between keyframe channels and animation interface and one for the interaction between keyframe channel and the storyboard docker. This was essential because the interaction is broken up into two stages. First the keyframe channel emits signals to the animation interface of the current image when any changes, such as add, remove, move are made. These signals result in emission of similar signals from the animation interface. These final signals can be connected to any part of Krita if it has a pointer to the current image, which dockers have. The first class of tests passes after some changes. I have completed parts of the second test. Some tests are yet to be implemented.

Updating all affected items in the storyboard would cause the canvas to update slowly if we update all items in the same thread. So we would have to use multi-threading for this purpose. There are some classes that already do that, I will use those classes. As this is a non-trivial task I postponed this to the next week.

I faced some problems due to my laptop having some hardware problems, and I had to give it away for repair

Weekly Report 5

Tuesday 14th of July 2020 12:00:00 AM
GSoC Week 6 - Qt3D based backend for KStars

In the sixth week of GSoC, I worked on adding mouseevents and integrate the custom qt3d window with existing skymap

What’s done this week
  • Shaders for panning and zooming.

  • camera controller in custom window.

The Challenges
  • Integration issues with the original SkyPainter API written to support multiple backends.

  • Use of new custom camera controller and view matrix.

  • Zooming and focus for deep star objects.

What remains

My priorities for the next week include.

  • Adding remaining skymap events.

  • Writing 3d calls for skymapcomposite.

  • Debug deep star objects and get started with other sky objects.

The Code

CMake-Based Qt Creator Snapshots

Monday 13th of July 2020 01:28:32 PM

About a year ago we started porting the build system that we use for building Qt Creator itself from qmake to CMake. Nowadays we are in the state that many Qt Creator developers use CMake for building Qt Creator for their daily work, but the official packages are still based on the qmake build.

Week #6 Progress [MyPaint Engine]

Monday 13th of July 2020 11:40:00 AM
Last week my prime focus was to add more and more settings in the preset editor and so as to make mypaint brushes a bit more customizable. I used KisCurveOptionWidget class which Krita already has and modified it so that it can accomodate the settings and dynamic mypaint brush options. This went on to become a lot more complicated than I anticipated. Although, it works fine there are still a lot of bugs and finishing required to mark this as complete.

Preset Editor  This is the layout of how the preset editor looks like and it is still far from complete. I need to categorise all the settings in the form of a tree view. I am also quite sceptical about the way of handling mypaint settings internally. I will check if that is right or some alternative approach would be a better fit and make the required changes. I will look at all those things this week. If everything goes fine this would be complete by this week's end.
Till then, Good Bye :)

Qt Creator 4.13 Beta released

Monday 13th of July 2020 09:41:49 AM

We are happy to announce the release of Qt Creator 4.13 Beta!

KF6 Progress Report: Almost Bastille Day (July) Edition

Sunday 12th of July 2020 01:30:00 PM

So the world has been hectic lately, dunno if you’ve seen the news, but that means that I didn’t publish an update since my previous KF6 progress report back in February! Now that the lock down has been (temporarily?) lifted where I live and that things are a bit less crazy, it’s time for an update.

An actual Qt 6 is not published yet and we didn’t branch for KF6 yet either. Still as can be seen on the KF6 Workboard there are plenty of tasks in our backlog which can be acted upon now. No need to wait to participate, all the work done now will make the transition to KF6 easier later on anyway.

What has been done since the last post?

On the workboard, we currently have 22 tasks in progress and 4 tasks done. Clearly that’s not a huge activity in more than four months but the state of the world might explain it in part. Obviously with so little tasks done, they mostly revolve around our usual suspects.

If you fancy becoming one of the unsung heroes of KDE, come and help working tasks from the KF6 Workboard! More hands are needed and right now is a good time to discover it and get into it than when Qt6 will be released. Indeed, when Qt6 will be around it will be much less quiet around here. :-)

Let’s see the tasks done during the past couple of months (in no particular order):

Thanks for everyone involved!

KDE Frameworks Community Analytics

Per usual, I will use the opportunity to look at the community analytics for KDE Frameworks itself. That’s why I ran my scripts against the repositories in the frameworks section of the KDE repositories tree. Of course, this means we’ll capture some activity unrelated to the KF6 transition. Still I think it’s interesting to see how KDE Frameworks itself is doing.

Let’s start with the commit activity since the previous KF6 Progress Report.

[KDE Frameworks Activity since the February update, full page version]

During that time frame, we got 126 different committers. That’s quite a lot indeed the biggest amount of committers since I started writing those reports! Admittedly, the longer time spans skews this quite a bit, so I thought I’d add the team size trend for the past ten years to see.

[KDE Frameworks Team Size since January 2010, full page version]

Unsurprisingly we didn’t have a super growth, so the 126 above is really due to the longer time window. That being said it looks like the trend has been going slightly up since the past couple of years, always a good thing.

Now, how does the code contributor network looks like?

[KDE Frameworks Contributor Network since the February update, full page version]

Unsurprisingly, we find our usual suspects again as very central to the network. Like the last couple of times we find a couple of lesser known names in that set of central people… Although at that point I can stop saying this, it’s been a few times clearly they’re part of the team now. Well done!

How You Can Help

Next time, your name could be in visualizations like the ones above!

Check out the KF6 Workboard and pick a task to help us toward this great transition. If you need help to get started, feel free to contact us on the #kde-devel IRC channel on Freenode.

Finally, consider making a tax-deductible donation to the KDE e.V. foundation.

20.08 releases branches created

Saturday 11th of July 2020 10:16:00 AM
Make sure you commit anything you want to end up in the 20.08 releases to them

We're already past the dependency freeze.

The Feature Freeze and Beta is this Thursday 16 of July.

More interesting dates
    July 30, 2020: 20.08 RC (20.07.90) Tagging and Release
  August  6, 2020: 20.08 Tagging
  August 13, 2020: 20.08 Release


May/June in KDE PIM

Saturday 11th of July 2020 08:00:00 AM

Following Dan here’s the summary of what happened around KDE PIM in the last two months. While the focus was mainly on the 20.04.x maintenance releases and KDE’s source code hosting and review systems migrated to a Gitlab instance during that time, development continued at full steam with more than 1,800 changes by 34 contributors.

  • Fix parsing email headers with a name that is a prefix of a well-known header.
  • Fix an extra space character being added to UTF-8 encoded attachment file names (bug 362650).
  • Add support for displaying generic Apple Wallet passes, rather than crashing when encountering one as an attachment (bug 422325).
  • Fix configuration changes in maildir accounts not being propagated (bug 415922).
  • Fix HTML replies being broken in some cases (bug 421908).
  • Allow to show the folder an email is in message list and message tool tips (bug 420644).
  • Fix empty envelope From in some outgoing emails (bug 420766).
  • Display recurring to-dos on their due date/time in the agenda view.
  • Display all-day to-dos on their due date in the agenda view (bug 417982).
  • Show correct icon names for recurring to-dos.
  • Fix serialization of recurring to-do’s start date (bug 345565).
  • Fix crash when deleting an event template (bug 421873).
  • Show all available holiday regions in KOrganizer configuration dialog.
Holiday region selection now also showing multiple regions per country.
  • Improve tool tips for to-dos (bug 360730).
  • Remove time-of-day from Event Viewer display of all-day to-dos.
  • Ask to set a default events folder if none is set yet.
  • On first run, show alarms from the last 10 days.
  • Do not accept rich text in notepad (bug 421216).
  • Fix help access in configuration dialog on Windows.
Common Infrastructure
  • The CalDav/CardDav access framework KDAV is now finally part of KDE Frameworks with the 5.72.0 release.
  • Compatibility issues with QtWebEngine from Qt 5.15 have been fixed in KMail and Akregator.
  • Data and settings import/export has been significantly extended, also covering identities, mail transports and filters now for example.
  • Fixed Akonadi searching for file mysql-global.conf at wrong path (bug 422079).
General Work

There’s also a number of global (and ongoing) tasks aimed at the long-term maintenance and maintainability. Considering some of the code still in active use today can be traced back to the late 90s this needs continuous attention as well.

  • One of the obstacles in making the KDE PIM codebase more accessible to new developers are some of the historically grown mixed-purpose libraries and modules that can make it somewhat unpredictable where to find a certain bit of code. In order to address this and ideally reduce the amount of such modules a number of components have been moved around to clean this up and to untangle dependencies.
  • Preparation for the Qt6/KF6 transition in the near future continued by porting away from various bits of deprecated API in Qt5 and KF5.
  • There is an ongoing effort to make our source code REUSE compliant, which uncovers the occasional license issue that is being cleaned up in the process.

Additionally, numerous memory management issues found by ASan have been fixed all over the place.

Help to make Kontact even better!

Take a look at some of the junior jobs that we have! They are simple, mostly programming tasks that don’t require any deep knowledge or understanding of Kontact, so anyone can work on them. Feel free to pick any task from the list and reach out to us! We’ll be happy to guide you and answer all your questions. Read more here…

This week in KDE: New features galore!

Saturday 11th of July 2020 04:28:12 AM

Tons and tons of awesome new features and UI polish landed this week, alongside an equally weighty ton of important bugfixes.

New Features

Elisa now lets you optionally display all Genres, Artists, or Albums in the sidebar, below other items (Matthieu Gallien, Elisa 20.08.0):

Elisa’s playlist now displays the progress of the currently playing song inline (Stef Lep, Elisa 20.08.0)

Konsole now has a new on-by-default-but-disable-able feature to display a subtle highlight for new lines coming into view when the terminal output is rapidly scrolling by (Thomas Surrel, Konsole 20.08.0)

System Tray icons now automatically scale to fit no matter the panel’s thickness, and you can now choose for yourself how many rows or columns to display if you want (me: Nate Graham, Plasma 5.20)

Bugfixes & performance Improvements

Dolphin now correctly respects your preference regarding what to do when opening executable files (Wolfgang Bauer, Dolphin 20.04.3)

When typing a search term in Dolphin, the cursor position no longer gets reset after results begin to appear (Ismael Asensio, Dolphin 20.08.0)

Elisa got some high DPI fixes relating to line thicknesses and icon sizes (me: Nate Graham, Elisa 20.08.0)

When using a pen for input on Wayland, the position of the drawn lines is no longer vertically offset by the height of the titlebar (Aleix Pol Gonzalez, Plasma 5.19.3)

Applying a Global Theme now also changes the colors appropriately for GTK applications (Mikhail Zolotukhin, Plasma 5.19.4)

KRunner and Kickoff/Kicker/Application Dashboard can once again be used to open settings windows that are not visible directly in System Settings, such as the Trash or Breeze theme settings pages (Alexander Lohnau, Plasma 5.19.4)

The “Text Only” display style for the new system monitor widgets now works properly (Marco Martin, Plasma 5.19.4)

Fixed a crash on Wayland when waking up the computer while multiple screens are attached (Andreas Haratzis, Plasma 5.20)

Fixed a bug that could cause the Task Manager’s icons to be obscured when changing the resolution or display the wrong icons when a screen is turned or of unplugged (Alexander Kandaurov, Plasma 5.20)

The Plasma Widget Explorer only tells you that there’s already an instance of a widget while that widget is visible in the current screen/activity (David Redondo, Plasma 5.20)

On Wayland, it’s now possible to enter full screen mode in MPV by double-clicking on the video (Benjamin Port, Plasma 5.20.0)

Changing the “Confirm Logout” setting now takes effect immediately, instead of requiring a restart first (David Edmundson, Plasma 5.20.0)

Window decorations now display correctly when using a 30-bit/10-bit-per-color screen (Bernie Innocenti, Plasma 5.20)

Previews for cursor themes now correctly display real-time previews as you hover your cursor over them on Wayland (David Redondo, Plasma 5.20)

Menu separators in QML-based desktop apps now have the correct height and thickness when using a high DPI screen and a global scale factor (Arjen Hiemstra, Frameworks 5.73)

Eagle-eyed viewers will notice that despite the above fix, some of these separator lines are 1px tall and others are 2px. This is a so far unavoidable artifact caused by my using a fractional scale factor on X11. It’s already better on Wayland and I’m investigating whether there’s anything we can do there on X11 too, but this caption is already way too long for any more explanation than that!

Fixed a wide variety of Plasma crashes, in particular with the Thermal Monitor widget (David Edmundson, Frameworks 5.73)

User Interface Improvements

KRDC now displays proper server-side cursors in VNC instead of a small dot with the remote cursor lagging behind it (Oleg Chernovskiy, KRDC 20.08.0):

Yakuake now lets you configure all the keyboard shortcuts that actually come from Konsole (Maximillian Schiller, Yakuake 20.08.0)

The Disk Usage widget now looks more like how it did in Plasma 5.18 and earlier (but still using the fancy new backend, of course) (Marco Martin, Plasma 5.20)

When using the “Raise maximum volume” setting and setting the volume above 100%, the percentage display for the current volume level now changes color to show you that the volume is really really really high (me: Nate Graham, Plasma 5.20)

The old obsolete System Settings Emoticons page is no more (Aleix Pol Gonzalez, Plasma 5.20)

The System Settings Shortcuts page no longer shows mysterious categories such as “KDE Daemon” or “System Settings” for seemingly unrelated actions, and instead groups them all into a new category named “Custom Shortcuts Service” (David Redondo, Plasma 5.20)

The users list in the lock and login screens can no longer be pointlessly dragged around when there’s only one user (David Redondo, Plasma 5.20)

How You Can Help

Have a look at to discover ways to help 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!

Finally, consider making a tax-deductible donation to the KDE e.V. foundation. site now with more App Stores and Downloads

Thursday 9th of July 2020 04:22:21 PM

KDE is All About the Apps as I hope everyone knows, we have top quality apps that we are pushing out to all channels to spread freedom and goodness.

As part of promoting our apps we updated the pages so folks can find out what we make.  Today we’ve added some important new features:

Here on the KMyMoney page you can see the lovely new release that they made recently along with the source download link.

The “Install on Linux” link has been there for a while and uses the Appstream ID to open Discover which will offer you the install based on any installation source known to Discover: Packagekit, Snap or Flatpak.

Here in the Krita page you can see it now offers downloads from the Microsoft Store and from Google Play.

Or if you prefer a direct download it links to AppImages, macOS and Windows installs.

And here’s the KDE connect page where you can see they are true Freedom Lovers and have it on the F-Droid store.

All of this needs some attention from people who do the releases.  The KDE Appstream Guidelines has the info on how to add this metadata.  Remember it needs added to master branch as that is what the website scans. 

There is some tooling to help, the appstream-metainfo-release-update script and recently versions of appstreamcli.

Help needed! If you spot out of date info on the site do let me or another Web team spod know.  Future work includes getting more apps on more stores and also making the release service scripts do more automated additions of this metadata.  And some sort of system that scans the download site or maybe uses debian watch files to check for the latest release and notify someone if it’s not in the Appstream file would be super.

Thanks to Carl for much of the work on the website, formidable!


More in Tux Machines

Programming Leftovers

  • Engineer Your Own Electronics With PCB Design Software

    A lot of self-styled geeks out there tend to like to customize their own programs, devices, and electronics. And for the true purists, that can mean building from the ground up (you know, like Superman actor Henry Cavill building a gaming PC to the delight of the entire internet). Building electronics from the ground up can mean a lot of different things: acquiring parts, sometimes from strange sources; a bit of elbow grease on the mechanical side of things; and today, even taking advantage of the 3D printing revolution that’s finally enabling people to manufacture customized objects in their home. Beyond all of these things though, engineering your own devices can also mean designing the underlying electronics — beginning with printed circuit boards, also known as PCBs. [...] On the other hand, there are also plenty of just-for-fun options to consider. For example, consider our past buyer’s guide to the best Linux laptop, in which we noted that you can always further customize your hardware. With knowledge of PCB design, that ability to customize even a great computer or computer setup is further enhanced. You might, for instance, learn how to craft PCBs and devices amounting to your own mouse, gaming keyboard, or homemade speakers — all of which can make your hardware more uniquely your own. All in all, PCB design is a very handy skill to have in 2020. It’s not typically necessary, in that there’s usually a device or some light customization that can give you whatever you want or need out of your electronics. But for “geeks” and tech enthusiasts, knowledge of PCB design adds another layer to the potential to customize hardware.

  • Programming pioneer Fran Allen dies aged 88 after a career of immense contributions to compilers

    Frances Allen, one of the leading computer scientists of her generation and a pioneer of women in tech, died last Tuesday, her 88th birthday. Allen is best known for her work on compiler organisation and optimisation algorithms. Together with renowned computer scientist John Cocke, she published a series of landmark papers in the late '60s and '70s that helped to lay the groundwork for modern programming. In recognition of her efforts, in 2006 Allen became the first woman to be awarded the AM Turing Award, often called the Nobel Prize of computing.

  • Excellent Free Tutorials to Learn ECMAScript

    ECMAScript is an object‑oriented programming language for performing computations and manipulating computational objects within a host environment. The language was originally designed as a scripting language, but is now often used as a general purpose programming language. ECMAScript is best known as the language embedded in web browsers but has also been widely adopted for server and embedded applications.

  • Alexander Larsson: Compatibility in a sandboxed world

    Compatibility has always been a complex problems in the Linux world. With the advent of containers/sandboxing it has become even more complicated. Containers help solve compatibility problems, but there are still remaining issues. Especially on the Linux desktop where things are highly interconnected. In fact, containers even create some problems that we didn’t use to have. Today I’ll take a look at the issues in more details and give some ideas on how to best think of compatibility in this post-container world, focusing on desktop use with technologies like flatpak and snap. [...] Another type of compatibility is that of communication protocols. Two programs that talk to each other using a networking API (which could be on two different machines, or locally on the same machine) need to use a protocol to understand each other. Changes to this protocol need to be carefully considered to ensure they are compatible. In the remote case this is pretty obvious, as it is very hard to control what software two different machines use. However, even for local communication between processes care has to be taken. For example, a local service could be using a protocol that has several implementations and they all need to stay compatible. Sometimes local services are split into a service and a library and the compatibility guarantees are defined by the library rather than the service. Then we can achieve some level of compatibility by ensuring the library and the service are updated in lock-step. For example a distribution could ship them in the same package.

  • GXml-0.20 Released

    GXml is an Object Oriented implementation of DOM version 4, using GObject classes and written in Vala. Has a fast and robust serialization implementation from GObject to XML and back, with a high degree of control. After serialization, provides a set of collections where you can get access to child nodes, using lists or hash tables. New 0.20 release is the first step toward 1.0. It provides cleaner API and removes old unmaintained implementations. GXml is the base of other projects depending on DOM4, like GSVG an engine to read SVG documents based on its specificacion 1.0. GXml uses a method to set properties and fill declared containers for child nodes, accessing GObject internals directly, making it fast. A libxml-2.0 engine is used to read sequentially each node, but is prepared to implement new ones in the future.

  • Let Mom Help You With Object-Oriented Programming

    Mom is a shortcut for creating Moo classes (and roles). It allows you to define a Moo class with the brevity of Class::Tiny. (In fact, Mom is even briefer.) A simple example: Mom allows you to use Moo features beyond simply declaring Class::Tiny-like attributes though. You can choose whether attributes are read-only, read-write, or read-write-private, whether they're required or optional, specify type constraints, defaults, etc.

  • Perl Weekly Challenge 73: Min Sliding Window and Smallest Neighbor

    These are some answers to the Week 73 of the Perl Weekly Challenge organized by Mohammad S. Anwar. Spoiler Alert: This weekly challenge deadline is due in a few days from now (on Aug. 16, 2020). This blog post offers some solutions to this challenge, please don’t read on if you intend to complete the challenge on your own.

  • [rakulang] 2020.32 Survey, Please

    The TPF Marketing Committee wants to learn more about how you perceive “The Perl Foundation” itself, and asks you to fill in this survey (/r/rakulang, /r/perl comments). Thank you!

Hardware With Linux Support: NUVIA and AMD Wraith Prism

  • Performance Delivered a New Way

    The server CPU has evolved at an incredible pace over the last two decades. Gone are the days of discrete CPUs, northbridges, southbridges, memory controllers, other external I/O and security chips. In today’s modern data center, the SoC (System On A Chip) does it all. It is the central point of coordination for virtually all workloads and the main hub where all the fixed-function accelerators connect, such as AI accelerators, GPUs, network interface controllers, storage devices, etc.

  • NUVIA Published New Details On Their Phoenix CPU, Talks Up Big Performance/Perf-Per-Watt

    Since leaving stealth last year and hiring some prominent Linux/open-source veterans to complement their ARM processor design experts, we have been quite eager to hear more about this latest start-up aiming to deliver compelling ARM server products. Today they shared some early details on their initial "Phoenix" processor that is coming within their "Orion" SoC. The first-generation Phoenix CPU is said to have a "complete overhaul" of the CPU pipeline and is a custom core based on the ARM architecture. They believe that Phoenix+Orion will be able to take on Intel/AMD x86_64 CPUs not only in raw performance but also in performance-per-Watt.

  • Take control of your AMD Wraith Prism RGB on Linux with Wraith Master

    Where the official vendor doesn't bother with supporting Linux properly, once again the community steps in to provide. If you want to tweak your AMD Wraith Prism lighting on Linux, check out Wraith Master. It's a similar project to CM-RGB that we previously highlighted. With the Wraith Master project, they provide a "feature-complete" UI and command-line app for controlling the fancy LED system on AMD's Wraith Prism cooler with eventual plans to support more.

The Massive Privacy Loopholes in School Laptops

It’s back to school time and with so many school districts participating in distance learning, many if not most are relying on computers and technology more than ever before. Wealthier school districts are providing their students with laptops or tablets, but not all schools can afford to provide each student with a computer which means that this summer parents are scrambling to find a device for their child to use for school. Geoffery Fowler wrote a guide in the Washington Post recently to aid parents in sourcing a computer or tablet for school. Given how rough kids can be with their things, many people are unlikely to give their child an expensive, premium laptop. The guide mostly focuses on incredibly low-cost, almost-disposable computers, so you won’t find a computer in the list that has what I consider a critical feature for privacy in the age of video conferencing: hardware kill switches. Often a guide like this would center on Chromebooks as Google has invested a lot of resources to get low-cost Chromebooks into schools yet I found Mr. Fowler’s guide particularly interesting because of his opinion on Chromebooks in education... Read more Also: Enabling Dark Mode on a Chromebook (Do not try this at home)

Christopher Arnold: The Momentum of Openness - My Journey From Netscape User to Mozillian Contributor

Working at Mozilla has been a very educational experience over the past eight years. I have had the chance to work side-by-side with many engineers at a large non-profit whose business and ethics are guided by a broad vision to protect the health of the web ecosystem. How did I go from being on the front of a computer screen in 1995 to being behind the workings of the web now? Below is my story of how my path wended from being a Netscape user to working at Mozilla, the heir to the Netscape legacy. It's amazing to think that a product I used 25 years ago ended up altering the course of my life so dramatically thereafter. But the world and the web was much different back then. And it was the course of thousands of people with similar stories, coming together for a cause they believed in. The Winding Way West Like many people my age, I followed the emergence of the World Wide Web in the 1990’s with great fascination. My father was an engineer at International Business Machines when the Personal Computer movement was just getting started. His advice to me during college was to focus on the things you don't know or understand rather than the wagon-wheel ruts of the well trodden path. He suggested I study many things, not just the things I felt most comfortable pursuing. He said, "You go to college so that you have interesting things to think about when you're waiting at the bus stop." He never made an effort to steer me in the direction of engineering. In 1989 he bought me a Macintosh personal computer and said, "Pay attention to this hypertext trend. Networked documents is becoming an important new innovation." This was long before the World Wide Web became popular in the societal zeitgeist. His advice was prophetic for me. [...] The Mozilla Project grew inside AOL for a long while beside the AOL browser and Netscape browsers. But at some point the executive team believed that this needed to be streamlined. Mitchell Baker, an AOL attorney, Brendan Eich, the inventor of JavaScript, and an influential venture capitalist named Mitch Kapoor came up with a suggestion that the Mozilla Project should be spun out of AOL. Doing this would allow all of the enterprises who had interest in working in open source versions of the project to foster the effort while Netscape/AOL product team could continue to rely on any code innovations for their own software within the corporation. A Mozilla in the wild would need resources if it were to survive. First, it would need to have all the patents that were in the Netscape portfolio to avoid hostile legal challenges from outside. Second, there would need to be a cash injection to keep the lights on as Mozilla tried to come up with the basis for its business operations. Third, it would need protection from take-over bids that might come from AOL competitors. To achieve this, they decided Mozilla should be a non-profit foundation with the patent grants and trademark grants from AOL. Engineers who wanted to continue to foster AOL/Netscape vision of an open web browser specifically for the developer ecosystem could transfer to working for Mozilla. Mozilla left Netscape's crowdsourced web index (called DMOZ or open directory) with AOL. DMOZ went on to be the seed for the PageRank index of Google when Google decided to split out from powering the Yahoo search engine and seek its own independent course. It's interesting to note that AOL played a major role in helping Google become an independent success as well, which is well documented in the book The Search by John Battelle. Once the Mozilla Foundation was established (along with a $2 Million grant from AOL) they sought donations from other corporations who were to become dependent on the project. The team split out Netscape Communicator's email component as the Thunderbird email application as a stand-alone open source product and the Phoenix browser was released to the public as "Firefox" because of a trademark issue with another US company on usage of the term "Phoenix" in association with software. Google had by this time broken off from its dependence on Yahoo as a source of web traffic for its nascent advertising business. They offered to pay Mozilla Foundation for search traffic that they could route to their search engine traffic to Google preferentially over Yahoo or the other search engines of the day. Taking "revenue share" from advertising was not something that the non-profit Mozilla Foundation was particularly well set up to do. So they needed to structure a corporation that could ingest these revenues and re-invest them into a conventional software business that could operate under the contractual structures of partnerships with other public companies. The Mozilla Corporation could function much like any typical California company with business partnerships without requiring its partners to structure their payments as grants to a non-profit. [...] Working in the open was part of the original strategy AOL had when they open sourced Netscape. If they could get other companies to build together with them, the collaborative work of contributors outside the AOL payroll could contribute to the direct benefit of the browser team inside AOL. Bugzilla was structured as a hierarchy of nodes, where a node owner could prioritize external contributions to the code base and commit them to be included in the derivative build which would be scheduled to be released as a new update package ever few months. Module Owners, as they were called, would evaluate candidate fixes or new features against their own list of items to triage in terms of product feature requests or complaints from their own team. The main team that shipped each version was called Release Engineering. They cared less about the individual features being worked on than the overall function of the broader software package. So they would bundle up a version of the then-current software that they would call a Nightly build, as there were builds being assembled each day as new bugs were upleveled and committed to the software tree. Release engineering would watch for conflicts between software patches and annotate them in Bugzilla so that the various module owners could look for conflicts that their code commits were causing in other portions of the code base. Read more