person in white robe standing on brown dried leaves during daytime

On not becoming a Ghost site

Though I’m still very pleased with Word­Press I have con­tin­ued to attempt to move the con­tents of this site over to Ghost. It’s an exper­i­ment in Ghost’s capa­bil­i­ties and a search for a way to deal with pri­vate con­tent. For sev­er­al years in the ear­ly aughts I kept this blog on Live­Jour­nal. Those were the years when the blog was most per­son­al and much more of a com­mu­ni­ty exer­cise. Live­Jour­nal was (and is) a walled gar­den sort of plat­form, which made it pos­si­ble to choose who could see and/or com­ment on my posts.

Because I was less con­cerned about what a ran­dom vis­i­tor might see, my post­ing pat­terns were very dif­fer­ent. This can be seen by look­ing at the archives here, and it’s more obvi­ous if you have access to the pri­vate posts (which, of course, no one but me does). It looked a lot more like a Face­book stream, with memes post­ed and with a mix of long-form rants and one-line sta­tus updates. It also includ­ed some much more per­son­al infor­ma­tion than I’ve been will­ing to post in the last fif­teen years or so, includ­ing per­son­al rela­tion­ships and com­plaints about cowork­ers. As impor­tant as it is to be open and hon­est about my thoughts, opin­ions, and feel­ings, some specifics should be pri­vate. An angry rant about a dif­fi­cult day at work real­ly should­n’t be for every­one’s eyes.

I’d like to pre­serve that pri­vate con­tent and per­haps cre­ate a space where I could con­tin­ue that kind of per­son­al jour­nal­ing, vis­i­ble only to a few. That’s where Ghost comes in. Among its oth­er virtues, Ghost is set up out-of-the-box for pri­vate con­tent to be shared only with sub­scribers. Though I’m not cur­rent­ly inter­est­ed in hav­ing a pay­wall for any of my projects, the abil­i­ty to restrict con­tent to friends or fam­i­ly is a fea­ture that I’ve missed. Of course Word­Press and Dru­pal have mod­ules for cre­at­ing per­mis­sions sys­tems and access con­trol lists, but there is some appeal to using a fea­ture that is built in and has lit­tle extra complexity.

Ghost’s first short­com­ing is its lack of a native com­ment sys­tem, as I’ve men­tioned before. Com­men­to is a capa­ble com­ment sys­tem but the import options are some­what lim­it­ed. My lat­est attempt has left me with a JSON file full of com­ments that could (prob­a­bly) be used in a Com­men­to install with the Word­Press site, but the Word­Press Ghost Exporter fails to pre­serve the post URLs, which means that the new­ly-migrat­ed posts can’t be asso­ci­at­ed with the new­ly-migrat­ed com­ments. That’s not an insur­mount­able obsta­cle, sure­ly. I haven’t looked at the code for the exporter but I can’t imag­ine it would be too dif­fi­cult to mod­i­fy the export­ed posts’ URLs. I could do it with regex on the JSON file the exporter generates.

How­ev­er, after see­ing my thou­sand-plus posts import­ed into Ghost on my devel­op­ment serv­er, I have some qualms about Ghost’s suit­abil­i­ty as a con­tent man­age­ment sys­tem, even for sim­ple blogging.

Stuck in an infinite loop

There does­n’t seem to be any way to dis­able infi­nite scrolling and replace it with a way to skip for­ward through the feed. If your site’s infor­ma­tion is time-sen­si­tive and any­thing after a cer­tain amount of time is no longer rel­e­vant, this may not be an issue. If you have a rel­a­tive­ly young blog with only a few posts, this will sim­i­lar­ly not be an issue. On a site with hun­dreds or thou­sands of arti­cles, infi­nite scroll with­out anoth­er way to look back­wards in time will bury your old con­tent where it can­not be found.

The ques­tion of how to get around this has been asked, again and again on the Ghost sup­port forum. There is an answer which has a few issues. First, it requires edit­ing theme files. That’s accept­able (though not ide­al) for me on a self-host­ed install but it seems like a draw­back for any­one on Ghost’s paid host­ed ser­vice, or who is afraid of edit­ing files on their serv­er. To com­pound this issue, the solu­tion giv­en above does not apply to the cur­rent ver­sion of Ghost’s Casper theme. Today’s Casper requires dig­ging into Javascript files. Per­haps I’ll go deep­er into that in a lat­er post.

