Skip to content

Friday, 5 May 2023

Some time ago, before the world locked down, I pondered that KDE wasn’t very good at getting our apps to our users. We didn’t even have a website that listed our apps with download links. If you were an open source app developer using our tech (Qt and KDE Frameworks) would you come into KDE to build your app or just start a project on Github and do it yourself? KDE has community which means some people to help look over your work and maybe contribute and translate and some promo and branding mindshare and there’s teams of people in the distros who specialise in packaging our stuff. But successful projects like Krita and Digikam and indeed my own Plasma release scripts still have to do a lot on top of what KDE communally gives them.

So I launched apps.kde.org and made the All About the Apps goal which was selected in the hope of getting KDE to support taking our apps to the users more slickly. I didn’t manage to make much progress with the goal which I will readily take the blame for. After some fighting I managed to get our announcements linking to the app stores directly but I didn’t manage to get much else slicker.

What my dream still is would be for apps to have a button that…

  • Bumps the version number in the source
  • Makes the tar and uploads it to a secret place
  • Tells the Linux distros to package it
  • Packaging for Windows/Mac/Android/Snap/Flatpak/Appimage would be in the Git repo and our CI would now build them and upload to the relevant test sites
  • OpenQA style tests would be in the git repo and our CI would now test these packages
  • Another button would make the source and packages public in Microsoft Store/Appimagehub/SnapStore/Flathub/download.kde.org and somehow tells the Linux distros and send the announce to the Discuss group and start off a blog post for you

I just released KDE ISO Image Writer (another project I didn’t make much progress with for too many years) and had a chance to see how it all felt

There’s no nice buttons and while we have a tool to make the tar and I have a tool to add the release to the AppStream file, there’s nothing to bump version numbers in cmake or add releases to AppStream or make templates for pre-announcements and announcements.

How’s the packaging and app store situation?

Windows and Microsoft Store

I had to go out and buy a laptop for this, there’s virtual machines available for free which should work but I didn’t trust them with the hardware needed here and they’re time limited so I’m a bit wary of setting up Craft then having to do it again when the time runs out. Craft does a lot of the hard work building for Windows and binary-factory and elite Craft dev hvonreth is often around to give help.

Getting access to the Microsoft Store takes a sysadmin request and working out what to ask for then working out what to upload. I uploaded the wrong thing (a .appx file) when it should have been a .appxupload file and that seemed to break the MS Store from accepting it at all. After lots of twiddling and deleting and generally turning it off and on again I got it uploaded and a day later it was rejected with the claim that it crashed. While the app had installed and run fine for me locally using this .appxupload thing to install it locally did indeed cause it to crash. We diagnosed that to the elevated privileges needed and after some Googling it turns out the Microsoft Store doesn’t seem to support this at all. So my dream of having it available to install there has not worked out, but you can get the installer from download.kde.org and use that.

There’s still only 9 KDE apps on the MS Store at a quick “KDE” search which seems far too few.

AppImage

These have been around for decades and KDE has always had fans of this format (it used to be called Klik at one point e.g. test KOffice). SUSE devs were a big fan at one point. In recent years its gained auto-update, daemons to manage the system integration, build tools, support from top apps like Krita and Digikam and a centralised place to get it in AppimageHub (not to be confused with the other AppimageHub). And yet mass adoption seems as far off as ever.

There’s two ways I found to build it, with appimage-builder which was easy enough to pick up and make a packaging file which uses packages from Ubuntu and neon.

Or you can reuse Craft (used earlier for Windows) to build on Linux for the AppImage. This also allows binary-factory integration but I don’t seem to have got this working yet. It might also be worth exploring openSUSE’s OSB which might allow for other platforms.

I tried to upload it to AppimageHub but that broke the website which needed some back channel chats to fix. Once uploaded it appears shortly, no further bureaucracy needed (which is a bit scary). It doesn’t appear on the KDE Store which seems to be about themes and addons rather than apps. And I put it on download.kde.org.

It’s hard to know how popular AppImage is within KDE, neither of the AppImageHubs seem easy to search and many apps publish their own in various ways. There’s about a dozen (non-Maui) KDE apps with appimages on download.kde.org plus a dozen Maui apps which are developed within KDE and used by the Nitrux distro. I hear complains that AppImage doesn’t support Wayland which will limit them.

Flatpak and Flathub

This format has lots of good feels and mindshare because it integrates well with the existing open source communities.

The flatpak-manifest.json file can be added directly to the repo (which I’m very jealous of, when I suggested it for Snaps it was rejected and caused me to grump off the whole Goal) and that can be added to binary-factory but also to invent.kde.org CI. There’s an active team around to help out. That gets uploaded to a KDE testing repo where you can install and test.

But to get it out to the users there’s a separate process for Flathub the main host for Flatpak packages. That takes a another week or two of bureaucracy to get published (bureaucracy when publishing software for people to install is necessary and important). There’s also a stats website which suggests it has 300 installs.

Searching for KDE on Flathub gives over 130 results.

Snaps

This works the smoothest if I say so myself. Add the packaging to the snapcraft repo and it builds on the invent.kde.org CI which actually just sends it off to the launchpad builders and it builds for ARM and AMD64. Then you get one of the KDE Snapcraft team (Scarlett, me, Harald) to register it and voila it uploads to candidate channel for testing. It needs manually moved into the stable release channel which can either be done by our team or we can share admin rights. The bureaucracy comes when you need to ask for permissions such ISO Image Writer needing access to disks, that took a week to be accepted. The packages are build using KDE neon for Qt and KDE Frameworks etc and we’ve had troubles before when KDE neon moves onto new versions of Qt but the content Snap has stayed on older ones, but we’re working out when to save a spare snapshot of it. The build tool Snapcraft also has a kde-neon extension which just adds in common parts used by KDE snaps but sometimes that gets out of date too so we’ve had to work out ways around it.

The Snapcraft KDE page has about 140 apps. From the admin page I can see ISO Image Writer has 920 installs around the world (not bad for two days old). The store doesn’t seem great at picking up the AppStream meta data so screenshot and icons are often out of date which I’ve brought up with the devs a bunch of times. It’s centralised around a single Canonical owned store which open source/free software fans can find a bad smell but it is what users want.

Others

I’ve not looked at f-droid, Google Play, Chocolately, or Apple’s App Store. With the probable exception of Apple’s store we should embrace all of these.

I couldn’t find any tools to add release data (the files to download) to AppStream file which is what ends up on apps.kde.org, that feels like a low-hanging-fruit fix. Building pre-release tars which aren’t available publicly seems tricky to do, we have that for KDE neon but none of the app stores have it. Similarly tools to make templates for release announcements can’t be hard, I do that for Plasma already.

So lots of work still to do to make KDE have slick processes for getting our software out there to the users, it’s social and technical challenges and cultural shifts take a long time. Loads of people have put in lots of work to get us where we have today but still lots to do. If you’re up for a challenge and want to help I hope this blog shows the challenges and potential for fixing them rather than sounding too negative. Let’s keep KDE being All About the Apps!

OMEMO logo

It’s finally there: Kaidan with end-to-end encryption via OMEMO 2, Automatic Trust Management and support of XMPP Providers! Most of the work has been funded by NLnet via NGI Zero PET and NGI Assure with public money provided by the European Commission. We would also like to thank Radically Open Security (especially Christian Reitter) for a quick security evaluation during the NGI Zero project.

Even if Kaidan is making good progress, please keep in mind that it is not yet a stable app. Do not expect it to work well on all supported systems. Moreover, we do currently not consider Kaidan’s security as good as the security of the dominating chat apps.

There is a new overview of features Kaidan supports. Have a look at that or at the changelog for more details.

Encryption

All messages sent by Kaidan can be encrypted now. If a contact supports the same encryption, Kaidan enables it by default. Therefore, you do not have to enable it by yourself. And you will also never need to worry about enabling it for new contacts. But it is possible to disable it for each contact at any time.

Additionally, all metadata that is encryptable, such as typing notifications, is encrypted too. The new Automatic Trust Management (ATM) makes trust management easier than before. The details are explained in a previous post.

We worked hard on covering as many corner cases as possible. Encrypted sessions are initialized in the background to reduce the loading time. Kaidan even tries to repair sessions broken by other chat apps. But if you discover any strange behavior, please let us know!

We decided to focus on future technologies. Thus, Kaidan does not support OMEMO versions older than 0.8.1. Unfortunately, many other clients do not support the latest version yet. They only encrypt the body (text content) of a message, which is not compatible with newer OMEMO versions and ATM. But we hope that other client developers will follow our lead soon.

Screenshot of Kaidan in widescreen Screenshot of Kaidan

XMPP Providers

Kaidan introduced an easy registration in version 0.5. It used an own list of XMPP providers since then. The new project XMPP Providers arose from that approach. That project is intended to be used by various applications and services.

Kaidan is now one of them. It uses XMPP Providers for its registration process instead of maintaining an own list of providers. Try it out and see how easy it can be to get an XMPP account with Kaidan!

