-
Notifications
You must be signed in to change notification settings - Fork 4
feat: To Federate or Not To Federate? #2
Description
Area
server
Problem
We have to decide how instances and authentication are handled for the backend. We have several options to consider.
First, whether the auth server and instance server should be separated or not. For example, Minecraft has a centralized auth server, but we can run and host our own Minecraft servers; with GitLab however, the authentication is managed by the instance, so you need one account per instance.
In light of that, given that the Loki server is undoubtedly going to be a FOSS project, it makes sense to just endorse people making their own instances. Although it makes things simpler, having only one centralized instance isn't ideal in that regard.
The question now is, do we federate or not? Do we allow different instances to talk to each other?
What are the pros and cons of each decision, and what sub-options do we have ? How does it affect UX in specific cases? What other implications are there?
The different models we discuss will tell us whether we want to have the auth server separated from the instance server.
Suggested solution
My favorite solution so far, since I intuitively know how it might work, is the Minecraft model. We have a central auth server and the possibility of creating our own instances. "Instance" in this case means "guild", or maybe even group of guilds.
Pros
People can host their own instance of the Loki server, and it would be really easy to join a server that's on a custom instance. Just like when joining a Minecraft server, you just need a specific address and port and voilà. We can implement almost every client-facing feature we want to implement with this model.
It also seems like a system simple enough that later on, if we do decide that we want federalization, we could pull off relatively easily.
Cons
Intuitively, guilds don't talk to each other, as they are separate communities. But on Discord for instance, there is this possibility of following a guild's channel in another server that you administer. If we go with this model, then we cannot implement such a feature. That is, unless we reconvert it into a federated instance model, which again appears relatively easy to pull off at first glance.
Alternatives
You tell me! :)
Additional information
No response
Checks
- I have checked for existing issues about this, and did not
find any.