Posts

GNUnet Messenger API: November 2024

Hey again, It has been a few months since I last posted here since I finished my major project of the video and audio chat in the GNUnet Messenger application . I took a short break and now I’m working on a completely different part in the service again. So not a lot of visual progress but technical details to brag about. The plan is to finally implement proper forward secrecy into the Messenger service in GNUnet . So a theoretical attacker can not access or read messages posted prior to their event joining a group chat. This is ensured by encrypting the content of messages with a key that changes every time, a client joins or leaves a chat. Additionally because chains of events can diverge in the Messenger service a merge event of two message chains that use different keys will also cause a new key generation and exchange. The big problem I’m trying to solve is how to make this most efficient without relying or trusting a central entity. Because the whole service is designed from

GNUnet Messenger API: August 2024

Image
Hi again, as mentioned last time when talking about the user interface for discourses, I was looking into the implementation of video streaming this time. For this task I wasn’t really able to workaround using RTP or something comparable. So I tried looking into it again with success. The problem I had with it previously was actually related to me overlooking the structure GstRTPBuffer in the documentation of GStreamer . With that I was able to calculate the actual durations of each buffer. I could simplify the code handling video and audio streams into one with only some variables like datarate which differ. But overall it worked for RTP via both rtpL16pay and rtph264pay nodes. So I could transfer H.264 encoded video via GStreamer now without major issues. However one thing I needed to solve was getting encoding done on many different platforms and form factors. Because not every SoC or device offers hardware encoding and decoding which is preferable though reducing power cost

GNUnet Messenger API: July 2024

Image
Hi there, so this month I can show you the UI of the voice chat in current state. It might still not be perfect for all cases. But I think it’s a good compromise for desktop, mobile and overall consistency with other features. The discourse of any chat room can be opened as dialog above the main chat window to open and close a discourse. So this dialog will prevent texting to some degree. However it can be closed without leaving the discourse. So users can go back to chat texting and sending files, while being in active discourse over voice chat. picture of dialog open in front of chat messages It is possible to mute yourself via a button in the dialog. It is possible to adjust the overall volume of all audio. Also I have added some other buttons which are disabled for now for future functionality. All active members of a discourse are visually represented in the center grid of the dialog. All members of a chat room are visually listed in a sidebar. Maybe I will add some options

GNUnet Messenger API: June 2024

Hey, this month I’ve started working on the implementation of a voice chat feature. So far my local tests are looking good, transferring raw audio data from one client to another, essentially streaming it. Latency of all the cryptographic overhead does not seem to be an issue. It’s still possible there are optimizations needed but for a first implementation it’s looking good. I’m still waiting for further practical multi-device tests on either NAT traversal or improved peer perception in local networks using GNUnet . Also there’s still ongoing work on the testing system to create local multi-device test cases using network namespaces . Until one of those options is solid, it’s difficult to verify whether latency or bandwidth need further improvements. So I’ve continued implementing the required API in libgnunetchat and I’am already working on the graphical interface for it in the GTK client. Because those parts don’t need to wait for the back-end anyway and it makes practical tests

GNUnet Messenger API: May 2024

Image
Hi again, there have been a lot of changes again this month. The issue (I mentioned last time ) in the reclaim subsystem from GNUnet was solved. So I adjusted libgnunetchat and the Messenger service regarding the changes in the API. Sharing attributes using tickets works properly and I implemented a way to share profile pictures through it. picture showing current contact info and views to deal with attributes The implementation works like this: You select an image file which gets published via FS subsystem in GNUnet. Then its URI to request and download the file from FS gets shared as attribute under a spcified name. If a user then decides to share that attribute with one of their contacts, they receive the URI and automatically download and display the profile picture as expected. picture showing the contact info for the current account to set a profile picture There’s still room for improvement. For example I might add a setting to automatically share a profile pi

GNUnet Messenger API: April 2024

Hi there, another month of development is over. A lot of improvements, fixes and adjustments have been made. I started by fixing remaining issues in libgnunetchat from the last month and published a minor release to solve it for builds. Then I continued tweaking the GTK user interface of the GNUnet Messenger . It’s now possible to filter messages in chats by tags. There’s also a dialog to add tags to a selected message. In the chat details side bar there will be a list of media previews as well as a list of all shared files from the chat. Additionally I got rid of a memory leak I noticed from the media previews. Now those will even take less memory as footprint during runtime and you can switch between different accounts fluidly without consuming too much space on low-powered devices. Another quality of life improvement is the added localization. I only did translations from default English to German. But additional translations of any labels in the UI can easily be added now. So

GNUnet Messenger API: March 2024

Image
Hello again, this month we finally got the release of GNUnet 0.21.0 and in addition we released a new release of libgnunetchat and both messenger front-ends . I tried to make sure the flatpak and snap packages work. However there were some difficulties. For example the flatpak runtime, the application uses, did not contain libportal for some reason. I needed to include that. The release of libgnunetchat caused a build issue because it required a dependency from the new meson build of GNUnet . The usage of Pipewire caused an immediate crash because of missing permissions. At the same time I worked on the flatpak manifest to make it update its dependencies automatically in the future via the external data checker that Flathub provides. public relation picture of the messenger application In the end the flatpak seems to work now. Only camera access is still not fully cooked yet. On my Librem 5 it gives a format error and fails to show an image. If no camera is connected at