I’m nearing release 0.1 for Banjo, a blog app written in Python on the Django framework. If you look at the mailing list, you’ll see plenty of people asking about a blog app, and the standard reply is that it is just so easy, almost trivial, to write your own that there is not much call for such a package.
I disagree
I really don’t agree with that logic although I do understand it. Blogs look simple, and stripped of everything else, they really are simple. Basically they are just reverse chronological posting of text on a page. No biggie, at least at first or second glance.
But the trick is in the phrase “stripped of everything else.” Once you start considering the features commonly available in blog apps, it gets quite a bit more complex:
- The blog should be easily “skinned”, and it should be easy to change skins on demand.
- Plugins should be supported, which means the blog engine should expose its API in various ways, and provide appropriate hooks (in most cases in Django this exposure is via custom signals).
- The blog should provide a good solid feed system, allowing both blog feeds and category feeds. Preferably using Atom in preference to RSS.
- It should accept posts from blogging tools such as Ecto or MarsEdit. It should also be able to accept post attachments such as images or files.
- It should be able to (optionally) send emails to authors or admins when various event happen.
- It should allow easy import from currently popular blog engines such as Wordpress.
- It should really be able to support a multi-blog situation. Yes that makes it much more complex for the programmer.
- Any blog app these days should be multi-author aware at the least
- Preferably it should allow multiple blogs inside the same engine, hosted at different domains, and also the same domain but with different directories. That is, if you want to have one blog at “foo.com” and two more at “bar.com/this” and “bar.com/that”, you should be able to do that without having to run multiple instances of the app.
- It should support tying authors and permissions to each blog.
- It should allow different skins for each blog.
- It should allow different plugins for each blog.
Banjo does that
I’m still testing, but at this point almost every one of the points above are complete. Most of the work remaining is in creating the default skin. I’m also still working on the Wordpress import script. When I’ve got that done, I’ll release 0.1.
I’m developing this app under the New BSD license, and hosting it at Launchpad using Bazaar. I’d love to hear any feedback you may have about the concept and/or code.
Technorati Tags: banjo, django, blog-engine
















13 responses so far ↓
1 Kyle // Oct 19, 2007 at 9:17 am
That’s awesome. We’re in the same boat. A basic blog is trivial to write, but something like you describe (which is what most people *really* mean when they want a “blog”) get complex very quickly.
We’ve got a blog engine that’s also close to what you’ve outlined. I can’t wait to see yours — maybe we’ll be able to contribute some functionality to yours.
2 Chris Kelly // Oct 19, 2007 at 9:38 am
I’m interested to see what you’ve got going here. I’ve been putting together the beginnings of a blog app myself, but I find it still lacking (especially in the “time to spend on it” department). This could be the start of something very good.
I can think of a few things you didn’t mention that could be added as well, such as Trackback and Pingback support. I’d also think I’d like an opportunity to contribute…
3 Bruce // Oct 19, 2007 at 3:01 pm
Chris, feel free to contribute. One of the great things about Bazaar is that there is no barrier to your branching the project. Do that, add features, then make a merge proposal. Bazaar is absolutely great at making that simple, it is what it was designed to do.
4 James Bennett // Oct 21, 2007 at 5:06 pm
I think the ease of writing a blog application varies according to what you want. If you want to clone Wordpress, then it’s hard. If you want to produce one application which handles all of the functionality, then it’s hard. If you’re comfortable with splitting functionality across multiple apps or with producing something designed to be plugged into a larger project, it’s pretty easy.
5 Bruce // Oct 22, 2007 at 10:03 am
James,
I largely agree. The challenge is in finding the right amount of tradeoff between handled-in-core and handled-via-apps or handled-via-plugins.
For example, despite your excellent work on the comment_utils, it *still* feels like ramming a square peg in the hole. There are just quite a few things I’d like to do or enable with comments and we are pushing up against the limits of how far we can elegantly extend the built-in Django app.
Still, for now, I’m happy to use your comment_utils, but I’m sure you know the feeling I’m talking about. Basically I don’t really want to maintain another whole comment system, but the built in one is just … argh … missing stuff.
6 Andy C // Oct 23, 2007 at 2:57 am
Strongly agree. I use WordPress and have played about with Drupal, Joomla, MT and Typo. I was taken with the purity of Django’s Admin interface.
I managed to create a minimalist blog by cloning work kindly shared by another author and hacking the CSS to suit. I then migrated all my blog content (articles, posts, comments, categories).
However, I didn’t complete the migration from WordPress to django because I would need anti-spam plugins, pingbacks, WYSIWG editor, improved comment functionality.
No doubt I could clone, enhance or potentially even create such functionality but I’m not a Python hacker.
I think an off the shelf Django blog package is an excellent idea and there would be significant interest from technical bloggers who don’t necessarily know Python.
7 Bruce // Oct 23, 2007 at 7:14 am
Thanks Andy. If you want to help even though you aren’t a Python master, I could use help with building a few starting skins. Actually, I could use help with the default skin right now.
Almost everything else is done, I just need trackbacks and I’m good to release 0.1.
8 Blueprint CSS AIR Grid Tool // Oct 25, 2007 at 10:50 pm
[…] the Blueprint CSS framework. In the process of using it to develop the base template for Banjo, the blog app I’m writing, I realized I need a tool to help me keep page elements lined up on the grid, both vertically and […]
9 Damon Kiesow // Dec 12, 2007 at 6:13 pm
Bruce - any ETA on the forthcoming 0.1 release? Looking forward to seeing it.
10 Best CreditCard // Jan 7, 2008 at 12:10 am
It is absolutely obvious that young people have very little knowledge of personal finance. Even some of the college students think that the money from credit cards is free. And not only young people are ignorant about credit cards. The best way for them to choose the right credit card is read the details. There is a great site to compare credit card offers
discovery financial credit cards
Ne72Ma9rod
11 Excellent Creditcard // Jan 23, 2008 at 3:28 pm
http://excellent-credit-card.blogspot.com
12 Popeye // Mar 4, 2008 at 3:01 pm
Bruce, Any progress on Banjo?
13 Taz // Mar 31, 2008 at 10:05 pm
Check this out
Leave a Comment