Skip to content

Thursday, 2 January 2025

Whilst commit numbers aren't a perfect measure of anything whatsoever, they do still provide a good indication of whether a project is healthy or faltering. It's useful to keep an eye on them, and the start of the year is a good time to do that.

I like graphs, everyone likes graphs, they need no further introduction.

Frameworks

Plasma

KWin

Conclusions

My main reason for sharing is before I gathered some data I had a negative feeling about the community health, but none of the data backs it up and it was unfounded, it's hard to get a sense of the state of how the year has gone when you're busy living in it.

There was a bit of a boon last year with KF6/ Plasma 6.0 and this year did see a drop relative to that, but it's merely returning to the former average rather than being anything to worry about. The most important graph is how many new authors and contributors we're getting on a year-by-year basis. The number of total and new contributors is relatively consistent.

Things being unchanged and boring doesn't make for a good post title (hence the Youtube-level embellishing) but is a good place for such a large project.

The 3rd graph included is a measure of how many make up the bulk of commits. If this is 1, it means a sole dev is running the project and that's an unhealthy place to be if they ever leave. If it's too high it means there isn't a core team maintaining it. There's no "right" number, but I feel it's a really interesting metric, especially seeing what happened in Kwin.

About the stats

Graphs were generated from the same scripts used by Curl's dashboard (https://curl.se/dashboard.html). It doesn't have all the stats Curl has as each needed some manual poking to make it more generic.

Frameworks and Plasma stats were made by locally git filterbranching all repos into a mega-repo and using that as a base.

Wednesday, 1 January 2025

I use several non-KDE Qt-based applications which I tend to compile manually from source to use the same non-distro-provided Qt version that I compile KDE software against.

I’ve noticed that I don’t update them as often as the rest of the system, so I decided to see if I can add them to kdesrc-build.

The packages-to-be-built definitions are located in repo-metadata/module-definictions which already contains a few 3rd-party libraries that the KDE frameworks and applications use.

Adding the Strawberry player (fork of Clementine, which was a fork of Amarok 1.x) to the build, was quite straight-forward. I just needed to define the repository, cmake options to make it build the Qt6 version instead of the Qt5 one, and the branch I want to build from.

module strawberry
    repository https://github.com/strawberrymusicplayer/strawberry.git
    cmake-options -DBUILD_WITH_QT6=ON
    branch master
end module

For applications with normal cmake setup, it is as easy as that. But there are applications like recoll which don’t have a CMakeLists.txt file in the top level, and kdesrc-build doesn’t like that.

To ensure that kdesrc-build finds the real src directory for cmake, I needed to do something completely hackhish. I had to pass the path to the source directory, which is otherwise defined automatically by kdesrc-build for each project it builds, to cmake-options:

module recoll
    repository https://framagit.org/medoc92/recoll.git
    cmake-options \
        -DRECOLL_QT6_BUILD=1 \
        -DRECOLL_ENABLE_SYSTEMD=0 \
        -DRECOLL_ENABLE_WEBENGINE=1 \
        -DRECOLL_ENABLE_X11MON=0 \
        -S /kde/src/recoll/src
    branch master
end module

Fortunately, kdesrc-build appends cmake-options the normal cmake arguments, so my -S path overrides the path that kdesrc-build defines.

Tuesday, 31 December 2024

I use Hugo to build my website (which you can explore the source code to on GitHub.) And because I love using KDE applications whenever I can, I do all of my editing - from config files, CSS and Markdown for posts - in Kate.

My song & dance when I want to edit my website is a bit inefficient. I would use Kate, then manually navigate to my folder. Or I would invoke Kate from the command-line to do the same. Then I would open a separate Konsole window (and sometimes the integrated terminal) in order to launch Hugo to build the site. I would then open up a separate terminal to perform git operations.

So I have created a neat workflow that I think is worth sharing, in case you didn’t know Kate had these features. This also serves as documentation to myself whenever I want to re-create it.

Sessions

The first and easiest improvement is to use sessions. You can manage these under the “Session” menu item at the top of Kate.

My sessions window.

Instead of opening a fresh Kate session each time, the folder I was in (which is always my site’s folder) and the open documents I have are saved automatically. Note that you probably need the Projects plugin enabled to have access to the “Projects” tab where it’s state is also saved in the session.

External Tools

The next thing to tackle is making it easier to launch Hugo. We can accomplish this by using External Tools, which is managed under Settings or under the Tools menu item. I have two, one for launching Hugo and the other for stopping it.

These external tools can be pinned to the “Main Toolbar <externaltools>” in the Configure Toolbars window.

These external tools are self-explanatory, but I set the working directory to %{Project:Path} to ensure it’s running at the site root. I also have it set to spit out the Hugo output into the pane, but it doesn’t actually display until the process quits which seems like a bug in Kate.

The output pane when Hugo is finished

It’s not a huge deal, as the output is displayed when I use the “Stop Hugo” action. I suggest using the “-O” argument of hugo server to automatically open your default web browser when Hugo completes initialization.

Ideas

It would be cool to have a preview pane that automatically finds the Markdown file you’re editing and navigate to it, which seems possible. Another nicety would be a native Kate plugin to handle launching/stopping/configuring the Hugo server. But this workflow is already a big improvement over what I had before.

Sunday, 29 December 2024

The Amarok Development Squad is happy to announce the immediate availability of Amarok 3.2 "Punkadiddle"!

2024 was the year that finally introduced a Qt5/KF5 based Amarok 3 release in April, and it was followed by a number of 3.x bugfix and feature releases. Now, to conclude 2024, it is time for Amarok 3.2.0. The most interesting change is probably the ability to build the same codebase on both Qt5 and Qt6. Qt5/KF5 is still the recommended, tested configuration, for now. Qt6 version should be usable, but in addition to any unknown issues, there are a number of known issues documented in README.

Additionally, 3.2.0 includes e.g. collection filtering and Ampache related features and fixes, oldest resolved feature request being from 2013. Multiple long-standing crash bug reports have been closed lately, and probable fixes for various issues observed in crash report data have been introduced. Amarok 3.2.0 should thus feature slightly improved stability. Some 3.2.x bugfix releases are to be expected in 2025, before the focus shifts to preparations for an "Amarok 4".

Changes since 3.1.1

CHANGES:
  • Building an experimental Qt6/KF6 Amarok version is now possible
  • Allow filtering collection by lack of tag / empty tag (BR 325317)
CHANGES:
  • Amarok now depends on KDE Frameworks 5.108
  • Show current track context applet by default
BUGFIXES:
  • Probably fix occasional crashes when filtering collection (BR 492406)
  • Probably fix occasional crashes when clearing CompondProgressBars
  • Fix context view applets on Qt6/KF6
  • Fix Ampache login on server version 5.0.0 and later (BR 496581)
  • Fix crash if Ampache login is redirected (BR 396590)

The git repository statistics between 3.1.0 and 3.2.0 are as follows:

l10n daemon script: 68 commits, +41987, -35275
Tuomas Nurmi: 46 commits, +723, -4854
Raresh Rus: 3 commits, +41, -53
Ian Abbott: 1 commit, +17, -3
Heiko Becker: 1 commit, +0, -3

Getting Amarok

In addition to source code, Amarok is available for installation from many distributions' package repositories, which are likely to get updated to 3.2.0 soon, as well as the flatpak available on flathub.

Packager section

You can find the tarball package on download.kde.org and it has been signed with Tuomas Nurmi's GPG key.

Unfortunately, there won't be any "This Week in KDE Apps" blog post this week as I (Carl) and others are at the #38C3 (Chaos Communication Congress) in Hamburg. But if you are also there, don't hesitate to come by and say hi.

The KDE stand at 38c3

