Thursday, September 9, 2010

Does Django really suck?

I remember the days when every programmer and his dog had their own web framework and templating engine (apparently the dogs had issues with cheetahs, as they seemed unable to catch'em). Of course, the widely used ones were a small number, but there was no obvious choice or really dominant solution. Moreover, setting up the development environment was far from instantaneous and often required fiddling with apache configuration file.

In this sense Rails was a real breakthrough (though outside Python world). I quite welcomed Django which brought winning ideas from Rails in the python community and then some. For example, the admin interface was simply a killer feature (from my point of view).

However, Python community was (and is) constituted by very skilled programmers often doing very complex and challenging stuff. Django ORM has been quite criticized (as far as I remember). Lack of multi-valued primary keys was among the first features criticized (especially because SQLAlchemy already offered those features). In general many early critics were more like "I like that other framework better".

I decided to support Django wholeheartedly nonetheless, and I still do. I believe we need a "default" web framework. Something which is widely adopted and maintained and can be pushed in the enterprise world in order to spread Python itself. That is the reason why although I mostly agreed with critics (e.g., I do prefer sqlalchemy) I continued suggesting Django to newcomers and experienced programmers as well.

I recently read this very interesting presentation. That is a "second generation critic" very different from the early critics. It comes from someone who used Django extensively and consequently is well motivated and addresses specific points rather than trying to promote "another web-framework".
I basically agree with every critic. I hated apps from day one. I hate the poor object relational mapping.

I'm a big web.py fan (and luckily, since I am not a web developer, lack of "advanced/enterprisey" features is not an issue). I like simplicity. I hate feature bloat.




Mock graph on software development

I completely agree with the presentation author: Django needs to be fixed, not to be substituted. Even if the temptation of just replacing with some younger framework is strong, from a geeky point of view. Unfortunately, managers are not geeks. Lot of effort has been put into having the enterprises to adopt Django. We should at least try to pursue this road.

No comments: