Popularizing Django -- Or Reusable apps considered harmful.

By : Shabda Raaj

For all its technical merits, Django is still a very niche technology. It is my belief that the thing which is holding Django back the most, is due to one of its strengths.

Making reusable apps is easy and simple in Django. In Django this is the correct way to do things. You take a few apps, mix them together in your project, and deploy to start your site.

Compare the installation steps of Wordpress and an imaginary blog software better than Wordpress called Djangopress.


  1. FTP wordpress to webserver.
  2. Point browser to site.com/blog
  3. Next-Next-Next done.


  1. Svn checkout Djangopress
  2. Svn checkout django-registration
  3. Svn checkout other Django apps Djangopress depends on. Maybe django-mptt, django-threadedcomments or a few others.
  4. Edit your settings.py to add all these apps to INSTALLED_APPS.
  5. Add database settings, and other changes if needed.
  6. Telnet to your server and do syncdb
  7. Create templates. Done.

This does not take into account the extra hoops Apache makes you jump through, compared to using a PHP app.

How I got started with web programming.

I wanted to run a forum. PhpBB was free, and seemed most widely used. Installed it, and wanted to tinker with it, so learnt Php. If there was a different forum software, which was technically superior, but which asked me to write templates for it before I could start a forum, guess which one I would have chosen?

So how to popularize Django.

In my interview of James Bennett, I asked what is Django's killer app. And he said there need not be a Killer app for Django, reusable apps will do. I guess I will have to disagree. Even internet needed a killer app to get breakthrough popularity. Let's see what a Killer app gives you.

  1. It fills a big niche, so people are forced to learn your language/framework.
  2. It forces the Hosting company to support your language/framework.
  3. If a large number of places use it, it gives your framework name recognition.

So to popularize Django, I propose setting up DjangoPackagedApps.com to distribute packaged Django apps, to complement reusable Django apps. A packaged Django app, must have these properties. 1. All dependencies must be included. 2. Beautiful templates must be included out of the box. 3. Users must not need to modify anything in settings.py apart from the database settings.

And installing the PackagedApp must be no more than the number of steps needed in Wordpress.

  1. Svn checkout/FTP DjangoPackagedApp
  2. Only thing to edit in settings.py is database settings.
  3. Do syncdb. done.

Do yo use Django? Do you program? Find things which YOU will love reading at 42topics.com.

Related Posts

Can we help you build amazing apps? Contact us today.

Topics : django marketing



I have been thinking of something similar and with djangoplugables now here, I think we're going to realise how powerful it will be to have some solid conventions on template tags / css classes, so that, as you pointed out, we can install a django app as easily as a Wordpress / Joomla plugin. On the flipside, at the moment the Django community's 'web dev knowledge' is probably at a somewhat higher level than the average <insertphpproject_here> user and some people might say that's a good thing. Sometimes though, it would be nice to log into the admin area, display all django pluggables and it downloads said pluggable including templates and maybe even does a syncdb. For me, installing a django app could be as easy as installing a joomla component and I think that's where we will end up and I think Django pluggables is probably the first step in that direction.

James Tauber

The django-hotclub mailing list (on Google Groups) was set up specifically to discuss issues around making reusable Django apps play better together, including the sort of conventions that salubrium talks about in the previous comment. That's a good place to go discuss these issues.

As part of the "hotclub" project, I've recently been working on a "packaged app" of sorts called Tabula Rasa that glues together various pieces to provide a base website to which reusable apps can be added.


It is one thing to develop applications but entirely another to make those applications easy to install. Django makes the first job damn easy. But not so much the second one. Currently it looks like it is only for Django/Python geeky developers! On the other hand, wordpress is for anyone and everyone.

just my 2cents.

David Reynolds

Your comparison of a 'niche technology' is somewhat flawed in that you are comparing a language with a frame work built on a language. A better comparison would be comparing PHP with Python or Django with CakePHP


David: Not really. No body is writing anything apart from webaps in pure PHP, and most of the people who want to write web apps in Python are using Frameworks. SO it is reasonable to compare PHP to Django.

Eric Florenzano

I disagree that the ease of use of Wordpress should be the goal of Django's reusable apps.

Django, and apps built on top of Django, are aimed towards developers--people who understand how to write code and weave complex systems together. Wordpress, however, is aimed towards content creators who want to start blogging or publishing right away. These are simply two different markets.

Instead, I believe that the goal should be to make Django components as easy to use as they can be made, while allowing them to remain powerful and flexible.

