Django Forum Apps

January 23rd, 2009 | by dan |

I recently had to evaluate some django forum apps, and I thought I should share my findings.

The general list of apps I got from here. While django-pluggables looks nice, it isn’t searchable or categorised in any way that I could see, which strikes me as pretty bizzare.

Sphene - This has a good feature list, so I tried it first. However, I found that for my purposes, Sphene has a number of flaws:

  1. Sphene comes as a suite of different apps intended to build a ‘community’ website. I thought the idea of django apps was to put different apps together and build your own site, so why do developers keep making ’suites’ of apps? There are much better solutions out there which provide a ready-made community site. 
  2. It’s hard to only use some of sphene. If you just want the forum part, you’ve got to install a sack of middleware and template loaders, and the community app. This all seems like uncessary complexity to me. 
  3. Code quality is rather low. There are functions which aren’t used, half finished functions, functions which are way too long (the function for posting a new message on the forum is 200 lines long!), lots of TODO’s and that sort of thing. In just the forum and the community apps alone, there is 7180 lines of python. That’s just the python, not the templates. Bringing in 7k lines of of questionable quality code into my site scares me.

PyBB - I tried this next. There’s a few reasons I like PyBB:

  1. Clean styling, meaning less work for me to do.
  2. Excellent code quality, so extending it won’t be a headache. Also, it’s a completely standalone forum app. It doesn’t presume to try and take over your whole django site.
  3. Good feature set. The only feature you’d probably want is file uploads, but that wasn’t too hard to add.

What I’d add are file uploads, post previews, and perhaps a way of limiting certain users from being able to view/post to some forums. But that’s got to be done in a way which doesn’t interfere with an existing django site.

  1. 2 Responses to “Django Forum Apps”

  2. By Herbert Poul on Jan 26, 2009 | Reply

    Hi,

    i’m the author of SCT (sphene community tools) - just wanted to give my point of view on the flaws you mentioned (i fully understand that it might not be the perfect solution for you):

    1. different apps - I wanted to create a forum and a wiki .. and build it together for my website.. What was clear pretty early is that there is quite a bit of functionality which needs/can/should be shared between those two applications. So i decided to put them together into one bundle.. where there is one ‘community’ app with all generic methods (middlewares, registration, etc.) and two separate apps wiki/forum (although the separation isn’t perfect yet either)
    - would it be easier if i would have created 3 separate projects for this instead of putting it into one repository?

    2. you only need two middlewares and the application template loader.. - i don’t know how to do it differently .. except merging it into one middleware.. which wound’t be much improvement

    3. there are a handful of unfinished functions.. but there is a reason for why it uses that many lines - the structure isn’t perfect yet.. and there are a few hacks.. but in general the idea is that you have a generic forum app . and can plug in whatever you need without modifying the core application. so in my opinion.. these few extra lines make it easier to extend.. (there is a linklist category type, blog category type, Q&A category type, etc. all extended the functionality of the forum without modifying the code to remain easily updateable ..)
    of course.. if you just want to hack in your changes without caring about if you want to ever update to the latest version it would be easier to specifically implement those features in the core.. instead of going that extra mile to provide extension points..
    but i like flexibility .. which is not right for every project i guess :)

    so i guess you got the evaluation right, just wanted to point out that most of these flaws have reasons :)

    cu,
    herbert

  3. By oscar on Jun 4, 2009 | Reply

    You can try djangobb (based on pybb)
    http://djangobb.org

Post a Comment