Sorry to everyone that comes here for the "big thoughts" about the following shop talk. Feel free to skip— for those interested in web frameworks, read on...
Being the conservative guy that I am, I was willing to bet millions of dollars of investors' money on an "unproven" open-source web framework, but not my own puny personal blog. But a few days of vacation have finally cleared the head and have caused me to abandon the whole Ruby-on-Rails powered fad (more specifically the twice-abandoned Typo project) for a blog powered by Django.
I can't say enough good things about Django. Professionally, it was one of the best technical decisions that I got to make early on at Tabblo. I had always assumed that we would use it for the alpha, maybe the beta, and then dump it for a custom system that could perform. Instead we rode it from the first alpha until the day we got acquired by HP. In the meanwhile we ran 5 million photos through it, a million users, and over 150,000 content publishers. We had some ugly moments (the shift from mod_python to lighttpd/FastCgi and the move to magic removal stick out in my mind), but overall it performed incredibly well. A lot of props go to Adrian and gang for putting together such a flexible framework. They used it as a lightweight CMS, but we were able to take it and build out a full UG content publishing platform (with a lot of help along the way from memcached and solid engineering on the part of the Tabblo folk).
In fact, the HP folks doing diligence on us started by asking why we had not chosen Ruby on Rails and came out the other end incredibly impressed with our Django choice. We survived our security audit (coming out much more unscathed than a lot of other HP acquisitions) thanks mainly to Django, and have continued to develop on top of it even as we get ready to truly become the "print engine for the web."
For sure there are things, I'd love to see improved, namely: mutliple DB support (sharding), a better testing framework, and general speed improvements. But hey, now that we're HP maybe we can find a way to help out with those things!
In the meantime, theonda.org (or an.ton.io) is now officially "Django Powered." I haven't had this much fun programming since at least 6 months before we got acquired. In fact, I've decided that Django— when it comes to web stuff— is perfect for "vacation programming." What do I mean by this? It's the type of programming where you get to focus on the fun stuff and ignore all the crap you find yourself having to do again and again on every web project. A few examples:
* Generic views: if I had 5 dollars for every time I've parsed URL fragments to present a list of objects by date/type/whatever, I'd be long retired.
* RSS/ATOM framework: this one is a bit messy (tightly coupled) but man is it great not to have to deal with XML encoding/decoding. Wowee, the funnest 30 minutes of the project.
* All sorts of nice html-ifying functions: want to wrap your paragraphs in p tags? Format columns of text? All built in with Django.
Finally, Django is just well architected. I use a venerable Mac program called MarsEdit to write all of my blog posts. Unfortunately MarsEdit seems to support mostly crappy old XMLR-RPC-based protocols for publishing (Blogger1, metaweblog). Fortunately for me, between Python's support for xml-rpc and Django's URL dispatch mechanism, supporting metaweblog was a "nap time" exercise (it would have been less time if there was clean and current metaweblog docs on the web). Fun stuff.
Now that I've moved to Django, I'm really excited to start playing again. The thing about Typo was that it was hard to make any changes to it without having some of that RoR "magic" explode in my face. With the Django there is no magic— just clean, explicit, and simple design.
Well done guys!