Skip to content

Friday, 3 January 2025

Happy new year everyone! It’s now 2025, we’ll see what it brings.

Unsurprisingly this week we got a couple of nice “2024 retrospective” articles in this edition, I expect more to show up in the coming weeks. Anyway, let’s go for my web review for the week 2025-01.


Open Source on its own is no alternative to Big Tech - Bert Hubert’s writings

Tags: tech, foss, business

Or why making a dent in the enterprise software space is hard for FOSS… The good news is, it’d require setting up whole ecosystems of services.

https://berthub.eu/articles/posts/open-source-by-itself-is-no-alternative-for-big-tech/


The web is too big, or scaling down

Tags: tech, web, browser, complexity

The Web standards are indeed too complex. That severely limits the possibility of browser engine incumbents. I agree there’s a deeper lesson here about the scale of technologies.

https://scottrichmond.me/the-web-is-too-big/


Elon Musk and the right’s war on Wikipedia

Tags: tech, foss, knowledge, wikipedia, politics

Very good background information on the latest attempt at discrediting Wikipedia.

https://www.citationneeded.news/elon-musk-and-the-rights-war-on-wikipedia/


Does current AI represent a dead end?

Tags: tech, ai, machine-learning, gpt, complexity, emergence, reliability

This highlights quite well the limits of the models used in LLMs.

https://www.bcs.org/articles-opinion-and-research/does-current-ai-represent-a-dead-end/


Performance of LLMs on Advent of code 2024

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

The results are unsurprising. They definitely confirm what we expected. The models are good at predicting the past, they’re not so great at solving problems.

https://www.jerpint.io/blog/advent-of-code-llms/


Things we learned about LLMs in 2024

Tags: tech, ai, machine-learning, gpt, economics, ecology, criticism

Good perspective on how the generative AI space evolved in 2024. There are good news and more concerning ones in there. We’ll see what 2025 brings.

https://simonwillison.net/2024/Dec/31/llms-in-2024/


Databases in 2024: A Year in Review

Tags: tech, databases, business

Good overview on how the databases landscape evolved the past year.

https://www.cs.cmu.edu/~pavlo/blog/2025/01/2024-databases-retrospective.html


Keeping secrets secret with git-crypt

Tags: tech, version-control, git, secrets, tools

Looks like a nice tool for a simple management of your project specific secrets.

https://blog.ktz.me/keeping-secrets-secret-with-git-crypt/


How does your URL parser handle Unicode? – Daniel Lemire’s blog

Tags: tech, web, standard, parsing

Parsers are required to normalize URLs but often they just don’t. To be kept in mind in your code.

https://lemire.me/blog/2025/01/02/how-does-your-url-parser-handle-unicode/


Rules for Writing Software Tutorials

Tags: tech, documentation, writing, tutorial

Need to write a tutorial? Here is a good set of rules to follow. Don’t be fooled, it sounds simple but it is hard work.

https://refactoringenglish.com/chapters/rules-for-software-tutorials/


Mistakes engineers make in large established codebases | sean goedecke

Tags: tech, legacy, engineering

Good advice to work with large legacy code bases. You better know it very well before you make large changes to it.

https://www.seangoedecke.com/large-established-codebases/


That’s not an abstraction, that’s just a layer of indirection

Tags: tech, design, complexity, simplicity, performance

Or why you shouldn’t insert an abstraction just for the sake of it. Also clearly not all abstractions are created equal.

https://fhur.me/posts/2024/thats-not-an-abstraction


Software Design is Knowledge Building

Tags: tech, software, design, knowledge, organization

Very nice piece. This is indeed mostly about building organizational knowledge. If someone leaves a project that person better not be alone to ensure some continuity… lost knowledge is very hard to piece back together.

https://olano.dev/blog/software-design-is-knowledge-building/



Bye for now!

About

Home Automation is mostly, as the name implies, about automation.

The machine you're in front of all work-day has an awful lot of useful information that can be useful in your home management.

I have a script lower my blinds if I turn on the camera during the afternoon as otherwise there's an annoying glare. My office lights and monitor both have a redder hue at night, but disabling night-mode on my PC automatically disables the main light performing redshift too. I want my screen to turn off not 10 minutes after activity, which is simultaneously both annoyingly too long and too short, but the moment the motion sensor in my room says I've left.

Home Assistant, the best open source home automation tool out there supports all of this, but it needs some hooks for the PC to tell it about the current state and invoke actions on the PC.

