blog Servers are easy, Integrations are hard

Tags:
big-tech self-hosting

Often when a company does something silly (being quite generous with this term), there are almost instantanious comments about some kind of self-hosted alternative. While I enjoy self-hosting (and building tools for me to self-host), the server is the easy part (again, being generous with the term). A huge source of friction for many of the self-hosted options, are the integrations that make it feel complete and often the part that needs the most continual investment.

Bookmark / ReadItLater / Feedreader

This is probably one of the easier categories of self-hosted apps. Most bookmarks are going to be a fairly simple table of the url, title and maybe some tags. For a fancier version, there may be an object store to store archives of the stored bookmarks.

The polish step that becomes challenging are browser integrations. For the server side api bits, one can write it in their favorite language and framework. Browsers often change so browser extensions also need to keep up to date. For mobile operating systems, one would need to write at least a small extension using that ecosystems langauges and libraries.

Password Manager

Password managers have a lot more responsibility for security, so the server side becomes more complicated. Once the server side sync is finished, one also needs to handle the operating system integrations. Because of the sensitive data being handled, testing and qa are fairly important and harder to do as a sole developer.

Mastodon and S3

Mastodon and S3 are similar in that they provided their own API that many other projects copied. While many other products copy an existing API, one is left to try to reproduce all the idocracies of the original project, even if it doesn’t make sense for the new one. With Mastodon and other ActivityPub projects, I would love to see there be more experiments as the working groups are looking at some C2S improvements. Even if C2S doens’t provide things like a full timeline view, it would be nice to work from a shared standard when it comes to the lower level plumbing like creating a new Note object or Article object and so on.

More Protocols

Similar to the NxM problem that Language Server Protocol was designed to solve, it would be nice for there to be better protocols around different type of self-hosted servers. It is likely to always be a challenge because the fun parts are often making something new, not working together.