About ergo-cms

Ergo was written, mainly to scratch an itch. I had been waiting for several years for Jekyll, Hyde, Ghost, etc, etc to make some realisations:

  • Not everybody likes markdown, and it generates pretty boring content!
  • Where is a nice gui to do stuff?
  • I can’t sail around the ocean without taking a fat development environment to write my pages. I need an app.

This project originally started as a C++ static website generator before node.js was even born. It used markdown… Then node.js came along and I found Textile and then ported my generator to node.js as quickly as my fingers could type. I think it took a few hours. At one point I gave some notion to refactoring a lot of the code and got 99% of the way, but realised it was all spectacularly ill-designed. It wasn’t production ready, and my websites have limped along since then. That code exists still, but is horrible and clunky and not extensible.1

Seeing the rise and rise of various static generators, I was dismayed to see them not satisfy the above-mentioned points.

So, this project is the 4th generation of something that has never otherwise seen the light of day.

What ergo-cms is

  • A very lightweight cms. I was shocked to discover than an install of Ghost currently clocks in at around 185MB! Ergo doesn’t use anyone else’s fancy modules, unless it’s vital. By comparison WordPress is lightweight!
  • Very extensible. The templating engine is a modified mustache. If you know mustache, you’ll be at home with this. If you like you can use mustache, or less, etc.
  • Database-less. It uses flat files. It natively supports Markdown (for those who haven’t seen the light), and Textile (for those that have). Being very extensible, it can support a whatever you can dream up.
  • Great at creating static websites.
  • Great at publishing minimal changes to your webserver (using rsync, or git)
  • Supportive of things Javascript. There will be plugins for heaps of native javascript solutions: less, jsuglify, etc.

What ergo-cms isn’t

  • A Jekyll, WordPress, or <insert your cms name here> replacement. Each platform has it’s own idiosyncrasies, due to it’s own feature set. As such, there may be features in those other platforms that don’t match well here.
  • A web server. Although there’s the ability to view your files in a locally hosted server (http:localhost:8181), it’s nothing more than a simple file server & it’s not production hardened. Since ergo-cms is a flat file generator, there’s no reason for such a thing.
  • Supportive of ruby-esque things2. There’s a huge swell of support for things ruby, including it’s many offshoots, such as YAML or SCSS, even Mustache. To me though, it’s is one of the most crazy things I’ve ever seen emerge. If it requires you to tell me how good it is, and then get frustrated when I remain unconvinced, then it’s a sure sign, you’re suffering fan-boi-isms. I’ve seen lots of it.
    • The proof of such is that ergo cms uses feature laden usematch, rather than boring old mustache. It was written to support the needs of ergo CMS, because mustache fell flat.
  • Supportive of <flavour of the month markups>, or <too lazy to write a brace? use X>, like coffee script, HJSON, YAML, etc. It seems that people who love coffee script love ruby and have an aversion to commas and curly braces. If you want to write a plugin for <insert your markup language here>, by all means, it’ll work nicely – but I won’t write it. I’m not a fan of fan-boi-itis. By supporting markdown, I believe I’ve supported enough of all of that kind of craziness, & won’t go a step further… unless it’s LaTeX — I’ve heard good things with it. So, I might write a LateX plugin.

What ergo-cms will (eventually) do

  1. Have two admin interfaces: one running on php that uses ergo-cli (ie, with node installed on the server), and another that uses express (or something) so that you can just serve it – as is. As you can expect, they’ll be simple things.
  2. Have an offline editor for both desktop and mobile. This will be a ‘distraction free’ app, with very minimal toys. It will probably run with Electron and be beautiful to behold (because sometimes you need to be inspired when writing, I’ve found). A mobile app will use Cordova and/or a touch of Ionic — probably — maybe.
    • They’ll require some comms extensions (DAV/SFTP/rsync/convoluted git hook/custom) to be figured out first.
  3. Have a slew of plugins that can be downloaded and configured easily. I was thinking something a bit ‘npm-ish’, like: ergo install plugin-name. The actual mechanics of this will be ironed out later.
  4. Have a Theme repository. n00bs love this stuff. Designers avoid them, except to sell them, of course ;). At the moment, I’ll ship a few skeleton projects that should solve the 99% of websites. Hopefully.

So, there you have it. Ergo is yet another flat file cms static website generator, but is easy to use and has plans to have a proper admin interface and offline/mobile editor.


1 I actually wrote it on a Galaxy Tab 2 7″ while backpacking through Spain, on a rooted Android with a debian/xfce platform & jacked in with a mini keyboard attachment. Fun times.

2 The continued use of ruby dismays me greatly. Ruby and I don’t get along. We never have. I tried several times. Having started with assembler (motorla/intel), I don’t see the need for such a language. If you love it, great. I don’t, and I never will. Assembler doesn’t need hours of frustration to get started, nor does Pascal, Javascript, C++ (ok, there are bits of frustration), Basic nor C# (and a whole slew of other languages). Ruby, in my experience, is full of frustration and pointlessness. Node.js on the other hand seems to be the breath of fresh air that Ruby failed to deliver. (Now, where are those punch cards, I had laying around…?) Despite all my bashing of ruby, there’s one thing that sprang out of it: Textile. <3.