To be fair, this is a theme-spe­cif­ic issue. There are themes that don’t include infi­nite scroll. I don’t see any on which it is a fea­ture that can be enabled and dis­abled using the admin inter­face. For many this could lim­it their avail­able theme choices.

How­ev­er, none of the themes offered with Ghost offer an actu­al solu­tion to the prob­lem of nav­i­gat­ing old posts. Instead of infi­nite scrolling, themes with pag­i­na­tion have two vari­a­tions: a “load more” but­ton which is infi­nite scrolling but with­out the scrolling being auto­mat­ic, or a pag­i­na­tion inter­face with “new­er posts” and “old­er posts” being the only but­tons. There’s an indi­ca­tor of what page you’re on, but no way to jump to the end or some­where in the mid­dle. If you want your users to be able to look at old con­tent, they either have to click “old­er posts” a bunch of times or go to the browser’s address bar and change page/74/ to page/79/ etc until they find what they’re look­ing for.

Worse, some themes offer an archive option with only one page. You can see the most recent post, or you can see all of the oth­er posts. That might not be a prob­lem if you only have three posts on your site. If you have three thou­sand, it’s not good.

I don’t hate infi­nite scrolling. But it can’t be the only means of nav­i­gat­ing a site, even a site as sim­ple as a blog.

Worse than infinite

The infi­nite scroll issue is trou­bling on the user side. It becomes a real prob­lem in Ghost’s admin inter­face. The list of posts can be sort­ed and fil­tered, but it can be sort­ed only by date and there is no option for pag­i­na­tion. As an author or edi­tor, the options for find­ing a piece of con­tent are painful­ly limited.

There are no admin­is­tra­tive func­tions avail­able in this list of posts. In order to delete sev­er­al posts or change sta­tus (publish/unpublish, or make pub­lic or pri­vate) Each post must be opened indi­vid­u­al­ly, changed, and saved. Then when the intre­pid edi­tor returns to the list of posts, it will be at the top of the list of posts where she may now have to scroll through hun­dreds of more posts to find the next post after the one just edited.

Reliance on infi­nite scroll with very lim­it­ed (and not use­ful) pag­i­na­tions options is a venial sin on the front end. In the admin­is­tra­tive inter­face it is a mor­tal one. Not every­one will be migrat­ing an exist­ing site with hun­dreds of posts, but this is a prob­lem that will face every site even­tu­al­ly unless they stop adding con­tent. Grant­ed, many sites do even­tu­al­ly fade out, but one’s site admin­is­tra­tion tools should­n’t be designed around an assump­tion that the site will fail.

The Ghost is not dead

Ghost is still a blogging/newsletter plat­form with a lot to rec­om­mend it. A site with­out ever­green con­tent where the newest con­tent is all that’s rel­e­vant would still be well-served by Ghost. A new site whose authors and admin­is­tra­tors are con­fi­dent that old con­tent will nev­er need be recat­e­go­rized or altered could like­wise be hap­py with Ghost for quite a while. It’s pos­si­ble that as Ghost sites mature, so too will the demand for more robust admin­is­tra­tive tools. Ghost’s devel­op­ers have done a great job of rolling out addi­tions (the notable excep­tions are ones like native com­ments where the devel­op­ers have been clear that they don’t want to add the feature).

For the time being, my project blog at stays a Ghost site. With few­er than a dozen posts (and admit­ted­ly almost as many drafts) I won’t have prob­lems with con­tent man­age­ment or pag­i­na­tion for a while. I can afford to wait and see there. I look for­ward to see­ing how Ghost con­tin­ues to grow. Con­tin­u­ing to work with it is the best way I know how to keep up to date. Ghost is still a young plat­form, has room to grow, and appar­ent­ly has the resources behind it to keep that growth com­ing. One ought to take it on as a plat­form only with some knowl­edge of what the short­com­ings are and with some con­sid­er­a­tion to the bal­ance of its strengths against those shortcomings.

Leave a Reply