The popularization of Django will happen as more and more large sites adopt it as their technology platform, and as people who use it love it and tell their friends--much as has been done up until now. I also suspect that the magical one point oahh will help with its adoption, as people can rely on its API stability into the foreseeable future.

Michael Foord

You don't think the Google App Engine will be a 'killer app' for Django?


Eric: If we can make Django technically superior and easy to install, do you not think it is an worthy goal? And this is what will really get users to learn about, and use Django.

Michael: Not really. GAE != Django. But I agree this is going to give a huge name recognition to Django.

Simon Scarfe

1. Svn checkout/FTP DjangoPackagedApp
2. Only thing to edit in settings.py is database settings.
3. Do syncdb. done.

as far as dependency-resolution is concerned, step 1 is simply a case of some wise svn:externals-setting (just have to make sure it's set to a tag if the trunk is liable to be unstable).

JR Westbrook

If Django was made for content creators, I would agree with you. However, Django is made for developers building new systems, not for end-users wanting to install pre-made ones. It's our job as developers, using Django, to build applications aimed at the end-users. Django is not a CMS, or blog platform, or forum engine. It's a framework that developers use to build those things, so I think that Django being somewhat inaccessible to end-users is not a problem at all. It's not for them.


JR Westbrook: What I am saying is that we Django developers forget that Django might be made for us, but the apps we build, are build for end users. And hence we must package them to make a painless install.

Doug Napoleone 6th May, 2008

I take your point about how we should make things easier for the end users to install, but pluggable apps are the wrong level.

I think the comparison between wordpress and a theoretical django blogging application is a bit apples and oranges in this regard. A better comparison would be a theoretical blogging package which an easy install just like wordpress and with its own plugin system. Plugins != pluggable apps. Do not make that mistake.

Wordpress with a custom skin and 5 plugins gotten out of SVN would be closer to the mark, but still well off.

Someone tomorrow could come up with a django based Blog system in svn (using svn:externals for all the dependencies) and come up with a custom plugin system like the one WordPress has (plugins are VERY different from pluggable apps, but that is a big discussion).

If you look at some of the larger system developed on top of django you will find something closer to the WordPress way of doing things. Projects like satchmo or my own PyCon-Tech. PyCon-Tech consists of about 12 pluggable apps but you only need one svn install to get it up and running (thanks to svn:externals which brings in everything including the proper version of django its self!)

The apache problem is real, but will change with time. We used to have this same problem with PHP, pre-modphp times. modwsgi is almost ready for large scale consumer hosting. Once that happens (and thanks to Google App Engine I believe that time is much sooner than I previously though) we will start to see Django (and TurboGears, and Pylons) superframeworks emerging.

Joshua Mostafa

I am totally ignorant of the Django world and almost as ignorant of Python in general. So this might be an ignorant question but ...

Would it not be possible to have some kind of ports repository for Django apps, where applications can register themselves and their dependencies ... then have a simple one-line command that pulls in all said dependencies to install the hypothetical Djangopress? Like FreeBSD ports.

Jeff Eaton

You're onto something important, I think. In the Drupal community we face a similar problem. It's definitely a more focused tool than Django, with its out-of-box CMS trappings and emphasis on multi-contributor content-driven community sites. But the heavy emphasis on mix-and-match site building with reusable modules (similar to django's applications, if I understand them correctly) means that there are very few "turnkey" solutions built on it.

The real question, I think, is this: Do you WANT django to be a Wordpress killer? The amount of work that goes into polishing a toolkit for use-case-specific mom-n-pop use is considerable. I'm not sure that the payoff is there in a lot of cases.


Joshua: I guess python eggs can make that possible.


Do you WANT django to be a Wordpress killer?

We don't want Django to be a Wordpress killer. But we sure want an application written with Django to be Wordpress killer.

Marinho Brandão


with the same worry as you, I was thinking in the last weeks about how to make Django easiest for new users and for maintaining with no worry with remote access.

2 days ago I started the project django-dynamic in the Django Code with the goal to implement all maintenance tasks in a Admin-based application, when you will can set install applications, controls SVN/GIT integration and managing files in the project.

for a while, I am using the little time I have to put in some functions I have already made for project I work on. But in the next weeks I will make all those functions I told.

I think that so, we will have a powerfull tool, util for new users and practical for all.

Frank Malina

Why the heck do you want to popularize Django?
I don't want anyone else to know about it ;)


Doesn't easy_install handle dependencies?

website strategy Adelaide

make it easy,because if not you will be a harmful less..

© Agiliq, 2009-2012