ci/woodpecker/push/test Pipeline was successful Details
|5 days ago|
|.woodpecker||2 weeks ago|
|bovine||6 days ago|
|bovine_herd||5 days ago|
|bovine_process||5 days ago|
|bovine_pubsub||5 days ago|
|bovine_store||5 days ago|
|bovine_tool||5 days ago|
|bovine_web||2 weeks ago|
|ci||2 months ago|
|docs||2 weeks ago|
|examples||2 months ago|
|tests||6 days ago|
|.gitignore||2 weeks ago|
|.readthedocs.yaml||2 months ago|
|LICENSE||5 months ago|
|README.md||2 weeks ago|
|all_tests.sh||3 weeks ago|
|pyproject.toml||2 months ago|
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.
Parts of bovine
When done, these parts should only depend on the parts above them. So bovine_process can be used with only bovine and bovine_store. Furthermore, bovine_store and bovine_process should just provide simple interfaces that can be swapped out.
bovine (pypi, docs) provides the basic ActivityPub communication with some form of authorization. Currently, HTTP Signatures and Moo-Auth-1 are supported.
bovine_store is used to store json-ld by their id and provide a certain level of visibility and access control.
- Serves requests directly represented by objects
- Contains the actor storage code, and methods to manage actors
- Tested with both PostgreSQL and sqlite3 databases
bovine_process contains the Activity processing described in ActivityPub.
- Contains tests for the side effects of activities
- Supported: follow, accept, create, update, delete
bovine_pubsub allows events to be propagated to subscribers. Two variants exist
asyncio.Queuein the case of a single worker
- Using Redis for multiple workers. Enabled through setting the environment variable
BOVINE_REDISto the URI of the redis server.
bovine_herd the FediVerse server implementation. This contains
- Webfinger, nodeinfo
- Requests to endpoints not directly represented by objects, i.e. POST inbox
- Glue code to make everything work together
tests contains a test suite that ensures that bovine_fedi properly implements a FediVerse server
Existing ActivityPub Clients
- mechanical_bull automatically accepts follow requests. This was part of the evolution of my thinking how to separate out ActivityPub Clients.
- longhorn is a blog. One can visit mine at https://blog.mymath.rocks/
- calf provides a simple terminal user interface for the inbox. This might get expanded into a full client in the future.