22-Jan-2014
I don't like blogs (Introducing Urubu)
In my previous post I announced my own static website generator project. In the mean time, it has been released. Welcome to Urubu!
To be honest, this is not something I was planning to do. My preference would be to simply use some great open source tool. However, I didn't find a tool that suits my requirements.
Readers may wonder whether I did my homework properly. Indeed, there is a large choice of static website generators. How is it possible that none of them was adequate? I can summarize the problem in one sentence: I don't like blogs.
That's a strange statement within a blog post, so let me explain. In a blog, content is ordered in reverse chronological order. The most recent content gets the prominent spot. As content ages, it becomes less important, until it eventually gets "archived".
That is not the way I generally think about content. For the most significant content that I want to write, I hope that the date when I write it is of minor importance. When it comes to essays, feature proposals, tutorials and manuals, what counts is the logical organization of the content. Of course, an embedded blog can still be useful in a secondary role - as a way to draw attention to more important and in-depth content.
I checked out several tools, including market leaders Pelican and Jekyll. To my surprise, I found that they are all blog-oriented. This may not be immediately clear however. In the introduction, these tools typically claim to be a general way to generate static websites. However, the next section explains in which directory your posts should go :-) Then follows the explanation of post naming conventions, categories, tags, permalinks and so on.
Urubu has a different approach to content organization. The project directory structure matches the website exactly. That makes it easy to create the overall navigation structure, and makes it possible to resolve links between pages like in wikis. Good navigation practices are encouraged by making it easy to set up components like a navbar, a sidebar with the table of contents, breadcrumbs and pagers. Content organization is specified per directory. You have full flexiblity to specify the ordering key and direction, or to list the pages explicitly.
Although Urubu is a "new" tool, its design philosophy is radical reuse of great software and ideas. Technically, it is a thin layer above libraries such as Markdown for authoring and Jinja2 for templating. And the method to use YAML front matter for per-page configuration is borrowed from Jekyll.
I open-sourced Urubu for two reasons. The first is the classical one: if it is useful to others, that may benefit me in the longer term. However, the main reason is that I need it for collaborative projects, such as the MyHDL website (migration ongoing) and the MyHDL development website. I have to provide reasonable software and good documentation to attract collaborators.
As you see, I developed Urubu to manage my own projects: a few personal websites and the MyHDL websites. (And also the Urubu website in the mean time.) They will remain the main driver for future development. I will not strive for "completeness", but I will add features as I need them.
With the migration from the old websites completed or ongoing, I can only say: it works like a charm!