Writing a New CMS

February 28, 2007

We’ve been together a long time, WordPress, but it’s time to say goodbye. It’s not you; it’s me.

Tonight, I’ve taken the first steps towards ditching WordPress and rolling my own custom CMS. I’ve wanted to do this for a long time, and I’ve always dismissed it on the grounds that it’s too much work and time, and that there’s already a ton of blogging software out there. But the truth is, I don’t want a blog, or at least I don’t want my site to look like a blog and be organized like a blog. Basically, I want to use my website to publish a few different kinds of things:

  • basic information about who I am and what I do.
  • links to all the cool sites I find, with commentary on why they I think they’re interesting.
  • digital pictures
  • code snippets that I’ve written and collected.
  • longer article-length posts on different subjects that interest me.

Each of these types of content needs to be presented in a different manner, so simply creating new categories in WordPress isn’t the answer. Installing n separate applications to cover all these bases might work, but then I’ll be stuck with n different sets of user accounts, n different admin interfaces, and n different sets of HTML templates. I’ve done that before, and I don’t want to do it ever again. I’ve also tried hacking WordPress and Movable Type to accommodate these different roles, and it sucked, and I don’t want to do that ever again, either.

Besides, I’m a programmer and I want to program stuff.

I’ve decided that, for this project, I’ll use the Python language and the Django web framework. I thought about using this opportunity to work with Rails again, but I’ve already got a project in mind for that. I’ve loved Python since my college days, and Django is an awesome framework for rolling your own CMS.