Development in 2024

Hey everyone,

welcome to my yearly recap of the year 2024. What happened? What did I work on? Well, quite a lot actually. So let’s start with the biggest project and continue from there.

The GNUnet Messenger got funding from NLnet again as I mentioned in the end of last year. The new goal was to improve usability and add new features. What features are we talking about exactly? My concept was to achieve feature parity with most popular messaging apps but sticking to a decentralized context. For example I wanted to add profile pictures. But we can’t simply upload image files to a profile picture server/provider and poll from there for any new contact we get.

So the solution required a bit of hacking around in the back-end. I used reclaimID from GNUnet to allow users sharing personal information with selected contacts of their choice and profile pictures may be such personal information for example. That means we can upload encrypted image files to a decentralized file sharing service from GNUnet but limit access to the key for decryption to only selected entities.

For convenience it’s possible to configure sharing profile pictures as default with all of your contacts but you can also revoke such access at any point.

Additionally I added functionality to block/unblock contacts from messaging you as user. Typically you could already limit your own contacts by accepting only invitations to chats which you trust or want to communicate with. It was also possible to leave a chat at any point. But for use cases like bigger public group chats around topics rather than private groups, it may be more useful to only ignore certain users without closing the whole chat.

I’ve massively improved the libportal integration to potentially help with permission management in the snap and flatpak packages. I’ve tried to fix the bugs I encountered while working on the application as best as possible and in the end of my milestones this year, I even implemented a live chat for audio and video communication inside the GNUnet Messenger chat rooms.

From my testing it should even work across low powered devices like a Librem 5 or Pinephone Pro and I tried my best to make the GUI responsive to support multiple form factors as well as hardware configurations to pick reasonable encoding/decoding acceleration. It may improve further in the future. But given that other proprietary video chat solutions only announced the same year to finally bring Wayland support for capturing via libportal and Pipewire (after many years of user requests), I’m not doing that bad here.

This was most of my funded work on the messaging front but in the end of the year I also started to work on the Messenger service in GNUnet again to finally address a security issue in the back-end. The goal is to implement forward secrecy to prevent unpriviledged users to read messages from before the time they joined a chat room. The idea is to make this feature configurable. So public chats can allow users to read all messages from the past. But private chats will very likely turn it on by default to reduce risk of loosing private information to an attacker.

It’s a long planned feature on my list but since it requires heavy changes in the service, I waited until I had a proper idea how to implement it. At the same time it’s now part of my scientific work from my master thesis to implement, test and compare it to other designs. Everything is still intended to work fully decentralized without any central authority.

The fundamental work on that project is already done. But optimization for different scaling use cases and testing its cost as well as its security properties requires more time. Potentially I will publish my final draft that I write about this project. So others can poke around it and find things I might have missed, that can still be improved.

For example this year I also got some feedback from a pentester in communication with NLnet which could help me find and fix some open issues in the source code from the Messenger application. Additional eyes always help!

Then last year I started to deal with some AR glasses to use on Linux devices. Originally my plan was to pear it with my mobile Linux devices but I ran into some performance and usability limitations for 3D rendering in combination with them (partially because of resolution, refresh rate, little own code optimization and lacking support of my chosen compositors). Nevertheless I bought a much more refined model of those glasses from the same company because I assumed to get them working again and they had depth sensors for hand tracking now. So maybe I could at least do that, combine it with parsing audio input and build some fancy AR assistant (either running locally on device or behind a VPN on some self-hosted server).

Unfortunately I’m not done with this side-project yet. But if anything interesting happens, I will probably publish a post here about it.

Then in some semi-tradition I bought a new tool to play around with. I got a Starlite Mk V, a Linux tablet which uses x86 architecture. The good part is that it’s officially supported by the vendor to run Linux. They encourage you to flash whatever distro you like onto it and it works quite well. The bad part is that the chip could be more efficient to achieve more battery life. I had a few issues here and there. But overall I finally own a good device for digital drawing without entering some walled garden of proprietary software. More details in my review I’ve written about my first month/weeks usage.

So I’m very eagerly waiting for GIMP 3.0 to come around (probably this year, I assume) and MyPaint is another software I’m hoping to see an update fixing some bugs too (but I guess this could take a while). Besides that I’ve played with Godot in my free time to build some smaller games which still aren’t fully published. I definitely took a glance at how to make games that can run on all form factors of Linux devices while additionally supporting other big gaming platforms like Android and Windows. Maybe this year I’ll have more time to focus on that end.

Last thing to address is the work I put into the VkCV framework and Manuskript. I think it’s very unfortunate I have so little time to finally deal with Manuskript for once and complete my GTK port efforts. So users can go on with their creative work without fearing those critical bugs and crashes we have with its current version. But it’s not a small task to solve.

The Vulkan framework on the other hand is mostly frozen. I only have a look at it when I find a certain library to potentially improve some aspect with or if I would receive any bug report. The Github actions which test compilation all succeed from what I know. So nothing critical needs to be done. Maybe I will more do on the GPU front as soon as I work on my games more.

Best regards and happy hacking,
Jacki

Read original article

Popular posts from this blog

GNUnet Messenger API: March

GNUnet Messenger API: February

GNUnet Messenger API: September