Skip to content
This repository was archived by the owner on Nov 19, 2025. It is now read-only.
This repository was archived by the owner on Nov 19, 2025. It is now read-only.

feat: To Federate or Not To Federate? #2

@Speykious

Description

@Speykious

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions