Static site generators have taken off in a big way over the last couple of years. They’ve moved from the realm of the uber-developer to the almost mainstream, and — even for a SSG geek like me — it’s become difficult to keep track of all the new SSGs arriving on GitHub; there are thousands of them. Most SSGs tackle a basic problem in more or less the same way, albeit with tweaks to the process, a different functional emphasis, or a different programming language. Most aren’t worth a blog article, but Lektor, a new Python static site generator from Armin Ronacher — creator of the Flask web framework and many other things — solves one of the big problems with static site generators: they’re almost unusable for the average writer or editor.
I’m a writer by trade, not a developer, although I know which end is up on a code editor. Many writers, editors, and business owners aren’t technically inclined, and that’s fine — everyone doesn’t needs to be a developer. People who work in the content creation field pay developers to do that work for them. They want a site where it’s easy to enter content and hit publish.
Usually that means WordPress site, but as well all know, WordPress can be prone to security issues, especially in the hands of non-technical users. And, WordPress is often overkill for content sites; a static site would be the perfect option. But — even after templates have been created and the site deployed — if you give the average business owner or writer a Jekyll-based site to manage, they’ll balk at the idea.
Because the content guys don’t want the complexity of an SSG, developers can’t create static sites for them, and we end up with SSGs as a niche tool for devs. That’s a shame because a huge proportion of the web that currently runs on dynamic content management systems is better suited to a static site — as the developer of Lektor puts it, most sites are read much more often than they are written.
Lektor is a static site generator designed with the explicit acknowledgement that SSGs need to be made suitable for both developers and ordinary users. That means it has all the content modeling and templating bells and whistles that developers demand, and it has a “WordPress-like” administration interface that can be used by almost anyone.
At the moment, that interface takes the form of an elegant Mac app that can be used by editors and writers to create and publish content. Lektor will take care of publishing to a remote server, so from the perspective of the user, the experience of using Lektor is not that much different to using WordPress. At the moment, the publishing options are fairly limited — FTP, Rsync, and GitHub Pages, but because Lektor is designed to be easy to extend, new publishers are being developed.
In this article, I’ve focused on just one of the problems solved by Lektor, but it has a few other great features up its sleeve too, including a content model that blows most SSGs out of the water. I’ll be delving deeper into that in a future article.