Changelog

This release adds the following features:

  • End-to-end encryption with OMEMO 2 for messages, files and metadata including an easy trust management
  • XMPP Providers support for an easy onboarding
  • Message reactions for sending emojis upon a message
  • Read markers showing which messages a contact has read
  • Message drafts to send entered messages later after switching chats or restarting Kaidan
  • Message search for messages that are not yet loaded
  • New look of the chat background and message bubbles including grouped messages from the same author
  • Chat pinning for reordering chats
  • Public group chat search (without group chat support yet)
  • New contact and account details including the ability to change the own profile picture
  • Restored window position on start

Download

Or install Kaidan from your distribution:

Packaging status

Tuesday, 2 May 2023

This new entry will cover ways to configure global preferences for Maui Apps and Maui Shell.

MauiMan

MauiMan stands for Maui Manager, and exists for setting, saving, and syncing the configuration preferences for the Maui Apps ecosystem. These configurations are global, and some of them can be overridden by the apps themselves, but more about that later. To store the configurations MauiMan uses the MauiMan.conf config file, located at your local config path: for example ~/.config/Maui/MauiMan.conf.

(!) The settings modifications are only written/saved when using the MauiMan API directly.

MauiMan consists of two parts, a (1) background server that syncs and broadcasts the preference properties changes to all the running Maui Apps, and a (2) public API, that allows app developers to easily hook their apps to the system preferences. The MauiMan server program is named MauiManServer and uses the DBus IPC.

The public API and the server are divided into modules: for different setting categories, such as Theme, Background, Accessibility, FormFactor, etc…

Using MauiMan to configure Maui Apps.

To configure existing preferences, there are different ways to do it, from a graphical interface to editing a text file or even hooking to the public API directly (for developers), in the following sections we’ll cover all the possible ways.

The ideal way to set the configurations, from a user perspective, is to use the Maui Settings application, which exposes all the MauiMan preferences in a graphical manner; although, some of the settings presented are “curated” to use predefined sane values, for example, not allowing to set the border-radius of elements to an unfitting value rendering the interface unusable. This means that with this approach you dont get full control over the values of the properties in all the cases, but you are less prompt to mess up.

Maui Settings also exposes other settings for other system stuff, such as Networks, Sound, Notifications, etc. If any of the needed servers to sync configurations are offline, Maui Settings warns you about it and allows you to launch the server daemon with a single click.

(!) Keep in mind that Maui Settings is still under heavy development and most modules are still not implemented.

 

 

Another way to do interact with MauiMan is by using DBus directly. For this one can use a graphical application and navigate to org.mauiman.Manager and then dive into the existing modules for modifying the properties.

(!) Using this approach will not save the changes made: it will keep the changes in memory as long as the MauiManServer daemon is running, but once the process is restarted those changes will be lost since changes to the MauiMan properties are only saved when using the MauiMan public API.

 

 

Another apporach is to manually edit the MauiMan.conf file. It has a couple downsides:

  • The changes won’t be made live.
  • Changes won’t be loaded until MauiManServer process has been restarted since MauiManServer saves in memory the properties and only loads preferences from the config file on startup.

Using this config file is a convenient way to set default values for distributions shipping Maui apps, so they can be styled for the distribution. This config file is located at:

~/.config/Maui/MauiMan.conf

Here’s a snapshot of the config file contents:

[Accessibility]
SingleClick=false

[Background]
DimWallpaper=false
FitWallpaper=false
ShowWallpaper=true
SolidColor=#ffff00
SourceDir=file:///usr/share/wallpapers/Cask
Wallpaper=file:///usr/share/wallpapers/Cask/Cloudy Noon - 5K (16:10).jpg

[FormFactor]
PreferredMode=0

[InputDevices]
KeyboardLayout=us

[Screen]
Orientation=1
ScaleFactor=1

[Theme]
AccentColor=#000
BorderRadius=12
CustomColorScheme=Amethyst
DefaultFont="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular"
EnableCSD=true
EnableEffects=true
IconSize=16
IconTheme=Colloid
MarginSize=4
MonospacedFont="xos4 Terminus,12,-1,7,50,0,0,0,0,0,Regular"
PaddingSize=4
SpacingSize=4
StyleType=1
WindowControlsTheme=CadiumGloss

 

Accessing these MauiMan properties is also possible from an application side too: for developers there is the MauiMan public library which exposes all the properties trough a public API. So if you need to know about the current workspace background image source, you could hook to MauiMan::BackgroundManager::wallpaper()  and even connect to wallpaperChanged signal to know in real time when the wallpaper has been changed.

 

