Going Ghost
I’ve taken another look at Ghost. Ghost is a modern CMS (Content Management System) that supports a wide variety of interesting features. It has built-in analytics, payments & newsletter support. Not only that but apparently Fediverse support is coming soon. (I believe you can test it already, but it’s not enabled by default) I wanted to know if I could rebuild the Libre Solutions Network website with ghost by building my own theme.
My primary motivation was that if I could build a theme that is to my liking I could satisfy the criteria that I had built it with. The Site is a statically generated site using Hugo but I’ve build it’s theme from the ground up to support a variety of features I find important.
- Decent social media previews
- Shortcodes for multimedia
- As Tor & I2P friendly as possible
- Very little javascript
- First-class RSS feeds with multimedia
The documentation for building themes in ghost is quite excellent. I also appreciate the ability to just zip a couple of files and upload them to the site to test the theme. I would say that the developer experience for theme development is pretty good right now. Unfortunately I hit a couple of frustrations trying to accomplish some of the things I wanted to do. I’m realizing that the ultimate freedom of static site generators is very hard to compete with.
- For multimedia in your RSS feeds recommends you use a hack/workaround to actually embed the media. The lack of first-class support for multi-media RSS feeds feels like a huge oversight.
- By default the javascript for your membership features and search is served from a remote CDN. It is a shame that this isn’t something at least served by the site itself when one is self-hosting. Changing this requires either going without the pre-filled head partial, or modifying your ghost installation directly.
- It seems that supporting other url schemes (such as Tor & I2P) would require running multiple redundant front-ends. This seems like a huge pain, but has advantages when one would want to have different themes for each. In that case you could remove all javascript on the darknet front-ends but keep it on the http site.
This is disappointing because I had hoped that by switching to ghost I could ditch Substack and have a better website at the end of it. These issues are not really that big a deal for anyone building an ordinary site, but for what I want out of the Libre Solutions Network site it’s effectively a non-starter. In my opinion, Ghost is probably excellent for anyone who requires it’s features and wants to build a beautiful looking site. I’ve seen comments to the effect that it lacks the performance one would want which is a huge loss over the speed of static sites.
Is Ghost Good?
If I was building a site for ordinary people and not tech purists, I would say it’s a great option and you can get a lot out of building your own theme for it. I really would like to see Ghost gain more prominence considering how far it goes to lower the barrier of entry for people to have a first-class experience publishing on the web. I’d really like to see them resolve the issues I’ve mentioned, but it’s not likely to be a deal-breaker for many people.
You get a lot “out of the box” with ghost, so for an individual or small organization I think it’s very hard to go wrong with starting with ghost. The membership tier features are pretty nice and the composer works great. Clearly a lot of thought has gone into building a powerful CMS, I just wish it was a bit more flexible. They’re also working on supporting other payment providers so hopefully it will be more than just Stripe in the future.
But what about Static+?
I’ve previously written that there’s probably room for a lightweight CMS that leverages a database and simple API to create a “hybrid” static site with additional features. This would allow a website to support advanced modern features, but degrade gracefully in situations where users disable scripts. In addition to that, you could likely have all the power of a CMS and the speed of a static site all in one. I believe that when supporting Tor & I2P traffic, this is effectively the best you can do. There will always be a need to run server-side operations
I think Static+ is going to be the future of flexible CMSs because it makes no sense to store the entire structure and content of a mostly public website in memory. Instead of having to regenerate every page on each visit you can save a great deal of resources on sites that aren’t focused on constant real-time updates. You could still move fast enough to support the Fediverse and other neat APIs too.
I’m convinced that to actually bring more people into the free and open web requires giving them access to tools that they can reasonably deploy and use. I love static sites, but I understand that the majority of people would prefer posting to their website to feel just like posting on social media. That seems to create challenges because this is impossible to deliver without some service running as a CMS, but for small personal sites I think Static+ strikes the balance well.
I would love to see a new CMS designed from the ground up with many of these concerns in mind. Wordpress can do everything it seems, but it’s so modular that it has it’s own problems. The perfect CMS should be as flexible as using a static site generator, but provide a wide variety of useful features to save you time and headaches. It would be incredible to have a CMS that had the following built-in from the ground up:
-
Powerful RSS Features (Like Podcasting 2.0 support, and properly styled feeds)
-
Custom themes support (Configurable, like they are with Ghost)
-
Configurable taxonomies (like post series’, courses, etc)
-
Passkey support (Just to make life easy)
-
Rich media embeds
-
Webtorrent for large static media
This requires the site itself to run a whitelisted tracker for it’s own content.
-
Built-in analytics
-
Multi-user
-
Fediverse Support (Not because it’s that important, but because it’s much harder to just add on and not consider from the start)
- This has other advantages like potentially being able to side-roll it’s own form of federation for comments / interactions. By modeling the concept of a “remote user” you can build powerful integrations and moderation tools.
-
…this list could go on and on forever