libgnunetchat

library for GNUnet Messenger
Log | Files | Refs | README | LICENSE

README.md (4890B)


      1 # libgnunetchat
      2 
      3 A client-side library for applications to utilize the Messenger service of GNUnet.
      4 
      5 [![Linux Build](https://github.com/TheJackiMonster/libgnunetchat/actions/workflows/linux.yml/badge.svg?branch=master)](https://github.com/TheJackiMonster/libgnunetchat/actions/workflows/linux.yml)
      6 
      7 ## Features
      8 
      9 This library is an abstraction layer using the client API from different [GNUnet](https://www.gnunet.org) 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.
     10 
     11 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:
     12 
     13  - [ARM](https://docs.gnunet.org/doxygen/d4/d56/group__arm.html) to automatically start all required services without manual setup from a user
     14  - [FS](https://docs.gnunet.org/doxygen/d1/db9/group__fs.html) to upload, download and share files via the network in a secure way
     15  - [GNS](https://docs.gnunet.org/doxygen/d5/d60/group__GNS.html) to resolve published records of open lobbies, potentially exchanging contact credentials and opening a chat
     16  - [IDENTITY](https://docs.gnunet.org/doxygen/d0/d2f/group__identity.html) to create, delete and manage accounts as well as providing information to verify another users identity
     17  - [MESSENGER](https://docs.gnunet.org/doxygen/d6/d08/group__messenger.html) to open, close and manage any kind of chats as well as exchanging messages in a decentralized and secure way with other users
     18  - [NAMESTORE](https://docs.gnunet.org/doxygen/d3/da4/group__namestore.html) to store contact and group chat information locally and to publish records of lobbies accessible via GNS
     19  - [RECLAIM](https://docs.gnunet.org/doxygen/de/dea/group__reclaim.html) to claim and issue tickets regarding contacts and share private information with selected users
     20  - [REGEX](https://docs.gnunet.org/doxygen/d0/d57/group__regex.html) to publish peer information allowing other peers to quickly form a public group chat around a certain topic
     21 
     22 ## Build & Installation
     23 
     24 The following dependencies are required and need to be installed to build the library:
     25 
     26  - [gnunet](https://git.gnunet.org/gnunet.git/): For using GNUnet services and its datatypes
     27 
     28 Then you can simply use [Meson](https://mesonbuild.com/) as follows:
     29 ```
     30 meson setup build      # Configure the build files for your system
     31 ninja -C build         # Build the library using those build files
     32 ninja -C build install # Install the library
     33 ```
     34 
     35 Here is a list of some useful build commands using Meson and [Ninja](https://ninja-build.org/):
     36 
     37  - `meson compile -C build` to just compile everything with configured parameters
     38  - `rm -r build` to cleanup build files in case you want to recompile
     39  - `meson install -C build` to install the compiled files (you might need sudo privileges)
     40  - `meson dist -C build` to create a tar file for distribution
     41  - `ninja -C build docs` to build Doxygen documentation ([Doxygen](https://www.doxygen.nl/index.html) is required to do that)
     42  - `meson test -C build` to test the library with automated unit tests ([Check](https://libcheck.github.io/check/) is required to do that)
     43  - `ninja -C build uninstall` to uninstall a previous installation (you might need sudo privileges)
     44 
     45 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.
     46 
     47 ## Contribution
     48 
     49 If you want to contribute to this project as well, the following options are available:
     50 
     51  * Contribute directly to the [source code](https://git.gnunet.org/libgnunetchat.git/) with patches to fix issues or provide new features.
     52  * Open issues in the [bug tracker](https://bugs.gnunet.org/bug_report_page.php) to report bugs, issues or missing features.
     53  * Contact the authors of the software if you need any help to contribute (testing is always an option).
     54 
     55 The list of all previous authors can be viewed in the provided [file](AUTHORS).
     56 
     57 ## Applications
     58 
     59 There are a few applications using this library already. So users can choose from any of them picking their favourite interface for messaging:
     60 
     61  * [Messenger-GTK](https://git.gnunet.org/messenger-gtk.git/): A GTK based GUI for the Messenger service of GNUnet.
     62  * [messenger-cli](https://git.gnunet.org/messenger-cli.git): A CLI for the Messenger service of GNUnet.