#include <MauiMan/backgroundmanager.h>

void func()
{
auto wallpaper = MauiMan::BackgroundManager().wallpaperSource();
}

 

Most of the properties are already quickly accessible via MauiKit Style object,  (for apps developed using MauiKit) which besides syncing to MauiMan changes can also override these properties with in-app specific values and if needed clear those using undefined to return using the MauiMan values.

For example, for setting the style type as dark for an app, despite the global preference being different:

​​​​Maui.ApplicationWindow
{
Maui.Style.styleType: Maui.Style.Dark
}

​and to reset the value back to the global system preference:

​​​​Maui.ApplicationWindow
{
Maui.Style.styleType: undefined
}​ ​​​

CaskServer

To configure Maui Shell preferences and expose those to any other processes, there is CaskServer, which as MauiMan, has two components: a CaskServer daemon for syncing/broadcasting the properties changes and the public library.

The public library allows apps to request Cask to draw custom shadows, title bar colors, and more privacy settings, via the Chrome and Screenshot modules. More modules include Shell, Power, Profiles, and Notifications.

The Shell module allows tweaking the Cask elements such as dock, panels, launcher, popups, etc preferences.

Some of these properties can be modified from Maui Settings, while others, such as properties from the Chrome module, are specific for a given app, so an individual app can be hooked to the Chrome module via the CaskServer library to perform changes to the available properties.

(!) CaskServer as Maui Settings and Maui Shell is still under heavy development and isn’t stable enough yet for commercial use, keep this in mind if you decide to give it a try.

The CaskServer configuration file is located at :

~/.config/Maui/CaskServer.conf


More detailed information about configuring Cask and Maui Shell will soon be shared, as development progresses.

​​​​​​

To follow the Maui Project’s development or say hi, you can join us on Telegram: https://t.me/mauiproject.

We are present on Twitter and Mastodon:

New release schedule

The post Configuring Maui appeared first on MauiKit — #UIFramework.

Monday, 1 May 2023

A month has passed since my last monthly post about my work as KDE Software Platform Engineer. What have I been up to since then?

As usual not everything I did ended up as committed code. A lot of my work is reviewing other people’s code, discussing ideas, and generally being useful to the community.

One area I’ve been focussing on is our infrastructure for global shortcuts. These are currently handled by the KGlobalAccel framework. This frameworks contains the runtime component that manages global shortcuts as well as an application-facing library to interact with the runtime. The runtime and interface library being in the same project has caused us some issues in the past. To address these the runtime part is now split out into a separate project and part of the Plasma group. You can read up more details on this here. This change also allowed for some further changes that made launching applications from global shortcuts both simpler code-wise and more robust. I have also worked on another set of changes that will address some of the pain points that are currently present in our global shortcuts system. While doing that I also addressed some issues I found in the underlying KDE Frameworks libraries.

Another area I worked on is notifications. One thing I did there was reducing the API surface of the KNotification class by hiding internal API that shouldn’t be exposed to application developers. I also proposed a revamped API for specifying notification actions. The new API is both easier to use for application developers and easier to extend with new features in the future.

With a small API change to KStatusNotifierItem, our class for implementing system tray icons, it is now easier for QML applications to fully make use of its capabilities. The API to set an associated window previously was only really usable for QtWidgets apps, now it can be used for QML apps too.

In some Plasma news: Plasma now uses the C++20 standard. This allows us to use some nifty new C++ features. One big one that comes to mind are coroutines, which have the potential to massively simplify parts of our code. Getting there required some tweaks to make our code and our dependencies fully C++20-compliant.

Talking about dependencies: With our move to Qt6 all of our Qt-based dependencies need to make that move too. appstream-qt, the library that powers e.g. Discover is now ready for that too. I helped integrating that into our build infrastructure. Another project with such dependencies is our online accounts system. It depends on libraries like libaccounts-qt and signond, which I’m working on porting to Qt6.

Last weekend I attended the Linux App Summit in Brno, Czech Republic. It was a lovely event that allowed me to get in touch with both people from KDE and our partner organizations like GNOME and Flathub.

To support the work I and many other people do in KDE please consider donating to KDE e.V. Your donations make my work as KDE Software Platform Engineer possible. Thank you for that!

Sunday, 30 April 2023

Here’s my KDE contributions for this month! It’s a little bit shorter than I’d like, but I’m still trying to find a nice balance between $work and KDE.

Extra CMake Modules

I put up MRs for a bunch of small fixes related to the QML module:

