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 I didn’t find it evil/bad/limiting at all. 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 have it. 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.
But-but-but.
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 thereYou’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. If you need more than this for your blog, your priorities are misplaced.
Content matters more than form, anyway. The energy that goes into laying out eye candy (meaning, the code to support the eye candy, and then 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 a lot more to worry about with your own application. This is energy that could be going into 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, no question. But then you 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, I suggest you put it aside, go 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 about 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.)
- You can’t upload widgets, or plug in random JavaScript or Flash
- 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.
3 responses so far ↓
Neal McBurnett // March 30, 2008 at 5:53 PM |
What you say is fine if all someone wants is a blog, or if people are writing their own one-off blogging apps.
But I see a lot of interest in standardized support for top-notch blog functionality for deploying alone or with other django apps.
And I’ll go further to say that there is also interest in building a CMS on top of django, with all the sorts of theming, plug-and-play css options, etc. that wordpress or plone already offer. But done right, and securely, in python on django, for deployment by non-programmers.
I’ve heard over and over that many in the django community don’t want that as their focus. Fine! But django-the-framework is still a great building-block for a great CMS, IMHO.
So again – if getting a blog up is what you want – yes, there are many options. But if folks want to help django be a player in the blogging world, an important area of web interactivity, then by all means lets collaborate on getting some first-class software and designs out there.
John // March 31, 2008 at 9:34 AM |
Hmm, I’m not aware of substantial interest in standardizing Django blog functionality. The most recent relevant thread I found on django-users is this one. Here are some comments from it:
—-
“I’m not necessarily convinced that there’s a great need for a “standard” Django blog application; it would appease some folks, but I have a feeling that in the Django world a lot of people really would be happier, in the long run, writing their own app that does what they need…”
“It’s easy to write a “basic” blog in Django. If that’s all people want, then great. Something like that will work perfectly for the majority of bloggers (who probably won’t get that much readership anyway)…
But all this talk about making a “full-featured” blog app in Django — one that will really get noticed (and thus get django noticed): what we need is a blog with *more features* that could actually begin to compete with something like WordPress**.
I mean stuff like Akismet, Flickr integration, delicious/magnolia bookmarks, multi-author (with per-object permissions), importing from WordPress, statistics, easy web-based installation (NOT easy_install but a wizard someone could follow, like the WordPress install, lots of
customization, integration with pingback services, etc…..
If that sounds like a lot, that’s because it is. To even be a blip on the screen it will need this kind of stuff. I also doubt the django-admin will be sufficient for an application like this…”
“All I tried to say is perhaps that people who are looking for a simple to use blogging solution might want to get there with the least amount of work. Installing WordPress is damn easy. Everybody with “computer knowledge” therefore typically recommends WordPress (let’s not dive into the discussion here that PHP is nearly always preinstalled and Python not).”
—-
I won’t argue that nobody is interested in this, because someone’s always interesting in something. But I don’t see a groundswell of demand for a standard blogging app. If you do, please post some links or information about it.
Among the existing Django blogging applications out there, the best-known one is probably Blogmaker. I’ve never used it. The documentation claims it’s full-featured and production-quality. If it emerges as the de jure or de facto standard, it might change the blogging landscape. If that happens, more power to it!
But your comment touched on two other issues that speak to how much development will be needed on projects such as Blogmaker.
Today, it’s easy to deploy existing open-source blogging applications along with Django. Most blogs want to live at an URL like
http://www.domain.com/blog/, and that’s easy to do with apache redirects. It’s what TrenchMice does. TrenchMice is 100% Django, with a WordPress blog.“Easy” is a fuzzy term. It wasn’t “easy as pie” to set up, but it wasn’t hard either. I can’t compare its ease of installation with the ease of installation of a nonexistent Django blogging competitor. My point is that “top-notch blog functionality” can be deployed in Django applications today.
Which leads me my second point, which is that existing open-source blogging services/products have tons of features. In order to compete with, say, WordPress, you’re talking about a lot of development. In technical terms, a “shitload.”
I’m not saying it can’t be done, but the “top-notch blog functionality” bar is very high. And the existing blogging products won’t be standing still while this development occurs. BTW, WordPress is open-source, you have just as much (I would argue far more, if you count themes) development activity in it than you would have on a Django blogging platform.
And after all that development, we’ll have…a blogging engine. Gee, just like we have today.
Thanks for writing!
Samuel A. Falvo II // March 22, 2009 at 2:01 PM |
To date, all blogs are written so as to support diary entries, or glorified newspaper articles. However, I want my blog to host articles written in a more formal style, something that elevates the reader beyond a fourth-grade reading level.
To this end, I desire a blog that supports a proper title, author, abstract, body (including structured sections), footnotes, and a proper bibliography.
Can your blog software do this?
Didn’t think so.