None of the existing solutions worked well for what I wanted. I wrote something for personal use a few years ago that worked great for me, I ran it in the background and didn't plan to take it further.
During the KDE Goals sprint another user suggested creating something very similar (https://phabricator.kde.org/T17435). That goal may not have been chosen, but it did motivate me to tidy up and document what I had and turn it into a more fleshed out project.

The App

I made a small daemon, named Kiot (derived from "KDE Internet of Things") that exposes this information to your Home Automation software.

This is pre-alpha software, there's no GUI configuration it relies on manually setting up a configuration file to point to your Home Automation server. If there's enough traction I might make it more packagable, and create a UI config over the Christmas break.

There's a bunch of sensors and actions shipped, but it contains a faux plugin system to make extension easy along with hooks for user supplied scripts.

  • User activity
  • Locked state
  • Suspend/Power actions
  • Camera in use
  • Accent Colour
  • Arbitrary Scripts
  • Shortcuts
  • Nightmode Inhibition

Using this from Home Assistant is then as straightforward as possible.

Checking it out

The repository can be found at https://github.com/davidedmundson/kiot which has setup instructions along with developer documentation (https://github.com/davidedmundson/kiot/blob/master/DEVELOPMENT.md) if you want to make any additional plugins.

Reworking and porting my KRunner plugins

Writing KRunner plugins was my first real developer experience with KDE. I started out right after graduating from school in 2019. Since then, I continued to maintain my plugins and correct some of the code-crimes that have been committed. This continued adding some features, removing too obscure features, getting user feedback and also making sure the plugins are easy to install without too much developer knowlege being needed. By maintaining the KRunner framework, I also deprecated lots of API and provided cleaner alternatives as part of the efforts for KDE Frameworks 6. Those changes had to be applied to all the plugins. I also contributed to other developer’s plugins that I found useful.

In this post, I will give you an overview of the different plugins and show you, how they may be useful to your workflow.
All the below mentioned Plugins are compatible with Plasma5 and Plasma6, meaning even users of LTS distributions can utilize them. KRunner plugins also work in the normal application launchers - meaning you should really give those a look!

EmojiRunner

This is a utility to search and copy emojis. On X11, you may paste them using xdolib. To ensure you get the emojis you like the most quickly, it is possible to configure favorites in the dialog. Custom emoji, emoji+text entries and aliases can also be added in the config module.


https://github.com/alex1701c/EmojiRunner/

JetBrains plugin

While I love Kate and neovim for doing code editing, having JetBrains IDEs is amazing when working on bigger Java/JavaScript projects. To improve the integration into KDE Plasma, the KRunner plugin searches for the installed JetBrains IDEs and reads the recently opened projects of them. Those can be shown and filtered in KRunner. This allows one to directly launch the right project from KRunner!

Sometimes one may find oneself navigating projects in Dolphin. For this case, a context menu counterpart exists. In there, you find the options to open the folder in the installed JetBrains IDEs. In case the folder is known as a project, the options are presented at the top-level.


https://github.com/alex1701c/JetBrainsRunner
https://github.com/alex1701c/JetBrainsDolphinPlugin

VSCode/Codium workspaces integration plugin

Next to opening recent JetBrains projects, this plugin allows one to open workspaces configured in VSCode. It is pretty straightforward - just install the “Project Manager” plugin in VSCode or Codium, add a few projects and enjoy opening them directly from KRunner.


https://github.com/alex1701c/krunner-vscodeprojects/

Firefox plugin

Having multiple profiles in Firefox may be useful for separating the work one is doing, managing different extensions or different settings. However, switching between them is rather annoying. Manually adding actions to the desktop file may work, but is rather cumbersome and not as flexible.

This plugin allows you to integrate Firefox profiles automatically in KRunner. It also allows for sorting, opening private windows as actions and also adds them to the desktop file. Meaning, you can right-click on Firefox in the taskbar or the launcher and have the actions there available.


https://github.com/alex1701c/krunner-firefox

NordVPN plugin

This plugin allows you to easily connect to NordVPN servers, disconnect and view the status. A configurable status is available in KRunner or an extended one when clicking/pressing enter on the respective result. When connecting, a country, city or specific server may be entered.
It is no advertisement or recommendation! Just saying :D


https://github.com/alex1701c/NordVPNKrunner/

TmuxRunner

Tmux is a terminal multiplexer that allows you to have multiple terminals in the same window (split screen, or multiple “tabs”). You may also detach from it without killing the processes. This is one of the advantages of using it instead or in addition to for example Konsole’s tabs.

Keeping track of the sessions might be a bit hard though. To solve this issue, this plugin provides an overview of the currently active sessions and allows you to create new ones with optionally a specified name. The sessions will be opened in the configured terminal - by default Konsole.


https://github.com/alex1701c/TmuxRunner

QuickWebShortcuts

While I have given the official webshortcuts quite a bit of love over the years, there may be some things lacking. For example, there is always the separator character (colon or space) that separates your query from the provided search, like “dd:testme”. With this plugin, you only need to type one out. Additionally, it can provide search suggestions!


https://github.com/alex1701c/QuickWebShortcuts

VeracryptRunner

This plugin allows one to add and search mount configurations for Verarcrypt. This includes file/device paths, display name, mount path and keyfiles. Optionally, on X11, the password can be read and entered directly using the command line “pass” password manager.

Other mentions

I have the one or other, maybe less useful plugin. Like an integration for KWallet or a little timer utility.
For users of VirtualBox, https://github.com/alvanieto/vbox-runner can be very useful. I contributed a merge requests to allow the plugin to work with KF5 and KF6.

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

https://kde.org/announcements/gear/24.12.0

I hope everyone had a wonderful holiday! Your present from me is shiny new application snaps! There are several new qt6 ports in this release. Please visit https://snapcraft.io/store?q=kde

I have also fixed the Krita snap unable to open/save bug. Please test –edge!

I am continuing work on core24 support and hope to be done before next release.

I do look forward to 2025! Begone 2024!

If you can help with gas, I still have 3 weeks of treatments to go. Thank you for your continued support.

https://gofund.me/573cc38e

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 ” 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.

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 experimantal nightly version (see instructions at the bottom of our download page)

The post Kdenlive new year preview appeared first on Kdenlive.

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