These haven’t been merged yet though, I still need to clean them up and give them some polish next month.

Dr. Konqi

I didn’t work on the new UI this month unfortunately, but I did submit two MRs:

Just like ECM this will be in my queue to merge these next month!

Krita.org

[Feature] I finally merged the improved dark mode I started a while ago, for the new Krita.org website! Thanks to everyone, especially Phu and Scott for being patient with me. I can’t wait to see this live soon :-)

Tokdoon

[Feature] I added support for the new Maximize component, which doesn’t change anything functionality-wise but makes our code leaner:

Screenshot of the Maximize component in action!

[Feature] I also pushed along the MR to use the SearchPopupField component from Kirigami Add-ons too, which is another change that doesn’t change anything functionally but will make the code much leaner.

[Feature] Interaction icons were overhauled, not just visually but also their layout has improved. Below is a screenshot of a mobile sized window, where the icons now spread out which will make them easier to tap (I plan on increasing the size on mobile too!)

Screenshot of the new icons in mobile layout

[Feature] The amount of characters you have left is now shown in the composer, which should load from your server (I don’t have anything but a 500-char limit to test with though):

The character count shows up in the bottom-left

[Feature] It’s not merged yet, but I’m adding overhauling how you view posts on profile pages! It has the usual separation of “Posts”, “Replies” and “Media” tabs but you can hide boosts too:

The new profile tabs and post options

[Feature] As a cherry on top, I added icons to some of the menus which makes them easier to quickly navigate:

Example of the new icon filled menu

Some more minor changes:

Keysmith

[Bugfix] I did some touching up work for Keysmith late this month: I fixed a bunch of binding loops, and added better keyboard navigation.

[Feature] I also added a passive notification when you copy the code to your clipboard too:

Example of the notification

There doesn’t appear to be an active maintainer, so I’ll get another reviewer and merge them next month. I also cleaned up some duplicate bugs, and moved some spam off of the tracker.

Kirigami

[Bugfix] While debugging Tokodon, I fixed a rare case where a Kirigami application using our QQC2 Desktop style could crash when closing. This same “fix” could apply to Breeze style too, it warrants further investigation :-)

[Feature] I realized that NavigationTabBar doesn’t have it’s own page on the gallery, so I proposed a new one in Kirigami gallery:

New page thumbnail in Kirigami Gallery

[Bugfix] I’m still looking for people who might know why PlaceholderMessage fails handling overflow, which creates some recursive rearranges. It might be a Qt upstream issue, so it’s another thing to investigate soon!

Friday, 28 April 2023

It’s already two years since I last looked at KDE git history. As I decribed in the latest edition, this is inspired by the work of Hans Petter Jansson for GNOME and use the tool he made (fornalder).

fornalder is a formidable tool. It is easy to use and the documentation in the readme is great. I don’t know if this is because it was programmed in Rust but fornalder was also blazingly fast and most of the time spent during this analysis was spent on cloning the repos.

These stats include all the extragear, plasma, frameworks and release service repository as well as most of the KDE websites and a few KDE playground projects I had on my hard drive. For example, it doesn’t includes most of the unmaintained projects (e.g. kdepimlibs, koffice, plasma-mediacenter, …). Also important to note, is that this doesn’t include translations at all, since they are stored in SVN and added in the git repository with a script which remove authorship information.

I also removed manually all the scripted commits and I merged the contributions from “Laurent Montel” with “Montel Laurent” as well as the one from various contributors whose name changed.

Active Contributors

Number of contributors by years
Number of contributors by years

The explaination for the colors is described by Hans Petter Janssson in his blog post by:

The stacked histogram above shows the number of contributors who touched the project on a yearly basis. Each contributor is assigned to a generational cohort based on the year of their first contribution. The cohorts tend to shrink over time as people leave.

There’s a special “drive-by” cohort (in a fetching shade of off-white) for contributors who were only briefly involved, meaning all their activity fits in a three-month window. It’s a big group. In a typical year, it numbers 200-400 persons who were not seen before or since. Most of them contribute a single commit.

In 2022, the number of active decreased slightly compared to 2021 and 2020, which might be due to the fact that the pandemic ended and people spend less time on their PC contributing to open source projects (which provided an huge boost in 2019/2020).

Commits Count

Number of commits by years
Number of commits by years

In 2022, the number of commits decreased as well, which can be attributed to the smaller number of overall contributors and a bit less activity from some long time contributors.

But I would not worry too much about these numbers as we are still above the 2019 level (pre-gitlab and pandemic) and looking already at the numbers for the first few months of 2023 it’s increasing again.

