Ian Bicking: the old part of his blog

Blog software

If I was to change blog software (because this software sucks -- I can say that, because I wrote it)... then what software should I change to? I was getting stressed about the change, but then I realized I deliberately put .html at the end of all my URLs just so I could dump everything to a static version, so I shouldn't be too worried. (And then I still need to fix up the redirects that I let break over the years and clean out spam and catch anything I've accidentally deleted and... oh bother)

Anyway, I'd like:

I don't actually care that much about the language of implementation. I have too damn many projects, which is why this software has been so neglected, and I don't want another project. Suggestions? Just jump on the WordPress bandwagon?

Whatever it is, I know I won't keep any of those stupid narrow column templates (no offense to all you people who have kept the stupid narrow column template ;). It looked kind of sophisticated a year or two ago; now it is just an annoying waste of space. And the way comments get strewn way down the page adds to the ghettoization of comments in many blogs. And none of that stupid whitespace in the line spacing either. The rise of RSS and aggregators has shown us that uniform presentation is a more pleasant reading experience, so I plan to let browser defaults control much of the look of my site.

If you are curious about why this software sucks... I blame it on my ill-advised attempt to avoid a database. Flat files suck. BDB sucks more. I used both here. But the .html extensions are awesome!

Created 07 Feb '06


I think home-grown blog software nicely illustrates the fact that public pressure and users actually and significantly improve the quality of a given software. (And I am not saying that you don't understand this, btw. I am sure you do.) There rarely is anything too demanding to implement in a blog software, but the sheer amount of features you need to implement is overwhelming. Implementing your own blog software starts with the usual "I can do this myself" and ends with "I am tired of implementing yet another must-have feature."

# Jarno Virtanen

About the anti-spam problem...

Have you looked at using SpamBayes for classifying spam (and ham)? Like this guy: http://mail.python.org/pipermail/python-list/2003-March/155527.html Apart from all the setting-it-up the only code you have to write is a tokenizer.

# Peter Bengtsson

Hi Ian,

While we're at it: I noticed several times that the availability of your blog also was very bad (to me it was something like 25% of my tries this site wasn't available). Was that also due to your "attempt to avoid database" or were there other reasons. You - as someone who is quite exposed on the Python web development front - shouldn't have such a bad availability (as this can also fuel the anti-python fud). If this is the fault of your hosting company you should obviously change to another one.

# Michael

It's mostly the software that's causing the problem. There's been a few times when the Subversion server (previously under the same Apache instance) caused some collatoral damage, but mostly the software itself. There's two scaling problems the software has: everything is kept in flat files, but the actual data model is fairly relational. And there's now quite a few posts and comments (about 8000, I guess), and some of the operations require scanning the contents of those files (not many, but a couple). To help that situation, I then foolishly thought I'd keep indexing information in a BDB database. That's fairly fast, but maintaining indexes in an ad hoc fashion is a horrible idea -- it's hard, and you accomplish nothing you couldn't do better with a more general system. And BDB does not operate well under load, especially with concurrent access. That ended up being the biggest problem, with the process just freezing up regularly (usually with no error, it simply stops responding and won't shut down properly).

Right now I don't think I use anything in this blog that I use regularly elsewhere.

# Ian Bicking

Although this may be heresy, i use the perl powered MovableType engine.

I like it because of the ease of setting up new blogs and new authors, in fact most of the admin stuff is very easy.

I dis-like it because i can't extend it, due to lack of interest in learning perl.

Perhaps not the flavour of the month like Wordpress, and not Open Source, but i've found it to be a capable commercial tool.

It can do static file output, or dyanmically served pages, via PHP. Internal storage comes with a variety of options. "Free for personal use" licence available. Good anti-spam tools. Open-ID plugin available. Threaded comments available via a hack (which is ugly).

Good luck with your choice!

# Jos Yule

Perl would be fine -- then I wouldn't even be tempted to modify it ;) -- but the proprietary part is a big turn-off.

Has anyone else noticed that there was all sorts of buzz about MT, and lots of blogs using it, until it changed its licensing? Now I almost never hear about it; zero buzz, and proportionally it seems like a fairly marginal piece of software. Well, really it's that the hosted options have become incredibly dominant; and even though MT was never open source, people in the open source community were suddenly reminded of that (and left in droves) when they changed their licensing, and those are the blogs I tend to read.

# Ian Bicking

While WordPress ist the most popular, Serendipity is widely acknowledged as the best.

I use it myself and can say, it has nearly every feature you want. Except the "reStructured Text or something". At least i haven't found anything yet. Writing Pythoncode in HTML is ugly, but i know nothing better.

So my advice is: http://www.s9y.org/

And not caring about the language of implementation is important, since it's PHP ;)

# beza1e1

One thing I realize now is that software that supports XMLRPC (or better Atom) posting can support whatever client-side rendering I want (but not editing, which is OK). So I could compose in reST, then have something that renders to to HTML and uploads it as a post. Which is good enough for me (though I also hope that at least something reasonable is available for commenters -- seeing how hard it is to talk about code in the Radio commenting environments shows how difficult that can make things).

# Ian Bicking

Hi Ian,

I wrote a little script to post comments to my wordpress blog from emacs (or whatever editor you might use), except that I used textile as a text formatter. I imagine there's a python module for rest, so you should be able to use it with it. Here's the URL: http://aida.homelinux.net:3050/scripts/file/wordpress/write-blog.py

# didier

If you were into any of the php solutions (wp, s9y, typo3, etc), maybe you could try GeSHI to produce a good looking python code.

# k4ml

Mmmm... good point, syntax highlighting would be an excellent feature.

# Ian Bicking

