ci/woodpecker/push/test Pipeline was successful
Details
Reviewed-on: #26 |
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 |
README.md
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.
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
- Using
asyncio.Queue
in the case of a single worker - Using Redis for multiple workers. Enabled through setting the environment variable
BOVINE_REDIS
to the URI of the redis server.
- Using
-
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.