Conclusion

I would say that KDE is in relatively good health. This is particularly impressive for a project with little corporate backing and with mostly volunteers.

In 2023, we are also finalizing the transition to Qt6 and KF6 with a first release of KF6 and Plasma 6 around the end of this year, begining of next year.

There is no better time to get involved or to consider making a donation!

You can play with raw data in the form of a sqlite dabase (>200Mb)

Let’s go for my web review for the week 2023-17.


Red Alert: ICANN and Verisign Proposal Would Allow Any Government In The World To Seize Domain Names – FreeSpeech.com

Tags: tech, dns, politics

Concerning moves on the ICANN side… already in the agreements around .com and now trying to make its way into .net.

https://freespeech.com/2023/04/19/red-alert-icann-and-verisign-proposal-would-allow-any-government-in-the-world-to-seize-domain-names/


NitroKey disappoints me

Tags: tech, smartphone, android

Yep, disappointing indeed… I got a phone with a third party ROM and had to debug the A-GPS in there (don’t ask), it’s indeed reaching to this website as well. There’s enough to criticize without crying wolf for nothing.

https://blog.brixit.nl/nitrokey-dissapoints-me/


GitHub Copilot Emits GPL. Codeium Does Not. | Codeium

Tags: tech, ai, copilot, foss, ethics, law

Are we surprised? Not at all… this is an ethical problem, this is a legal risk. The alternatives will hopefully know better.

https://codeium.com/blog/copilot-trains-on-gpl-codeium-does-not


[2304.09655] How Secure is Code Generated by ChatGPT?

Tags: tech, ai, gpt, security

Interesting experiment even though it’s still early days for this kind of research and we’d need more such evaluations. They found that it produces mostly insecure code. This is not really surprising in the end, this manipulates language but has not execution model. It can be fixed only by coupling to some outside system.

https://arxiv.org/abs/2304.09655


Announcing Babylon.js 6.0. Our mission is to build one of the most… | by Babylon.js | Apr, 2023 | Medium

Tags: tech, web, 3d

This is really a huge update. Brings in lots of features which were clearly missing.

https://babylonjs.medium.com/announcing-babylon-js-6-0-dcb5f1662e3a


The weird world of Windows file paths | Fileside

Tags: tech, windows, filesystem

Definitely complicated to identify and resolve paths on this platform. I had to deal with it from time to time and this can definitely turn into a pain in the neck.

https://www.fileside.app/blog/2023-03-17_windows-file-paths/


Are pull requests bad because they originate from open-source development?

Tags: tech, foss, git, codereview, mob-programming, criticism

Since I’ve seen this argument floating around more than once, it’s nice to have a properly done rebuttal of it. This is nicely done, listing the own bias of the author, still in the end that shows the logical flaw of the argument.

https://blog.ploeh.dk/2023/04/24/are-pull-requests-bad-because-they-originate-from-open-source-development/


Best practices for writing code comments - Stack Overflow Blog

Tags: tech, programming, comments

Good article on when to use comments or not. Also gives a few tips on how to write them properly.

https://stackoverflow.blog/2021/12/23/best-practices-for-writing-code-comments/


Results summary: 2023 Annual C++ Developer Survey “Lite” : Standard C++

Tags: tech, c++

Interesting results. This gives a couple of insights in terms or adoption, perception of problems by people on C++ projects and tooling. It’s definitely worth skimming through.

https://isocpp.org//blog/2023/04/results-summary-2023-annual-cpp-developer-survey-lite


50 Shades of Rust Or emerging Rust GUIs in a WASM world

Tags: tech, rust, gui

This is currently a real zoo. I knew about a few of them but not that many. I guess it will slowly converge toward a few major options.

https://monadical.com/posts/shades-of-rust-gui-library-list.html#Pet-Sematary


Nine ways to shoot yourself in the foot with PostgreSQL

Tags: tech, databases, postgresql, performance

Nice set of tips, I knew a few but not all of them. The discussion around CTEs is interesting.

https://philbooth.me/blog/nine-ways-to-shoot-yourself-in-the-foot-with-postgresql


Measuring the Impact of False Sharing

Tags: tech, multithreading, performance

Nice exploration of false sharing on performances in several hardware scenarii. A couple of surprises along the way.

https://alic.dev/blog/false-sharing.html


Leverage the richness of HTTP status codes

Tags: tech, http, web, api

There are many more useful codes than are generally used. We shouldn’t shy away from using them when it makes sense, it also means the client side must be ready for them. Very often client code makes wrong assumptions on the possible codes.

