-
Experimenting with Django
-
Lately I’ve been experimenting more and more with Django. With its recent 1.0 release, I feel more comfortable investing in it, since the project folks plan for long-term backwards compatibility, an issue that was a very sore point for the Transifex development team.
Some of the things I like about Django include:
- Since all components are developed by Django itself, the designers were able to structure them in a way to interoperate best, and compliment each other nicely. The pieces fit perfectly with each other and you can’t feel the glue like you do with Turbogears. This gives you the feeling that there’s one way to do a particular thing, following the Zen of Python.
- In addition, Django ships with “batteries included”, so you get to have a bunch of additional stuff like feeds, testing, internationalization, caching. Pretty handy, given the fact that I like good integration where it makes sense, and when people who are smarter than me pick the best ideas, so that I don’t have to.
- The fact tha Django follows the UNIX philosophy of “do one thing and do it right” allows us developers to work that way ‘by default’. Your service consists of a bunch of different applications each of which does a particular task: adds tagging support to other applications, user registration, OpenID, notifications, twitter, geotagging. All kinds of cool stuff, encapsulated and reusable.
- Django seems very much influenced by the rules that govern Python development. You feel there’s a particular way to do each thing. Readability counts. Beautiful counts. No magic (aka explicit is better than implicit). Oh, and Guido seems to like Django too.
- Django’s documentation is stellar.
- I think I already mentioned the fantastic community around it. There are a dozen websites we use to learn all kinds of things, and people are writing blog posts all the time about the cool stuff they did today. And there are a gazillion of those.
- In my eyes, it’s like Django striked perfect spot between having a hacker-centered community (amazing features, but you miss being slick, stylish and well-documented… think git, perl) and a user-centered community (more feature requests than patches, less plugins, more use of ’should do’ than ‘am doing’ but more documentation, blogs, etc.. think apple).
- Django’s maintainers are smart. Very smart. And friendly and fun too.
But probably most importantly, and probably as a result of the above and some other ones, it makes writing web applications fun. Not that TurboGears, Rails or CakePHP don’t. But for a lot of things, it feels like “it’s already been thought for you. Just go now, and get creative. Get stuff done”.
About Transifex now. I admit that a number of times I have thought about how Transifex could be if it could leverage the benefits Django would provide. Also had some discussions with a few smart folks about the benefits and costs of a possible migration (rewrite?). I’m starting to think that a few things will improve a lot, like the out-of-the-box feature set, the development pace, the overall code quality and the maintenance cost. And these improvements will most likely be worth the cost.
Hmm.
First April?