The features page on Serendipity doesn't mention it, but I notice on their blog that they have .html extensions and threaded comments. And a good number of interesting plugins, like GeSHI, and input plugins like Textile (which, while not my favorite, I'm sure I can adapt to). So far Serendipity is looking like the top runner.

# Ian Bicking

I have tried a number of the PHP based blog software products. WordPress wins hands down. Serendipity was runner up, but it just does not have the large community behind it making it better and better.

# Doug

What about trying to get a blog on artima.com (you would be in good company there - and they have threaded comments)?

# Mike

I want to keep my own domain, and generally have control of the URL space, which is a prerequesite for having practical control of the content. Of the hosted services, only Blogger actually offers this (with static file uploading). But I'd like something a bit nicer than Blogger.

# Ian Bicking

I bet you'll not stay very long with a not paste blog software ! No, i can believe-it...

# wilk

I'd either go with WP -- well-established, open source, and requiring little or no hacking -- or plunge in and write a Paste-deployable blogging app yourself. I have a feeling that there's some demand for solid, extensible Python blogware right now. You might not care about that itself, but it would also inevitably drive interest in (and understanding of) Paste itself.

I'm in the camp that thinks writing one's own is a useful exercise. I plan on converting my own PHP5/SQLite system to Django "soon."

You could always try Typo!

# Paul

Oh, and for markup, what about Markdown? I've written a couple hundred posts in it now and I just keep liking it more. Clean syntax, just enough power (for me), and few warts.

# Paul

It was a useful exersize; I learned a lot from this software. Now I'm finished learning and just want to blog ;) I'm guessing that WP will require less administration than Typo, but I wouldn't be opposed to Typo on principle or anything. I notice there was a threaded comments patch that was not applied: http://www.typosphere.org/trac/ticket/135 -- that disappoints me. Maybe because I talk about fairly technical things, I've never felt bothered when there's been discussion in the comments. Discouraging discussion by making it hard to follow hardly seems like a constructive practice.

# Ian Bicking

Hmmm.... well Firedrop2 is a nice clientside blog manager. It supports ReST markup and generates static html. You'd have to hack it to produce the type of URLs you want, but that should be easy.

Being static it doesn't have a built in comment solution. You could add that with a server side web-app. I've considered doing it myself. That means not necessarily having comments on the same page as the entry though (except through includes or javascript perhaps). This may kill the idea for you. :-s


# anonymous

Static publishing of dynamic content (e.g., publishing SSI or PHP files) could make inlining of comments from another system fairly easy. My only worry would be that the result would have all the complexities of both a fully dynamic and fully static system. I think the general architecture -- splitting posting from commenting, among other possible splits (e.g., splitting feeds into one product and tags into another) -- has real merit. I just don't want to experiment at the moment ;)

But that's all the more reason to have an escape plan for this next blog software as well.

# Ian Bicking

What do you think about static publishing of an entry that uses AJAX to grab dynamic comments? Sure, it's two calls back to the server, instead of one, but at least one of those calls (and perhaps both, if the software was written cleverly) could be served directly from apache, no Python needed...

Just a thought.

# Blake Winton

You can leverage the blog app from the djangoproject.com site and get your own blog running in about 5 lines of python. I know you don't want another project, and this wouldn't be completely prepackaged with everything you want, but it's really fun and easy to get up and running, and simple to customize (for those things like threaded comments, spam protection, and pleasant input that a given prepackaged solution won't have all of).

# Bryan

unfortunately, the code that powers thraxil.org isn't really in a releasable state at the moment. there's too much hard-coded in right now and it relies on a few additional "micro-apps" beyond Tasty that haven't been released yet. unfortunate because it covers pretty much all your stated requirements.

it also went through a phase where it stored everything in text files on the filesystem with BDB indices and published statically (making very clever use of apache SSIs) so i know what you're talking about with the issues there. eventually i broke down and rewrote it with SQLObject (against PostgreSQL) and cherrypy serving pages dynamically (but using memcached on a few bottlenecks). currently, i'm porting it to TurboGears and trying to turn it into something that other people might be able to install and use on their servers in the process. don't hold your breath though. i've still got a few issues that i'm not sure how i'm going to solve.

# anders

I have a blog with lots of code examples (python, html, css). WordPress + Markdown work for me very good (I actually use an enhanced markdown variant Markdown Extra). It's convinient for both little inline code snippets and for code blocks.

# Maniac

What about squishdot (a ZOPE product)? http://www.squishdot.org/ It runs http://dot.kde.org/

# Mike

If you just want other options, I have a half-finished one called Pliante with about a third of your requirements. It's largely inspired by James Tauber's Leonardo but was a complete rewrite to use my own wiki engine as a complete learning process. And I have a similar quandary - whether to finish it or scrap it.

# Michael Urman

You should come to Livejournal, stop worrying about writing/maintaining blog software and get busy with your usual hacking.

# Sridhar Ratna

I use PyBloxsom with the PyMarkdown plugin and I've been very happy. When I had to convert all of my posts out of MT into something else, PyMarkdown was very helpful with formatting, etc. I picked PyBloxsom over Wordpress and others because I realized that I really hated writing posts in a textarea form. I preferred to use my usual editor, and with Markdown, I can do simple formatting without any problem. (I would think this would be a huge plus when trying to post code, which Markdown handles very well.) I use PyBloxsom's static generation feature, so when I'm done editing, I just "build" the site and RSS, indices, etc. are all updated. (And if you do decide to make any changes, the code is compact and in python. And no database!)

If you really want threaded comments, or comments at all, I think it's better to outsource them to a company. Spam filtering is a huge pain, and gets worse the longer you have site. Let someone else handle it.

I've tried Textile, still use MoveableType for GB, and WordPress. They all drove me nuts. Using emacs and a couple of simple shell scripts didn't, and that's the best way forward I think.

# brian