https://blog.frankel.ch/leverage-richness-http-status-codes/


Characterizing Tech Debt

Tags: tech, technical-debt, craftsmanship

Nice short post listing the main positions (and linking to corresponding articles) on the debate around technical debt. Worth mulling over all those.

https://justinblank.com/notebooks/characterizingtechdebt.html


Distractions Cause Bad Code | nicholas@web

Tags: tech, notifications, remote-working, focus

So much this, managing notifications and making sure not to get disturbed when we need to focus is essential in our line of work.

https://ntietz.com/blog/distractions-cause-bad-code/


What complex systems can teach us about building software

Tags: tech, architecture, complexity, product-management, project-management

Interesting train of thoughts. Indeed we should keep in mind that large scale software is almost always a complex adaptative system, even more so if we don’t forget the people developing it and not just focusing on the code. This can give us guidelines on how to organize the development.

Also does a good recap about what a complex system is and how it behaves. Definitely worth a read at least for this.

https://sookocheff.com/post/systems/what-complex-systems-can-teach-us-about-building-software/


Tags: tech, tech-lead

If regularly see people propelled tech leads without really knowing what it means. This short post is a good summary of the skills one needs to build to fit the role.

https://medium.com/@bullyCOP/navigating-the-transition-from-individual-contributor-to-tech-lead-fbf8b29b878e


Key practice: Aligned, autonomous cross-disciplinary teams. | by Jason Yip | Apr, 2023 | Medium

Tags: tech, product-management

What the title say. This is especially important for product development. This is not emphasized enough in the article I think but the “aligned autonomy” section is a crucial part of this. I very often see in teams either alignment or autonomy, it’s rarer to see teams with both.

https://jchyip.medium.com/key-practice-aligned-autonomous-cross-disciplinary-teams-d73c1cddc352


Rescuing a project in progress

Tags: project-management

Very good advice: stop, status, selection, focus, finish, next. If it feels like “stop starting and start finishing”, it’s probably no surprise.

https://world.hey.com/jason/rescuing-a-project-in-progress-d31883f7


Some mistakes I made as a new manager | benkuhn.net

Tags: tech, management

Nice post full of good advises for new (or not so new) managers.

https://www.benkuhn.net/newmgr/


Why the Brain’s Connections to the Body Are Crisscrossed | Quanta Magazine

Tags: neuroscience, geometry, science

We still don’t really know (actually it’s super hard to have a definitive reason on this topic). This article presents more of a theory based on geometry… and this is interesting, we often don’t think about this kind of things.

https://www.quantamagazine.org/why-the-brains-connections-to-the-body-are-crisscrossed-20230419/


Researchers Taught Parrots to Video Call Other Parrots

Tags: tech, science, surprising

OK definitely surprising research. Some of the results are interesting. Clearly it shows a high level of socializing with those birds.

https://news.northeastern.edu/2023/04/21/parrots-talking-video-calls/



Bye for now!

Thursday, 27 April 2023

The FOSSASIA Summit 2023, held from April 13-15 at the Lifelong Learning Institute in Singapore, As an exhibitor for KDE at the FOSSASIA Summit 2023, I had an incredible experience showcasing our latest projects, networking with industry professionals, and engaging with attendees from all walks of life. I was thrilled to be part of such an esteemed gathering of like-minded individuals, all of whom were dedicated to advancing the field of open-source software development.

For context, FOSSASIA is an organization developing open source software applications and open hardware together with a global community from its base in Asia. Its goal is to provide access to open technologies, science applications and knowledge that improve people’s lives. FOSSASIA was established 2009 by Hong Phuc Dang and Mario Behling. Visit https://fossasia.org to learn more about the summit.

Getting back to the activities, our booth at the exhibition hall was bustling with activity throughout the three-day event, as developers, engineers, students, and enthusiasts stopped by to learn more about our latest offerings. I was particularly proud to showcase our flagship product, the Plasma desktop environment, along with KDE Connect, Dolphin, Konsole and other applications and tools that we have developed for the open-source community.

As I explained the features and benefits of our software to attendees, I was struck by the level of interest and enthusiasm that they showed for our products. It was clear to me that we are making a real difference in the lives of users around the world.

Beyond showcasing our products, the event was filled with informative keynote sessions and panel discussions, featuring speakers from around the world who shared their experiences and insights on open-source software development. As an exhibitor, I was particularly impressed by the discussions on collaboration and the importance of building sustainable communities around open-source projects. It was clear to me that the open-source community is dedicated to advancing the field of software development in a collaborative and sustainable way, and I am proud to be a part of that community.

