About static sites
I'm a fan of static sites, because it has so many advantages over a CMS serving dynamic pages:
- performance is optimal by design
- HTML sites can be hosted anywhere
- no security issues
- does not require software updates
Static site generators from a web designers/developer perspective
- very simple template API
- more easily hackable and lighter than the average CMS
And the best of all: it relies more on standard HTML/CSS/JS for themes and widgets, so the learning curve is a lot better since one has to master only the templating language in addition to the basics.
Static site generators from a blogger point of view
The problem with static site generators is the lack of an editor. There are attempts to create one, with Cloud Cannon or Prose or Netlify CMS, but the fact that site generators are so hackable makes it difficult for a CMS to support all, and the user experience as a writter is still poor.
I don't mind hacking and using and using the command line, but once the installation process passed, while I am in the process of writting I like to be able to add images, pages and posts painlessly.
Note that there is this other approach of static site we have at Silex Labs organisation: Silex website builder is a website generator for designers. It is between power point and dreamweaver, a bit like wix too since it is online. And it is free software. It is great to design websites and landing pages but when it comes to managing content, it is not a CMS at all.
Best of both worlds: generate a static site out of a CMS's content
The drawback of this is that you need to install the CMS locally or have another host for the CMS, the setup is a bit tricky. But this is what I choose to do.
My choice if a CMS: Ghost
Of all the CMSs I have tried, and for my simple needs, the best in writer experience is the very young project Ghost. So I have followed the instructions to install Ghost on a local computer and I have installed Buster, the "brute force static site generator for Ghost". This took me an hour to figure out everything and get it running.
Setting up Ghost as a static site generator
Then I took some time to automate the process of publishing and made the script available here.
So now when I need to edit my blog on a new computer I do this:
$ git clone email@example.com:lexoyo/static-ghost.git
$ cd static-ghost
$ pip install buster #
$ npm install
$ npm start
Then the fun part on `http://localhost:2368/ghost`: setup the CMS and edit the content.
The content and the database will be pushed to github and be public eventually. And since the admin will never be accessible online, you shoud not choose a "real" password nor email, use something like this:
> fake password
And finally publish the changes
$ npm run stop #
$ git add -A
$ git commit -am "your commit message"
$ git push origin gh-pages
And this is it :)