Do you know Dr. Jekyll?
Nowadays it feels like everyone is using WordPress to host blogs and websites. There is nothing wrong with that of course, WordPress is a very powerful blogging platform, and even a quite good and easy to use CMS.
There are however a few situations where WordPress or any other of the classical blogging platforms or CMS might be a bit overkill. Most of them use quite a bit of memory, and run on PHP/MySQL which uses quite a bit of resources. There are caching plugins that help a lot, but their effectiveness is limited by having to be compatible with all the features that the platform usually provide. There are also quite a lot of security problems popping up in the most common platforms, so it might actually require quite a bit of work keeping things updated and secure.
There is an alternative to this that has been gathering a lot of popularity lately, one that is quite radically different in it’s philosophy. This alternative is static page generators. There are many alternatives to choose from if you’re planning to use one. A quite extensive list can be found on www.staticgen.com.
But for this post, we will focus on Jekyll. Partly because it’s one of the more popular ones, but mostly because it’s the one I have the most experience with.
What is Jekyll?
I should perhaps explain a bit what a static page generator is, and how it works. In essence, it’s a mix between the old-school html generators like Frontpage and Dreamweaver and a modern web based CMS. I’m going to explain this from the point of view of Jekyll, others might work in a slightly different way.
The software can be locally installed on your computer. You maintain the theme template files and the content of the site in a folder structure on your machine. Jekyll doesn’t use a database, it generates everything from text files. This might sound difficult to some people, and it certainly is a bit more technical that using a web based CMS, but it doesn’t need to be that hard. There is a lot of automation that can be put in place to make the whole process easier.
The content is in separate files from the visual templates. And although it is possible to write them in HTML, most of the time a more readable format like MarkDown is preferred.
The software then generates the entire site in a folder that can be moved to the server. The generated pages are static HTML pages, so the server doesn’t need PHP or any database connections, a simple webserver is enough. This does of course have a few limitations, but for most things there are quite simple ways around it. The most common of these are blog comments, and real-time feeds. You would have to use external services like Disqus or Facebook comments. But in most cases, unless you have a reason to host these yourself, these systems are probably better for the end user.
You can of course write your own backend that can be on the same server, or a different one if you wish. It is still probably less resource intensive that running a full CMS.
Is it for me?
Jekyll is definitely not a tool for everyone. It is quite technical, and probably not a good fit for someone that wants a no hassle system. You also need to have a few basic tools on your machine in order to use it that might not be trivial to install. It also has no WYSIWYG mode, although you could use a Markdown or HTML editor with that capability.
Unlike WordPress and others, you can’t edit the site or write posts via the web-browser. At least not without a lot of extra components and tweaking. So if you really need that capability, then Jekyll is probably not the tool for you.
We at JCO Digital are of course happy to make sites in both Jekyll and WordPress, as well as other solutions. We can recommend a certain technology based on the customer’s needs and wishes. A site where the customer wants to update posts themselves is probably much better to do in WordPress.
If you are anything like me, the large majority of sites that you manage are probably not updated that often, and certainly not from public computers. And the difference in speed and resource usage is huge. And because there is no server-side processing, you can run Jekyll sites on places like Amazon S3, where you get almost unlimited scaling, but can still keep costs very low.
How do I use it?
So, you want to try Jekyll? Installing it is potentially very easy. It depends on Ruby, and how to install that is beyond the scope of this post. But once you have Ruby installed and working, you simply do the following:
gem install jekyll
jekyll new myblog
You can then browse to http://localhost:4000 to see your new site. Depending on what you have installed, there might be a few other Ruby gems that Jekyll needs to run. But it should tell you what they are, so you can simply install them with gem install [gem].
The “serve” argument keeps Jekyll running and watches for changes in the files. It also starts a simple web server so you can browse the site. If you just want to generate the site as it is, you can run “jekyll build”.
I’m not going into more detail about how to run it, but you can find out more here: jekyllrb.com. The documentation is very good.
I have been using Jekyll on my personal blog, as well as building some projects on it, and I like it a lot. The purpose of this post is by no means to convince people to switch to Jekyll, but to teach you about an alternative. If you are happy with your current system, by all means, stick with it.
In my opinion Jekyll is one answer to a growing problem when running websites and blogs. I searched for this kind of solution for a long time. I had problems with security, speed and resource management. If you are experiencing the same problems, this might be the solution for you. But most of all, building a site on Jekyll is a lot of fun, in my opinion much more so than WordPress, Joomla, Drupal or other such systems.