In addition to networking with other industry professionals, I also had the opportunity to engage with potential users of our software. I was delighted to see the level of interest and enthusiasm from attendees, many of whom were eager to learn more about our software and its features. As I explained the benefits of using open-source software, I was struck by the level of curiosity and enthusiasm that attendees showed for our products.

I also met some old accomplices from KDE and local technical communities from Delhi. Anu Mittal, now working at a company in Singapore, attended the conference and also spent time with me, manning the booth and talking to many visitors at our booth about KDE software. I also met Raju Devidas, a Debian developer who has been contributing to Debian for more than a decade. He was manning the Debian booth along with a few other developers from Sri Lanka.

Overall, the FOSSASIA Summit 2023 was a resounding success for me as an exhibitor for KDE. I was able to showcase our latest products, engage with attendees, and collaborate with other industry professionals. I look forward to participating in future FOSSASIA Summits and continuing to contribute to the growth and development of the open-source community.

You can find the event photos here. I hope that these photos will help you experience some of the highlights of the summit!

I will post a few photos from the album above.

Gallery

I would like to extend my heartfelt gratitude to KDE e.V. for sponsoring my visit to the FOSSASIA Summit 2023 as an exhibitor for KDE. Without their support, I would not have had the opportunity to showcase our latest products and engage with attendees at this important event. Their continued support for the development of open-source software and the promotion of collaborative communities is truly inspiring, and I am honored to be a part of the KDE community. I look forward to continuing to contribute to the success and growth of our community, and I am grateful for their support in helping me make this visit to FOSSASIA Summit a resounding success.

Saturday, 22 April 2023

Arianna 1.0.1 🔗

Carl Schwan CarlSchwan 12:00 +00:00
RSS

I’m happy to announce the first bugfix release of Arianna. This release contains a lot of improvements to the accessibility of Arianna. Thanks a lot to @bgtlover@linuxrocks.online who reported many accessibility issues. Aside from fixing some bugs in Arianna, this also resulted in fixes in Kirigami, Kirigami Addons and Qt, which are on a seperate release schedule so not every bug fixes is already available. I’ll write a seperate blog post which will go into the technical details.

Aside from the accessibility fixes, this release fixes a few crashes when parsing some books. Thanks to those who tried Arianna and reported bugs (with backtrace!).

And finally, this release also improve the translations coverage, with for example Galician being one of the new supported language.

Get Involved

If you are interested in helping, don’t hesitate to reach out in the Arianna matrix channel (#arianna:kde.org) and I will be happy to guide you.

I also regularly post about my progress on Arianna (and other KDE apps) on my Mastodon account, so don’t hesitate to follow me there ;)

And in case, you missed it, as a member of KDE’s fundraising working group, I need to remind you that KDE e.V., the non-profit behind the KDE community accepts donations.

Packager section

You can find the package on download.kde.org and it has been signed with my GPG key.

Friday, 21 April 2023

New Falkon version 23.04.0 is being released as part of KDE Gear.

Notable changes

There is a handful of changes in this release.

KWallet

The format under which the passwords are stored has changed from Binary to Map. The passwords can now be viewed from within KWalletManager and even edited. While editing and adding new ones I would be careful with the data field and updated that as well. (This is some Falkon password internal mechanic) The Folder under which the passwords are stored changed from Falkon to FalkonPasswords. This was done to not overwrite the old passwords and potentialy ruin them during the migration to new format.

Support for dark color scheme

Note: This is NOT browser dark mode support.

Falkon internal pages now respect the dark color scheme, if it is forced through chromium flags in environment variable.

A small demonstration can be seen below. The color scheme might not be the best since it was designed on display with weird color settings.

Falkon: Light and Dark styled page
Falkon: Light and Dark styled page

Changelog

  • Look for spellchecking dictionaries at location specified by QTWEBENGINE_DICTIONARIES_PATH environment variable
  • Show QtWebEngine version on Falkon Config page
  • Implement prefers-color-scheme (dark mode) for internal pages
  • Add option to enable GPU acceleration (by Hao Chi Kiang)
  • PyFalkon: addBookmark - make C++ own parameters (fixes potential crash)
  • KWallet: Store passwords in a map format
  • History: Don’t delete all items under dates when filtering
  • AdBlock: Workaround for “Blocked content” page
  • AddressBar: Search with default search engine by default
  • Fix crash when adding new folder to the bookmark toolbar
  • Fix: Bookmarks folder disappears when moving it onto itself

Download: ffalkon-23.04.0.tar.xz (sig signed with EBC3FC294452C6D8)