Celebrating 10 Years!

profile picture

Ghost's API

October 24, 2017 - Roundwall Software

Ghost is a blogging platform written in Node JS that was released a few years ago after a successful Kickstarter campaign. They promised a blogging platform without all the complications of Wordpress and even partnered with companies like Digital Ocean to make it easy for users to try and use.

One of the promises of Ghost was that the web admin tool was built using an API from day one rather than adding an API after the fact. It used EmberJS and provided a fairly nice web interface. The API, however, remained private and only worked with this JS front-end. Years later, they added the ability for third party clients to authenticate and access the API, but it was still a private API and therefore subject to change whenever they felt like it.

Last year, they even released a "desktop" client. It made use of Electron to essentially just provide the web interface in a desktop shell. In their blog post they talk about how this was great because it allowed users to write their posts away from the clutter of their other blog posts. They explain chosing Electron because it enabled them to build the desktop app with the same language and tools they build the web parts with. Javascript all around! All of this convenience comes at a cost: without an internet connection, this web shell won't work. Say goodbye to working on that draft on the airplane! With that Electron shell, there's yet another app in the list with Slack and others in using up resources even when they're idle.

What they could have done was make the whole API public. I discussed this with their developers and it seemed this was the plan some time ago, but it has yet to happen. This would have enabled developers to make third-party clients. We'd have desktop, iOS, and even Android apps to publish and edit posts on our Ghost blogs. Makers of apps like MarsEdit or Blogo could have added support for Ghost even. But what developer would take a risk adding support for an API that's undocumented and subject to arbitrary change?

I guess instead, it's time to switch to another platform. Wordpress may be famous for all kinds of problems, but they got an API worked out a long time ago.