Bovine

Bovine is meant to be a modular FediVerse server that supports ActivityPub. During its history, as how to split the tasks between different modules has become clearer, and the split is not done yet. A lot of the changes are due to the realization that parts can be split away as an ActivityPub Client. Here an ActivityPub Client is an application that communicates with just a single ActivityPub Server. https://codeberg.org/bovine/bovine

bovine: basic utility for the FediVerse — bovine 0.1.4 documentation

bovine is an attempt to split the typical FediVerse server into small, reusable chunks. This package contains the first chunk

The FediVerse is considered here to considered to consist of entities communicating through ActivityPub. Furthermore, this package contains methods for signing messages and looking up information through webfinger.

As mentioined above this package is meant to be the basis for other things. If one wants to build an ActivityPub Server, one would start with adding some form of storage for activities, see bovine_store in bovine. If one wants to build an ActivityPub Client, the choices are different. For an example see longhorn, which powers my personal blog.

Tutorial: A simple FediVerse Server — bovine 0.1.4 documentation

First seeing what the objects, we create look like on Mastodon and then recreating them. There are two sources of complexity here:

FediVerse servers need to authenticate their requests with each other. For this we need a public/private key pair

The FediVerse does not use the actor id (e.g. https://mas.to/users/themilkman) as identifier for actors, but a FediVerse handle (e.g. @themilkman@mas.to), which can be resolved via Webfinger

Understanding the parts what makes the FediVerse work

Collecting the parts to make everything work

Building the necessary objects

The Server and sending a first message

Receiving messages

Following and being followed

Cleaning up

Afterword


Edited:    |       |    Search Twitter for discussion