One of the much requested feature for Kdenlive was a modern background removal tool.

Among the many features and enhancements that will come in 2025, we are excited to announce a preview version with a background removal tool using object masks. The feature is based on SAM2‘s object segmentation. You can download the Kdenlive test alpha version from the links at the bottom of this page.

Since this is a testing preview version, the binaries are not signed and you might need to manually allow the install on Windows.

Here is a quick demo of how the feature works in screenshots:

  1. Add a clip to your project
  2. Select a zone to apply the background removal
  3. Click on the Mask button
  4. Select Configure to setup the tool (to be done only the first time)
  1. Click on Install in the Object detection setup

Go drink a coffee while the module is being downloaded and installed (between 5 and 15 minutes depending on your internet connection). Currently there is not much feedback from the install, we will improve this so just be patient.

Kdenlive downloads the smallest model by default. Once it shows up, you can close the dialog and start using the feature.

  1. Click on the Create new mask button
  2. Click on the object you want to keep (foreground)
  3. When the white mask appears, click on Generate Mask
  4. The video mask task starts, drink another coffee

When the video mask is created, it will appear in the mask manager dialog (2).

  1. Drag your clip zone from the clip monitor to timeline
  2. Select the newly created mask
  3. Click on Apply Mask

Success, you can now enjoy your video without the background.

Of course, this feature can also be used for other exciting things like applying an effect or a color correction to a specific object only.

Keep in mind that this is an alpha version, we will enhance and polish it for the upcoming 25.04 version. Happy editing!

Linux AppImage download:

https://files.kde.org/kdenlive/unstable/kdenlive-25.04.0-alpha-x86_64.AppImage.mirrorlist

Windows download:

https://files.kde.org/kdenlive/unstable/kdenlive-25.04-alpha-x86_64.exe.mirrorlist

Flatpak:

Check our experimental nightly version (see instructions at the bottom of our download page)

Screen magnification is an accessibility feature that enlarges the screen to make text, images, and other user interface components easier to see or read. It is not something that requires constant developer attention, however, in Plasma 6.3, the zoom plugin received some improvements that I’d like to go over quickly.

Pixel grid

A script element has been removed to ensure Planet works properly. Please find it in the original post.

Arguably, it will be too hard to read text if the screen is “too” zoomed in. There are several ways how this case can be handled. For example, the magnification factor can be capped (e.g. to x8 or x10), or do nothing and just display blurry upscaled screen contents… or display something else.

With the old behavior, the zoom plugin used not to do anything special when the magnification factor reaches a high value, but with the new behavior, it is going to display the individual pixels on the screen. This can be very useful to developers, designers, etc.

System settings

In addition to the new pixel grid mode, the system settings for the zoom plugin received minor polishing to look more consistent with other config modules.

Future improvements

Keyboard shortcuts are not the only way how the zoom plugin can be triggered. For example, it can be also triggered by pressing Meta and Control keys and scrolling the mouse wheel to zoom. However, it is not exposed anywhere in the user interface and some people may prefer zooming with just the Meta key pressed. In order to address the discoverability issue of the mouse wheel gesture and allow using a different combination of modifier keys, there is already a patch to add the corresponding system setting, but it’s 6.4 material. It would be also nice to move screen magnifier settings from the desktop effects config module to the accessibility config module.

Last but not least, the zoom effect currently uses the bi-linear magnification filter, which produces okay-ish visual results, but it’s worth looking for alternative upscaling algorithms that handle edges better so zoomed in text looks less blurry.

Hello,

I need your help. I’ve created a first version of Skrooge that can be built on KF6 and Qt6 (Its temporary number version is 2.33.8).

I use it daily for managing my own accounts. However, before releasing an official version, I’d like some of you to test it and provide feedback by reporting any issues you encounter.

I’m counting on you! To get started, check out the download section and the README.md.

Thanks in advance!

Friday, 27 December 2024

Bundle Creator

