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: | Tweet this! | Search Twitter for discussion