One of the reasons that the Slashdot effect (which perhaps we should now call the “Hacker News effect”) is such a problem is that WordPress and many other blogging engines dynamically generate content. Caching plugins can help this, but there’s nothing quite as fast, or as secure, as serving a site in plain static HTML. This used to be the norm, even for blogs. Radio UserLand, the first dedicated blogging engine, was a desktop application that generated static html output and uploaded it to a server. Until 2010, Blogger had the ability to generate HTML and publish it to a remote site. And some of the earliest self-hostable blog engines like Blosxom and MovableType had static HTML output (see below).
Now there’s a growing trend among developers who blog to use static HTML generators. Most provide no Web based interface – users write a post in their favorite text editor and the engine takes a text file and reformats it using predefined templates. Many coders write their own generators, but there are dozens, probably hundreds, of open source site generators available. The most popular use the Markdown markup language and support special formatting for presenting code samples.
Git is a popular way to manage a static HTML site, but using Dropbox is a viable alternative as well. These instructions for setting up Dropbox with Pelican should be useful for using Dropbox with other blogging engines as well.
A Word of Warning
One criticism of static generators is that they encourage the use of proprietary systems such as Disqus. However, there are some plugins out there that enable the use of local comments and those willing to do some hacking can add their own commenting systems. But those wanting a pure open source, self-hostable system should consider what they need.
Another potential problem, as described by Alex Knight, is switching from a static system to a more complex system. There are ways of migrating a Blosxom blog to WordPress or MovableType, but I’m not sure how difficult it would be to migrate a pile of Markdown files to another blogging engine. On the other hand, this format makes it trivial to move between static engines.
Migrating from Another Blog Engine
There are a number of ways to get your existing blog out of its existing CMS and into a pile of static Markdown-formatted files. Jekyll has a number of built in importers, and once you have your files in Markdown you can use them with almost any other blogging engine listed here (you’ll just need a plugin to use them with Blosxom). You can also use exitwp, a stand alone tool for converting WordPress sites into Markdown.
Jekyll is a Ruby based “blog aware” static content manager and is one of the most popular and well-known applications in this category. It was originally created by Github co-founder Tom Preston-Werner and is used for Github Pages. It features tight integration with Github. Those wanting a local commenting system, instead of Disqus, can check out the static comments plugin.
OctoPress is based on Jekyll and makes it easier to get started by adding default templates and various other tweaks.
Pelican is a Python based static HTML blogging engine that’s gathered a lot of steam. It supports both reStructuredText and Markdown, and has most of the features you’d expect: syntax highlighting, Disqus support, etc.
Calepin is a hosted service based on Pelican that uses Dropbox as its uploading system.
Blosxom is the original open source static site generator. It was created in 2002 by Rael Dornfest, who went on to work for Twitter and is now part of The Obvious Corporation. It was written in Perl, which means you can run it almost anywhere with very little configuration. There’s also an extensive plugin registry that adds features such as comments, pingbacks and even a graphical Web-based interface. One downside is that Blosxam hasn’t had a stable release since 2008, but the project is quite mature. If you want to use Markdown, you’ll need John Gruber’s plugin.
4. Second Crack
Second Crack is a PHP based static blog engine developed by Instapaper creator Marco Arment. Arment designed it specifically to be used with Dropbox and actively develops it. Like most of the engines mentions, it works with Markdown.
For those looking for a more cutting edge stack, Blacksmith is a static blogging written in Node.js. As I mentioned in my round-up of Node.js blog engines and content management systems, Blogsmith was created by the Nodejitsu team and runs the company’s blog.
If you need a more advanced content management system, but want to use static HTML, you have a couple of options. The venerable MovableType still allows users to generate static HTML, and it’s been open source since 2007. And if you just can’t let go of WordPress, the plugin ReallySatic makes it possible to generate static HTML from WP.
If you want even more static site engines you can check out Timo Reitnauer’s list of 32 generators.