But the mentioned apps .. aren't. They are tools, plug-ins and libraries. What a shame.
But the mentioned apps .. aren't. They are tools, plug-ins and libraries. What a shame.
South on the other hand, is a major improvement that I can't see myself not having on a daily basis, and it's not a trivial use case that I could knock out in an afternoon. It's well-written, brings a lot to the framework, and solves a problem that most people can't handle themselves. THAT'S a piece of code deserving to be my favorite app.
I suggest you look at http://djangopackages.com/ if you still (incorrectly) believe that Django apps as a whole haven't exceeded every expectation of what sets Django apart from every other mainstream framework out right now. Reusable apps that take the mundane out of web development have been a huge success, even more so with the upcoming class-based views in 1.3.
http://docs.djangoproject.com/en/dev/ref/contrib/comments/
For tagging you have a choice between django-tagit and django-tagging. Mingus for example took this to an extreme. Everything was a reusable app. Here's a good article from the developer about it:
http://djangoadvent.com/1.2/everything-i-hate-about-mingus/
http://github.com/montylounge/django-mingus/
The one part of the reusable apps that tends not to get reused are the templates. I find the models, middleware, admin tools, etc… to be a pretty nice way to structure an app.
Moreover, I think it's pretty easy to get caught in a very horizontally structured application because that's how they usually start. You put all of the models in one directory, all of the views in another, etc… I find Django urges you to think about how to slice your application into vertical chunks early on which benefits development.
But many apps need all manner of templates, settings, url confs etc to use them. In those cases it's sometimes easier to write something simple yourself.
Templates aren't really a problem, are they? Django will find the base ones and you can overload them if you want.
settings should be handled elegantly with sensible defaults that you override if needed.
And finally - the root url config is a bit of a bottleneck as every app that has URL's needs at least an include here. A registration system would be good but there are thorny issues to do with ordering of the URLs.