After almost a year, I finally found some time to dive back into Krita. I stumbled upon the Memileo Impasto Brushes bundle, which mimics the texture and thickness of real paint—perfect for adding depth and dimension. Inspired to try them out, I created this quick one-hour painting.

Let’s go for last web review of 2024!


This is Your Brain On Surveillance: New Study Reveals How Awareness of Being Watched Alters Our Brains - The Debrief

Tags: tech, surveillance, psychology, cognition

It looks like it’s not only impacting negatively our privacy. The linked paper (good to read as well) hints at negative impacts on mental health as well. Still needs to be fully validated but it doesn’t look good already.

https://thedebrief.org/this-is-your-brain-on-surveillance-new-study-reveals-how-awareness-of-being-watched-alters-our-brains/


The era of open voice assistants has arrived - Home Assistant

Tags: tech, smarthome, foss

Nice move from the home assistant people. Such open and privacy respecting hardware is needed.

https://www.home-assistant.io/blog/2024/12/19/voice-preview-edition-the-era-of-open-voice/


The Ghosts in the Machine, by Liz Pelly

Tags: tech, music, copyright

You love artists and their music? You probably should get off Spotify then… because they’re clearly at war to reduce even further how much they pay artists. Clearly it’s not about discovering artists anymore, it’s about pumping cheap stock music to increase their margin. Also its clear the remaining musicians trapped in that system will be automated away soon… you don’t need humans to create soulless music.

https://harpers.org/archive/2025/01/the-ghosts-in-the-machine-liz-pelly-spotify-musicians/


My colleague Julius

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

OK, this is a nice parabole. I admit I enjoyed it.

https://ploum.net/2024-12-23-julius-en.html


Can AI do maths yet? Thoughts from a mathematician

Tags: tech, ai, machine-learning, gpt, mathematics

Looks like we’re still a long way from mathematical accuracy with the current generation of models. It made progress of course.

https://xenaproject.wordpress.com/2024/12/22/can-ai-do-maths-yet-thoughts-from-a-mathematician/


Lua is so underrated

Tags: tech, programming, language, lua

It’s a not niche indeed but has its place in some applications.

https://nflatrea.bearblog.dev/lua-is-so-underrated/


Simpler and faster parsing code with std::views::split – Daniel Lemire’s blog

Tags: tech, c++, performance

A good reason to use more modern C++20 APIs for parsing code.

https://lemire.me/blog/2024/12/21/simpler-and-faster-parsing-code-with-stdviewssplit/


A Simple ELF

Tags: tech, unix, elf, system

Nice little introduction to the ELF format.

https://4zm.org/2024/12/25/a-simple-elf.html


Electronics Test Gear on the Cheap

Tags: tech, electronics

Price of such gear definitely went down indeed.

https://bigdanzblog.wordpress.com/2024/12/25/electronics-test-gear-on-the-cheap/


Server-Sent Events (SSE) Are Underrated

Tags: tech, web, http

This is definitely an overlooked alternative to websockets. It doesn’t apply everywhere of course but when it does it’s a good pick.

https://igorstechnoclub.com/server-sent-events-sse-are-underrated/


On Long Term Software Development - Bert Hubert’s writings

Tags: tech, engineering, supply-chain, complexity, dependencies, maintenance

There is some good advice in this piece. If you want to maintain something for a long time, some aspects need to be thought out from the beginning.

https://berthub.eu/articles/posts/on-long-term-software-development/


Problem Driven Development | Stay SaaSy

Tags: tech, project-management, product-management, engineering, quality

Struggling with making your first technical roadmap? Driving it from measurable problems is a good first step.

https://staysaasy.com/engineering/2024/12/17/problem-driven-development.html


The number pi has an evil twin… - Mathstodon

Tags: mathematics

Interesting thread. I didn’t know about this family of constants. Fun stuff.

https://mathstodon.xyz/@johncarlosbaez/113703444230936435



Bye for now!