GNUnet Messenger API: May 2024

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 picture with certain contacts. Also there should be a setting to disable automatic downloading of profile pictures. But that requires some more adjustments in the GUI because it would require a way to manually download them if possible (similar as it’s possible for shared files in the chat).

Also profile pictures only work for contacts and accounts at the moment. Groups still need a completely different implementation because the GNUnet Messenger service is intended to work fully decentralized. So nobody is admin of a group chat who can decide how a group chat picture gets selected. I have thought about multiple ways to implement it already. But I’ve not completely decided yet what’s the best method.

Some options would be the following:

  • Any member of a group chat could select an own picture individually for own usage (no conflicts but also very inconsistent between users).
  • Members could tag a shared image file and the latest tag message decides the profile picture (would work but might cause a lot of conflicts).
  • Members could nominate shared image files for selection and a poll decides (might be most reliable but requires a poll functionality to get implemented first).

I’m mostly leaning towards the poll system. Because I think resolving conflicts in group chats via a democratic algorithm makes most sense. Also making polls for topics or dates is a feature to implement in some future anyway. But it’s nothing with priority right now.

Additional changes have been made to the GNUnet Messenger service and libgnunetchat fixing some bugs, cleaning the code from the test cases and resolving the remaining memory leaks I could still find with valgrind. Also I’ve uploaded the API documentation of libgnunetchat made with doxygen to my server now (you can find it here). So it’s more accessible to third parties now reading into it. Otherwise I mostly worked on improving the GUI in the GTK frontend.

picture showing the messenger application with profile pictures

The application looks a bit different now than before. Because I removed the separate title bar from the main window and replaced it with a properly configured header bar setup. So that means the application takes quite a bit less vertical space which is great for smaller screens as with phones. I made sure all search fields work properly and animations while resizing the window look fluid.

It’s also possible to add a profile picture to an account during the account creation step. You don’t need to create an account first, navigate to the contact details later and do it. Also it’s always possible to use right mouse click on desktop with widgets that expect you to do long presses when using a touch screen. So it’s more consistent in that regard now. I try to improve more such little things like that in the future to ease usage. Additionally I fixed playback of recorded voice messages before sending. So it can be listed to them multiple times before making a decision.

So what’s next then? - A voice chat functionality. Of course the idea is to allow private calls via GNUnet but since the Messenger service allows any kind of group size, the goal is to allow conferencing. This will require some changes in the service and potentially even in its protocol, optimizing for latency and bandwidth requirements. But hopefully next month I can say more.

Kind regards,
Jacki

Read original article

Popular posts from this blog

GNUnet Messenger API: March

GNUnet Messenger API: September

GNUnet Messenger API: February