It's not SoLiD, but it's FIRM.
This is an experimental ActivityPub-enabled federated information resource manager. This library can be used to implement ActivityPub, Linked Data, and similar servers. It's currently not intended to be the basis for a public servers, but rather a platform for experimentation and implementing proof-of-concept for social web ideas.
Warning
This library is still in the early stages of development, but there are already some potentially useful and interesting features:
These are current features, unless tagged otherwise.
- Python 3 implementation (libraries for other languages being developed)
- Minimal external dependencies (only cryptography libraries for HTTP signatures)
- Multi-actor
- Multitenant
- Multiple domains supported on a single server
- Data vocabulary-independent
- Not specific to ActivityStreams 2.0
- Flexible URIs (supports any HTTP URI path structure)
- Abstract web interface
- Abstract resource store
- Multiple authentication techniques
- HTTP Signatures (Cavage)
- Client Authentication/Authorization
- OAuth2
- HTTP Basic Auth
- Bearer Tokens
- Methods can be used simultaneously (chained)
- #future new RFC 9421 HTTP Signatures, etc.
- Implements both S2S and C2S ActivityPub profiles.
- Supports unofficial ActivityPub media upload protocol
- Extensible WebFinger (Resource-specific properties)
- Interoperates with Mastodon
- Extensible NodeInfo (Tenant-specific Metadata)
- JSON Schema-based validation (WIP)
- Event streaming Support (SSE, FEP-3ab2)
- Collection filtering using JSONPath (RFC 9535)
- Advanced Features
- Multi-actor
- Multi-tenant (multiple instances hosted in same server process with shared remote cache)
- File-based storage (JSON)
- Partitioned storage
- Remote cache, separate from tenant documents
- Private storage
- Partitioned storage
- Linked Data Support (using firm-ld library)
- FIRM storage implementation that uses a RDF graph store (rdflib, oxigraph)
- SPARQL endpoint integration (using rdflib_endpoint)
- Full-text search (FTS) over selected triples (sqlite3 FTS)
- ActivityPub C2S Proxy Endpoint
- Uses FastAPI and uvicorn
- Allows per-tenant customization
- Integration testing with FIRM testsuite based on the activitypub-testsuite
This is very subject to change.
- Version 0.2.0
- Admin Web Interface
- ActivityPub Media Upload
- Version 0.3.0
- RDF Graph Storage (mostly implemented already)
- SPARQL endpoint (already implemented)
- Full-Text Search on RDF data (implemented already)
- Long Term
- More ActivityPub C2S Extensions
- Additional storage implementations (see above)
- FEP prototyping and proof-of-concept demonstrations
- Domain-specific server implementations based on FIRM foundation.