A client-side library for applications to utilize the Messenger service of GNUnet.
This library is an abstraction layer using the client API from different GNUnet services to provide the functionality of a typical messenger application. The goal is to make developing such applications easier and independent of the GUI toolkit. So people can develop different interfaces being compatible with eachother despite visual differences, a few missing features or differences in overall design.
Implementing all those typical features of a messenger application requires more than only a service to exchange messages. Therefore this library utilizes multiple different services provided by GNUnet to achieve this goal:
- ARM to automatically start all required services without manual setup from a user
- FS to upload, download and share files via the network in a secure way
- GNS to resolve published records of open lobbies, potentially exchanging contact credentials and opening a chat
- IDENTITY to create, delete and manage accounts as well as providing information to verify another users identity
- MESSENGER to open, close and manage any kind of chats as well as exchanging messages in a decentralized and secure way with other users
- NAMESTORE to store contact and group chat information locally and to publish records of lobbies accessible via GNS
- RECLAIM to claim and issue tickets regarding contacts and share private information with selected users
- REGEX to publish peer information allowing other peers to quickly form a public group chat around a certain topic
The following dependencies are required and need to be installed to build the library:
- gnunet: For using GNUnet services and its datatypes
Then you can simply use Meson as follows:
meson setup build # Configure the build files for your system
ninja -C build # Build the library using those build files
ninja -C build install # Install the library
Here is a list of some useful build commands using Meson and Ninja:
meson compile -C build
to just compile everything with configured parametersrm -r build
to cleanup build files in case you want to recompilemeson install -C build
to install the compiled files (you might need sudo privileges)meson dist -C build
to create a tar file for distributionninja -C build docs
to build Doxygen documentation (Doxygen is required to do that)meson test -C build
to test the library with automated unit tests (Check is required to do that)ninja -C build uninstall
to uninstall a previous installation (you might need sudo privileges)
If you want to change the installation location, use the --prefix=
parameter in the initial meson command. Also you can enable optimized release builds by adding --buildtype=release
as parameter. In case you installed GNUnet to a custom prefix which is not part of the directories pkg-config is looking at, you can adjust PKG_CONFIG_PATH
with your selected prefix to build properly.
If you want to contribute to this project as well, the following options are available:
- Contribute directly to the source code with patches to fix issues or provide new features.
- Open issues in the bug tracker to report bugs, issues or missing features.
- Contact the authors of the software if you need any help to contribute (testing is always an option).
The list of all previous authors can be viewed in the provided file.
There are a few applications using this library already. So users can choose from any of them picking their favourite interface for messaging:
- Messenger-GTK: A GTK based GUI for the Messenger service of GNUnet.
- messenger-cli: A CLI for the Messenger service of GNUnet.