Federation
Eludris will be federated, meaning anyone can host their own instance and instances can communicate with each other so that any user on one instance can interact with others on any other instance.
Federation Implementation
All routes where other instances can request or submit data will have an
additional /external
path (like /external/this/channels/:channel_id/
).
For info about how IDs are created read this.
/external
routes will follow specific rules, these being:
A new instance (one the home instance has never seen before) will have to first
send an identify
payload.
This payload is simple as it just provides a shared secret token key that both instances
can use to identify each other (in case an instance's domain gets compromised or
changed) and the instance's id.
/external
routes will take both Oprish payloads and Pandemonium payloads in the
form of HTTP requests.
For example, let's say an instance A has a community with a channel that has users
from other instances, one of which is B.
When a user from instance B sends a message to B's domain/external/A's ID/channels/:channel_id/messages
,
B will send the Oprish message payload to A's domain/external/this/channels/:channel_id/message
.
When a user from instance A sends a message the opposite will happen with A sending a request to B's external route in form of a Pandemonium payload.