Skip to content

bovine-herd

bovine_herd contains all the parts to run a full fletched Fediverse server with bovine. The simplest usage would be achieved by

from quart import Quart

from bovine_herd import BovineHerd

app = Quart(__name__)
BovineHerd(app)

This will be a fully powered Fediverse server without a single user. To add users use bovine_tool or the BovineAdminStore from bovine_store. In order for the event sources to work, you will need to configure bovine_pubsub. For more discussions on deployment see the deployment section.

Configuration

The database to be used can be configured by passing the variable db_url to BovineHerd. The application has been tested with sqlite3 and postgres, where sqlite3 runs into concurrency issues if more than one BovineHerd process is started.

By passing appropriate arguments to BovineHerd, one can also configure it to use AMQP for processing of requests instead of background tasks. This also enables one to move processing outside of bovine by configuring it differently. See this tutorial for details.

A block list can be added following this tutorial.

Design

The ActivityPub standard can be split into two parts:

  1. Introducing Actors as the representation of users in social communication
  2. Introducing side effects to be performed when sending or receiving an ActivityStreams Activity

One can think of bovine_store as the first task. bovine_process as the second. Finally bovine_herd’s task would be to tie this together as a neat bundle that can deployed in the Fediverse.