Posts

Showing posts with the label pinephone

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: August

Image
Hi again, I finally managed to get some more time working on the Messenger project and there have actually been quite some changes. First of all I added multiple views with sub-windows in the messenger-cli application. So essentially a really awesome aspect of ncurses was that you could draw content inside a so called window but also create sub-windows inside of another window. That means the whole implementation I’ve worked on before could be reused to merge multiple views in a custom layout, I just had to implement. So the results looks like this: image of messenger-cli in group chat The layout depends on the size/resolution of your terminal and will adjust dynamically if you resize it. So for example if you decrease the width the list of members in a chat will hide but it’s still accessible via pressing TAB. I tried to make the experience pretty smooth and used a lot of knowledge from working with libhandy on the convergent GUI from the messenger-gtk application. So I hop...

GNUnet Messenger API: June

Hi, this month I don’t have much to announce. I’m currently sitting on another project until end of this month. So there are only minor things, I could implement. I’ve fixed multiple visual issues in the messenger-cli application. Also it got some proper filtering for messages and it will automatically scroll the messages when you are at the bottom of the list. One thing I started to tackle is closing memory leaks in the application. The idea is that I can utilize valgrind to search for memory issues in the library libgnunetchat above once the CLI client is rather safe. Because I can’t really do that with the GTK client if I don’t want to fix all memory issues in GTK3 first. So I’ve found an issue in using ncurses as suggested in most examples and code pieces you can find online. I contacted the current maintainer and it seems that I have to use a different way of initialization similar to how VIM does it. But I didn’t have the time to adjust the code yet. Other things I did...

GNUnet Messenger API: May

Hello, In April I could announce the release of the underlying chat library and this time I can happily announce that the GTK client got released . The first official release of the messenger-gtk application is 0.7.0 which might look a bit weird but the version numbering was inherited from the previous prototype cadet-gtk . So the actual release date (tagging the code in the repository) was pretty close after my last report in April but I still waited for the official announcement on gnunet.org because I wanted a proper packaging for users to test it out. That’s why we not only have tarballs available for libgnunetchat and messenger-gtk on the FTP server to install everything from source but you can also test out a flatpak hosted on flathub.org . From my testing so far there are still some issues regarding connectivity which need to be addressed in GNUnet itself but also crashes which are likely caused by the GUI code. So don’t expect a fully polished experience yet. But I was defi...

GNUnet Messenger API: March

Image
Hi again, Last time I had big hopes to make enough progress for a first release. But I think I’m gonna delay that a bit (maybe still this month but we will see) even though I could actually complete the things, I anticipated. However here is finally the long promised video of it running on the Pinephone Pro because there’s still much to show. The back-end of the messenger-gtk application called libgnunetchat now uses the GNUnet Name Store service to manage your chats instead of using a local directory and some configuration files for each chat as before. This means that it is now possible to start the application from any directory and it will properly sync the chats depending on the account/identity selected. Next big feature is that it is possible to generate so called lobbies. Lobbies are empty chat rooms which will be shared in form of a GNS record under a newly generated zone instead of your own identity zone. This has multiple reasons: Technically your own key could ...

GNUnet Messenger API: February

Image
Hi there, At the beginning of the month I didn’t think to make that much progress. But now I get the feeling that the GUI client could come to an end next month. Why do I have this feeling? It’s looking really good already, not gonna lie. So as stated in my last update in January, loading older messages needs to be implemented as well as switching accounts during runtime. Now it is. Getting older messages still needs some tweaking to not load all older messages but it’s good enough for now. image of messenger-gtk account selection Switching accounts was more difficult to implement because I had to go back looking into the Messenger service of GNUnet itself, fixing that the service will run as user to make use of the same EGOs as the client side library in multi-user setups. The client side library ( libgnunetchat ) now exposes each of your EGOs as account with name and own directory to store the files and configurations used by the applications. Another benefit of this is tha...

GNUnet Messenger API: January

Image
Hi again, This is the first monthly report of this new year about the GNUnet Messenger API. There’s no new video to share this time but that doesn’t mean there’s nothing to show. animation of file preview in messenger-gtk As I teased last time that sending files should work already in theory. Well, now it works… actually. But it needed more changes internally in libgnunetchat than I thought. I also implemented visual previews for images and GIF animations as you can see. Users will be able to select which files can be downloaded automatically depending on its sender, size and chat. But currently each file has to be downloaded manually. Files besides images and simple animations can also be opened via default application. I should also add for everyone interested in the security behind the scenes that the files will be encrypted with AES and TwoFish before being shared using the FS submodule from GNUnet. Then the used and randomly generated key and the files hash will be sent...

GNUnet Messenger API: November

Image
Hi there, I just wanted to share a little report to the monthly progress of the GNUnet Messenger API from November. image of chat in messenger-gtk I’ve made quite some progress this month which can be followed visually this time because I focused on the GUI application with GTK+ for the most part but during testing I could track multiple bugs and issues down with the client-side library ( libgnunetchat ) as well as the messenger service itself in gnunet. Some issues still remain but they are on my list. For example the messenger service in gnunet has to be run as user currently to work as intended with the user’s ego keys from the identity service. This doesn’t make much sense because the messenger service integrates some optimizations for multi-user setups. But it’s not a huge issue for now and I probably have a solution to it in mind. The GUI application can now practically handle multiple chats in parallel. For now only public chats are available and I started the implementa...