qaul.net services

Following is a list of services that are bundled with qaul.net, and what they can do for you.

Services have an internal ID that is used to identify them in libqaul, using reverse fully qualified domain specifiers (for example net.qaul.my-app).

Fundamental services

As outlined in the technical introduction, some services are fundamental, meaning they provide functionality to other services, instead of being user-facing.

Type Messages

This service provides an interface to send strongly typed messages, with extension hooks for external services to provide their own type data. In libqaul all payloads are raw binary which is done to save space, and not complicate the API unecessarily. However sometimes type information is useful, and an app service might want to rely on it. That's what this fundamental service is for!

  • Service ID: net.qaul.fundamental.messages
  • Crate name: qaul-type-messages

Group abstractions

This service provides a group management abstraction. While many app services might want to manage groups, doing so in an encrypted system, with no direct group leader can be tricky. To avoid having to re-implement this more than once, all qaul.net bundled app services use this fundamental service, and it is recommended that your app services do too!

  • Service ID: net.qaul.fundamental.groups
  • Crate name: qaul-groups

App services

These are services that provide some user-facing functionality. Some will ship with their own UI, while others will use a UI bundle (such as the main qaul.net services).

Feed

  • Service ID: net.qaul.feed
  • Crate name: qaul-feed

Public message feed, similar to micro-blogging applications such as mastodon or twitter. Users can compose short-medium length messages that get shared with the whole network. You have the choice of filtering by "all messages" and "only following", where you can only display messages sent by friends or people you trust.

Messaging

  • Service ID: net.qaul.messaging
  • Crate name: qaul-messaging

Private (1-to-1 or groups) text messaging, that can optionally (by default) be encrypted. Conversations can either be displayed as a feed (like chat), or threaded (like e-mail). Files can be sent either in-line (if the payload is small enough), or via file-announce messages that use the "files" service.

Filesharing

  • Service ID: net.qaul.files
  • Crate name: qaul-files

Filesharing via announce-links similar to how torrents get announced on trackers. You can announce a file to either a group of people, a singe user, or the whole network. Optionally this service can be configured to download all files that were publicly announced to allow servers to replicate a "public archive" that users can have access to, if the original source of a file disappears.

Voices

  • Service ID: net.qaul.voices
  • Crate name: qaul-voices

Integrates with various platform features to allow voice call streaming over the qaul.net, as well as preparing audio messages that can be inlined into messages, or sent to many people via announce links.

Radio

  • Service ID: net.qaul.radio
  • Crate name: qaul-radio

Similarly to voices, it integrates into platform features to provide audio capture and playback, but for one-to-many streams. This way people can broadcast themselves into the network, while others can tune into a program, without being able to respond. Similar to files, this service can be configured to automatically archive radio broadcasts for community servers.