After 5 years and $3M, here's everything we've learned from building Ghost
Centralised wins on simplicity, Open source wins on flexibility
This is the really big one.

When we started out, we tried to make everything as simple and user-focused as possible. Our intent was to make the app as easy to use as any closed source platform, but with the added bonus of actually being open source with a socially positive business model.

Most open source software has terrible UI design, so we would have great UI design and it would be the best of both worlds!

This falls apart almost immediately. For example: if you build a centralised service - you can solve authentication, search and image optimisation pretty easily with OAuth, Algolia and imgix. It costs you minimal engineering time and a few dollars to set up so your users have a wonderful experience with absolutely no overhead.

Try to build the same thing as a decentralised product and every one of your users has to set up their own Twitter developer apps, Algolia API keys and imgix accounts + configurations. Each service has to be set up, connected and paid for. A significantly high level of technical expertise is required to even get it all slightly working. The average non-technical user doesn't have a single hope in hell of getting it working let alone having a good experience.

We spent several years trying to engineer our way out of this in increasingly complex ways, so that people could set up a publication on Ghost with the same level of ease as they do on Medium. In part, because that's what people were demanding. We never even got close. It's just not how modern web technology works.

Decentralised platforms fundamentally cannot compete on ease of setup. Nothing beats the UX of signing up for a centralised application.

Read the "But" that follows.