Going by what I read, there’s lots of technical interest in writing Django blogging applications. Django-users regularly gets questions about it, and it’s easy to come across a related blog post. For example, Patrick Altman wrote I want to Move my Blog to Django, and James wrote Where is Django’s blog application?
This puzzles me, because a Django blogging application is a dead end.
It’s good because…
It’s a good first application for a Django newbie. The UX model and forms are simple, and you can copy layout tricks from existing blogs. The database schema is easy to make from scratch, or you can copy an example from the web if you’re expedient.
Even if you start with copied code, you’ll learn many concepts. You’ll hit table relationships, URLs, ORM lookups, bound and unbound forms, errors, generic views, flatpages, CSS, and more. You can choose to add authorization, I18N, caching, and fancy template tags.
You may not dive into very deep waters, but a simple blog can introduce you to a wide range of Django concepts, and some of its interesting corners.
Some revel in customization. This is a motherhood-and-apple-pie issue for many. They want at least the potential for extreme customization, even if, as Heidi Adkisson recently noted, they usually don’t take advantage of it. For example, even though Akismet does the anti-spam job very well, they may not like being locked into it, on principle. Or not like another party making the anti-spam decision for them — even if they would make the same decision.
But those who really do customize their blogs can do so, since the code is theirs to hack.
Some see WordPress as evil. I don’t understand this sentiment, but it’s out there. I’ve used WordPress in both self-hosted and WordPress.com-hosted configurations, and it’s not at all evil. It’s supplied under a GPL, so you can hack the code if you want.
Movable Type is also open-source. A Google search produces lists of open-source blogging applications, so if you want to host a blog but not be locked into an “evil empire,” there are easier ways to do it than writing your own.
If Rails has it, Django should too. This reasoning is attractive in technology turf wars. It also begs the question of why Rails has blogging applications, since the next section is also true for them.
Now consider the downsides to writing and maintaining your own blogging application, before you join the zeitgeist:
“Conventional” blogging applications are excellent. They have many built-in options, and you can download many more if you self-host. Since at least two of the major players are open-source, you can hack their existing code. True, it won’t be Django, but at least the option’s there. You’ll find more gee-whiz features in any of the popular blogging systems than you could ever code up. With all the WordPress themes and widgets out there, what will you develop that’s new and exciting?
Then there’s “professional-grade” e-magazine software. If you want more than conventional blogging software, you could use software like ExpressionEngine. Their free edition is crippleware, but still has more features than standard blogging software. For $100, you can get a Personal license with all the features enabled. Your priorities are misplaced if your blog needs more than this.
Content matters more than form. The energy that goes into laying out eye candy (the code to support the eye candy, and the candy itself) isn’t going into research, better editing before posting, thinking up interesting topics, counting to 10 before responding to a flame, etc.
I’m not saying we should all use typewriter fonts, or not use XHTML. I am saying you should reconsider if you want some gee-whiz feature in your blog. Your words should matter a lot more than their format, so don’t write an application for this reason.
Customization means more work. You know the routine: Check the server logs, something’s crashed, debug the exception, you missed this corner case, update the code and restart… You have much more to worry about with your own application. This energy could go to other activities — like producing more compelling content.
Maintaining a blogging app won’t teach you many things. It’ll be great for learning the basics, but you then ought to move on to bigger projects. The best way to learn new things is by doing new things, and tweaking your blogging app won’t teach you anywhere near as much as jumping into a new project’s 12′ waters.
The end result is…a blog. The B-List is a great blog. There’s more Django knowledge in James’ right pinkie finger than I may ever have. He’s an excellent writer.
But his Django-powered blog is…a blog! The formatting is OK but not novel. It works fine. It’s perfectly acceptable. He wrote blogging software, and it’s fine, but his blog doesn’t look any better than if he had used WordPress or Movable Type. His words are the attraction — content over form!
It should be an exercise. Just an exercise.
A blogging application is a great homework assignment for learning Django. It’ll get you familiar with the core concepts, and you’ll learn a few of the framework’s nooks and crannies. But after you get it running put it aside, host your blog on wordpress.com, and call it a day.
If I’ve missed some positive angle to blogging applications, I’d enjoy hearing it. If I’ve mis- or under-represented some aspect of them, tell me.
WordPress.com vs. WordPress.org
This has been written about before (including on WordPress’ site), but I’ll summarize the differences. Both of these are superior to writing your own blogging application.
WordPress.com is a shared-hosting version of the WordPress blogging system. It’s very easy to use, but offers fewer customization options than WordPress.org. Most significantly:
- You can’t upload a theme from the web. Instead, you must choose from their repertoire of 66 themes. (But you can customize the CSS.)
- Akismet is your only choice for spam protection
OTOH, they maintain all the software under the hood, the site’s always up, it’s free, you can export to another blog, and for a small charge you can register a blog domain with email addresses. No security hassles, no upgrading hassles, no backup hassles!
With downloading WordPress.org comes ultimate customization. You can hack the code to your heart’s content, but then again, you have to update it and you’re responsible for your own security.