First Look At Ghost

I've been interested in Ghost since first seeing the Kickstarter. The draw for me was both the slick reimagining of the of the blog authoring UI and the fact the platform would be built using Node.js.

Despite working a lot with WordPress in the past, I'm not actually a blogger. It's one of those things I've always wanted to do but never got round to. I've written many a draft in iA Writer, but they've never made it much further than that.

I would never have considered actually authoring posts in WordPress, although there are ways now to make authoring in WordPress a more pleasant experience. Ghost, however, has an easy, distraction free authoring environment from the get go. UI-wise it is really little more than a split-screen Markdown editor. In fact, I'm writing this post in Ghost right now and I feel just as at home as I do in iA Writer. And now the draft is sitting here in my blog, I feel guilty not publishing it. Maybe this will actually be published for once.

As I mentioned, the fact Ghost is built with Node.js is one of the attractions for me. I'm looking forward to digging deeper into the source code. I'm happy to see Grunt is used throughout and I'm currently in the process of combing through the somewhat lengthy Gruntfile to see if there is anything I can glean for my own Grunt toolbelt.

The core is well covered by both functional and unit tests, it seems a TDD approach has been taken. CasperJS is used for functional testing and Node.js aficionado TJ Holowaychuk's Mocha testing framework is used for unit tests. I'm ashamed to admit I've never written a test in my life, hopefully I'll be able to learn from Ghost's test suite.

Ghost comes with SQLite, meaning that it relies on no external database. Your database content is stored in your install's content directory. The advantage of this is two-fold:

  1. Deploying to your own server (and running locally) is dead simple. There's no need to worry about keeping a database process running, or even installing a database.

  2. There's only one thing to backup. Whenever you backup your content directory, you also get a backup of your database. Any WordPress users who have puzzled over how to easily sync up the local version of their site will appreciate this. When you do a git pull you'll receive the most up to date data as well.

How efficient of a solution this is I can't yet vouch for.

This is all very fascinating and nerdy, but the problem is that Ghost is a blogging platform designed to be simpler than WordPress. Deploying Node apps, right now, requires either a VPS / dedicated server or a PaaS like Nodejitsu, Stackful.io or even Azure (but not Heroku, because the database Ghost ships with is not supported there, although it is technically interchangeable with other data stores). I tried to get Ghost running on Nodejitsu and Stackful, but had no joy with either, so I'm currently hosting on a $5 / month Digital Ocean VPS.

There are many web developers who are uncertain exactly how to do this, let alone countless Ghost backers who are not web developers at all. You'll find a few disgruntled Kickstarter backers on the Ghost forum who thought they'd be able to run this on their bog-standard, cheap LAMP shared hosting account. Of course, they cannot.

The solution here is that Ghost, along with other third party providers, will be offering a hosted solution which will allow one click deployment of blogs. Kickstarter backers are provided with varying periods of free use of the official service and third party provider, HostGhost, is offering hosting from £3.99 / month. This is certainly a low enough price point to compete with the kind of cheap shared hosting you'd use for a WordPress install.

Hopefully we'll also see a free tier eventually because there's little need to pay to blog for most small scale bloggers. A free tier is important to compete with the likes of WordPress.com, which is free and offers complete data portability.

We're setting up world-class hosted platform that allows you to set up a new Ghost blog in just a couple of clicks.

(Okay, maybe not quite one click)

The hosting service is not ready just yet, which is probably the main source of aggrevation for most backers eager to get their hands on Ghosts smooth'n sexy interface, but who are not quite sure what it means to "spin up an EC2 instance".

No one click install... what's a source code?

Although if you expected everything to be ready at this stage, you're insane. The Ghost team mislead nobody with regards to what would be available to start with, or indeed where you'd be able to run Ghost.

I'm looking forward to building on top of and using Ghost. I met John and many contributors at the launch event last week. John was poring over the appearance of the g in the Ghost logo and the opacity of the logo on the promotional banners, which surely bodes well for Ghost's future aesthetics. Technical lead Hannah has set out a strong foundation and guidelines for contributors (which seems to be a strong team of great developers already), although I have only scratched the surface so far.


Why do I want to blog?

It's something I've always wanted to do, but I've never felt like I have a lot to share (that would actually be interesting to read). Recently I've felt it could be helpful to keep a journal to practice my writing (which has perhaps stagnated over the years that I've been writing more code than full sentences) and keep track of the way I see the world, my technical understanding of things and just how much I sound like a douchebag whilst doing so. Hopefully the latter of which will decrease over time.

I suspect this will become half tumblog of things I like and half recollection of uninteresting observations and things from my life. Please don't feel obliged to read on. (oops, I'm already writing poncy BS. Of course you wouldn't feel obliged to read on.)