Title photo
frugal technology, simple living and guerrilla large-appliance repair
Wed, 02 Mar 2011

FlatPress and other flat-file blogging systems

I’ve been experimenting with other flat-file blogging systems, including Blosxom and Ode.

Both Blosxom and Ode are based on Perl scripts, while FlatPress is written in PHP.

Blosxom is pretty much dead, though there are many offshoots, including the Python clone PyBlosxom, the above-mentioned Ode and more, the list of which you can see at Blosxom’s Wikipedia page.

Ode has in its favor an excellent default design/theme, its mission of teaching the user Perl (since it was developed with the now-classic “Learning Perl” O’Reilly book in mind and includes two extensively annotated extra versions of the main Perl script), good documentation and an enthusiastic and inclusive lead developer in Rob Reed (Ode has its own Twitter feed as well).


While Rob seems to be toying with the idea of offering a static-rendering mode for Ode, which now uses CGI to dynamically render the blog, he’s not a big believer in it, if my reading of his posts in the Ode forum is correct.

Bloxsom, though pretty much a dead project with no activity since 2008, does offer a static-rendering mode for those who want it.

I guess my desire/preference for having the option of static rendering comes from my experience with Movable Type, probably the prototypical Perl-based blogging system, one which in the beginning exclusively offered static rendering and only recently added a dynamic-rendering option.

I tend a Movable Type installation with hundreds of blogs in it (also why I prefer native and easy multiblog capability; and no, I couldn’t get WordPress 3.x’s multiblog capability working on my hosted space, though I did try) and I like static rendering both from a security standpoint of serving relatively straight HTML (with the exception of comments, which can be turned off or farmed out to something like Disqus) as well as the high availability of content with almost no server-side scripting.

Maybe I’m just bringing my bias to the table. I’m not sure. But I like Ode. It doesn’t yet have “native” commenting, which I believe you can get via modules in Bloxsom and PyBlosxom. Right now the solution for Ode appears to be Disqus.

While Bloxsom appears to be dead, the PyBlosxom offshoot — coded in Python instead of Perl — is alive, if not extremely active at present.

It does have commenting ability, a static-rendering option and quite a few modules/plugins.

Blosxom and its offshoots all appear to allow for multiple blogs without much fuss due to the directory/folder-based data structure. One thing I’d really like is the ability to divide my content into a large number of individual blogs, each with their own style and/or sidebar content. And I want it to be simple and intuitive.

All of that said, FlatPress is surprisingly feature-full and offers the most WordPress-like experience. It’s a tremendous achievement.

The questions for me are:

  1. What do I want to spend my time learning — Perl, Python, PHP or other?
  2. How much does static rendering mean to me, and do I even want to use it?
  3. If I stick with dynamic rendering in Ode, can I have a URL without /cgi-bin/ on my hosted space, and does this matter if I want to host this either on my own server or a VPS?
  4. How portable are my entries? (And with Blosxom and Ode, perhaps also PyBlosxom they are very portable.) This is very important to me. Which of these projects is most viable going forward (i.e. with active development)?
  5. Which project do I believe in the most?

Most of those questions are difficult ones to answer. Right now I’m having a lot of fun experimenting with these various projects. The whole idea that there are more than one, two or 100 ways to deliver blog and other web content is extremely exciting to my geeky self.

What I do know is that open-source software is a great thing. And the notion of people starting or joining projects such as these to help others (as well as themselves) while gaining hacking skills is even greater.

Comments from the FlatPress version of this post

Rob Reed Friday, March 4, 2011 - 21:09:26

Nice little write up. I always like to see this stuff being talked about. I wanted to address a couple of questions about Ode related to static mode operation, and native commenting. Rather than write a ridiculously long comment, as I sometimes do, I wrote a post on Ode’s blog about this http://news.ode-is-simple.com/weblog/about_ode/dialog/srosenberg_flatpress_and_other.

By the way, does this site support trackback?

steven Saturday, March 5, 2011 - 01:12:07

Right now there is no trackback function in FlatPress: http://flatpress.org/vanilla2/discussion/comment/3276

Debianero Wednesday, May 4, 2011 - 18:28:20

Very interesting article.

I’m in the process to choose a flat-file blogging system too.

Now I’m playing with Jekyll (http://jekyllrb.com/) but I think I’m going to try Flatpress as well.

Provailen Thursday, July 14, 2011 - 14:57:57

Flat press seems interesting. I’ve never really gotten the time to learn Perl but this should be interesting

Space Toast Tuesday, August 16, 2011 - 22:11:14

Hi Steven. It looks like you went with FlatPress. I seem to be running one of the last installations of Blosxom on my blog, and may be able to offer some (late) thoughts:

  1. Python and PHP are still current trending languages. For web development, I find PHP’s “a file that does something” approach far saner.

  2. I initially used static rendering to reduce server workload. What I discovered was that A) A simple CMS doesn’t produce much overhead , B) Certain plugins never play well with static rendering, C) Any inadvertant delay between uploading and seeing new content can be annoying.

  3. Use the .htaccess rewrite module in Apache server. Clean URLs matter.

  4. Very good question. From an archival standpoint, flat text files are about as future proof as you can get.

  5. None. I’ll explain below.

  6. Um… yes?

The reason a flat file blogging system appeals to me (a designer, not a programmer) is that running a database (mySQL) on top of a database (the filesystem) is inelegant. The problem with my reasoning is that the filesystems that run most hosted web servers are equally inelegant — antiquated fossils with no concept of metadata. Star-nix systems don’t even distinguish between created and modified dates. This makes it impossible to update an entry in Blosxom without it jumping to the first page — kludgy dead plugins aside. For the types of slicing, dicing and sorting that we need a CMS for, the lack of metadata quickly becomes a steep limitation. The only option is to build workarounds — databases on top of databases — that render the flat file CMS ultimately pointless.