Versia Federation Protocol

The Versia Protocol is designed as a communication medium for federated applications, leveraging the HTTP stack. Its simplicity ensures ease of implementation and comprehension.

Vocabulary

The Versia Protocol uses the following terms:

  • Entity: A generic term for any JSON object in the protocol, such as a User, a Note, or a Like. Entities are uniquely identified by their id property.
  • Implementation: A software application that implements the Versia Protocol.
  • Instance: An application deploying an Implementation.
    • Using the same nomenclature, an ActivityPub Implementation would be Mastodon, and an Instance would be mastodon.social.
  • Federation: The process of exchanging data between two or more Instances.

Philosophy

The Versia Protocol is heavily inspired by the ActivityPub specification. It is designed to be simple and easy to implement, with a focus on the following concepts:

  • Simple Structures: Entities are represented as JSON objects. No JSON-LD, no complex data structures, just plain JSON.
  • Modularity: The protocol is divided into a core protocol and extensions. Implementations can choose to support only the core protocol or add extensions as needed.
  • Namespacing: To avoid extension conflicts, all extensions are namespaced.
  • Signatures: Most types of interactions must be signed with a private key. Unlike other protocols, signatures are mandatory, not optional.
  • Developer-Friendliness: Understanding and implementing your own Versia server should be easy. Documentation is aimed at developers first.

Resources

Entities

Learn how Entities work and how to use them to transmit federated data.

Federation

Learn how to federate data across the Versia federation network.