Probably need to switch blog software (CoreBlog1 causing too much annoyance to hosts...)

Tim reminded me today that CoreBlog1 (i.e. this blog) is becoming a bit of a pain for the admins. Mostly because of the huge volumes of comment spam blowing out the zodb file-size. So, it seems that I'll have to find a new bit of blogging software.

What I need:
* ability to import MoveableType (CoreBlog) exports
* ability to customise presentation reasonably easy (i.e. have to be able to strip "Plone" stuff so that the blog just looks like a blog)
* written in Python (so I can maintain/customise it easily)
* through-the-web editing/posting if at all possible
* feed provision, preferably per-category, so people can subscribe to a subset of the topics if they wish

Anyway, not an immediate need, but need to think about migrating some time soon-ish-ly.


  1. Bill Mill

    Bill Mill on 03/05/2007 6:07 p.m. #

    The blogging software I wrote for myself is 3-for-5 on your requirements.<br />
    <br />
    * Templates can be developed in any language supported by Buffet ( I use Cheetah, and it's extremely easy to customize.<br />
    <br />
    * It's in python.<br />
    <br />
    * Feeds are per-label. For example, is the url that planet python is subscribed to.<br />
    <br />
    * There is currently no through-the-web editing, but every entry is stored as a plain-ol-txt file, so writing one would be drop dead simple. The plugin architecture would make this very easy.<br />
    <br />
    * As for CoreBlog exports, well, blog entries are stored as text HTML files, so you should be able to export without too much trouble no matter what the export file looks like. You'd probably get to write some fun text processing code for it.<br />
    <br />
    I've written a comments module, too, btw, though it's not currently enabled on my site.<br />
    <br />
    It's basically a rewrite of pyblosxom in cherrypy - check it out at if you're interested. Nobody uses it but me, but I've already got a Trac and svn set up and ready to rock. <br />
    <br />
    Plugins, comments, keywords, and Rss are already built and working; my site hasn't gone down once since I deployed this software 6 months ago or so.

  2. Blake Winton

    Blake Winton on 03/06/2007 11:49 a.m. #

    I was going to suggest PyBlosxom, but the CherryPy rewrite of it sounds pretty cool...<br />
    <br />
    Bill, do you support PyBlosxom plugins? If so, the XMLRPC stuff could concievably be hacked up to support TTW editing...<br />

  3. Mike Fletcher

    Mike Fletcher on 03/06/2007 12:30 p.m. #

    Realised I have another couple of constraints:<br />
    <br />
    * Has to be able to run on Vex (given that I have a pretty good line to the support department :) )<br />
    * Has to be able to support /item# for the old posts (so that links to the old posts don't get lost in the shuffle).<br />
    <br />
    I'll take a look at Bill's stuff when I get back to this item on my todo list and have some time to play.

  4. Bill Mill

    Bill Mill on 03/06/2007 4:30 p.m. #

    Blake: I don't support PyBlosxom plugins - I wanted to leave room for improvment, not just copying.<br />
    <br />
    That said, my callbacks and plug-in structure are nearly identical (I was a pyblosxom hacker right before I wrote this), and porting it seems like it would be simple. Famous last words, I know.<br />
    <br />
    Mike: Couldn't tell you if it'll run there. The only possible problem is that it requires cherrypy 2.2 right now, so if they've already upgraded to cherrypy 3, then you'll need to run an older version locally.<br />
    <br />
    Supporting /item# would require writing a plugin, but would be pretty simple.

  5. Bill Mill

    Bill Mill on 03/07/2007 2:14 p.m. #

    To demonstrate the simplicity of the plugin system, I knocked up a plugin to serve your files by their ids:<br />
    <br />
    1) when you transform the entries into text files, add this as the second line of the file (a line prefixed with # immediately after the title is a metadata line):<br />
    <br />
    #old-id 1789<br />
    <br />
    2) This is the entire plugin, stored in a file named plugins/<br />
    <br />
    import cherrypy as cpy<br />
    import FileCabinet<br />
    <br />
    class OldIdCompatible:<br />
    ..def __init__(self, parent): pass<br />
    <br />
    ..def cb_default(self, args):<br />
    ....if args[0].isdigit():<br />
    ......return [e for e in FileCabinet.get_entries_by_meta("old-id")<br />
    ........if e.metadata["old-id"] == args[0]]<br />

  6. Bill Mill

    Bill Mill on 05/27/2007 1:03 a.m. #

    So, it's now upgraded to cherrypy 3, and supports through the web editing (<a href="">link</a>).<br />
    <br />
    Check out how <a href="">easy it was</a> for me to write a syntax highlighter plugin this morning.

Comments are closed.


Pingbacks are closed.