Matrix, Mastodon, and various other federated (or otherwise "self-hosting friendly") server software developers, listen up!
(This post will focus mainly on federation, but even if that is not your focus you should listen as well)
The weight of your server software matters. If you don't work on keeping it light, you are actively hurting your chances on being successful.
In my mind, the main goal for a federated protocol is to not have a "main" server. Both Mastodon and Matrix fail this goal.
Go ahead and compare the popularity of "matrix.org" against other Matrix servers, and compare the popularity of "mastodon.social + mastodon.online" (both from the main Mastodon dev) against other Mastodon servers.
People that self-host things will most likely self-host multiple things, probably on a small amount of servers (frequently just one). So, if you want to cater to this crowd that can help you with your goal of reducing the network's dependency on you, you should design your server software to be able to play nice with other server software.
Choose your tools carefully and make your software as light on resources as you can.
Try to not force any external service dependencies for as much as you can.
Especially for things like reverse proxies that affect other software.
Make deploying an instance as easy as possible,
But don't force people into curl|bash'ing scripts or onto platforms like Docker.
They are fine to have, but always have a manual install process alongside.
You will never know the specific needs of any server.
Don't expect to be the only thing that will ever be hosted on this system.
Don't generate SSL certificates or anything else other tools can and will do better.
Scaling down is important. Perhaps more important than scaling up, as your network should be able to scale by having more independent servers, rather than having more power behind a single server.
And you really need to plan this from the beginning, trying to retrofit lightness into your software does not work. Just ask Matrix (well, Synapse).
(The text below has been copied from something I wrote outside Gemini a few months ago)
This isn't a good assumption to make. As hardware yes, <resource> can be pretty cheap depending on how you look at it.
But when you're talking about servers that should stay online for as long as they can, most people don't have the advantage of being able to host from their own hardware (crap ISPs, crap speeds, no datacenters close by, no spare hardware, etc etc...). So you turn to someone else to host the server for you, and you generally have to pay monthly for this. This is where stuff starts getting expensive.
Now, I pay 5$/mo for my server, which might not be a huge deal at all for you. But remember everyone living in countries that don't use USD, EUR or other "common" currencies most places accept, and you suddenly need to know which currency you're dealing with to be able to make the claim of "<resource> is cheap".
On top of that, add the financial situation or frugal-ness of the person you're talking about, and suddenly <resource> might not be as cheap as you'd expect.
For larger operations like hosting the "main" instance of your software, or even for smaller operations covered by donations and such, <resource> can be cheap compared to income and the rest of the expenses, but for someone hosting a couple things for themselves on a small server with pocket money, that is not always the case.
🐺 · CC BY-SA 4.0 · firstname.lastname@example.org