The hot new development framework

I’m hearing more and more about Django. Pownce uses it. Zooomr uses it. I keep hearing more about it at developer events and seeing more and more developers using it. The developers who’ve told me about it say they like it a lot more than Ruby on Rails — they like it’s based on Python and that they report it lets them develop high-performance apps faster than other frameworks. When Leah Culver, lead developer of Pownce, told me about it while waiting in line for the iPhone, she had high praises for it. If you’re a developer, what do you think?


Filed under: Uncategorized @ 2:49 pm | 45 Comments

45 Comments

  1. sdpurtill Says:

    I began using Django about 6 months ago after Kris Tate recommended it to me. I have also developed with Ruby on Rails around 18 months ago, but I quickly understood Django much better than Ruby on Rails and all of its “magic”. I was able to develop and launch the Alpha version of ClassOwl.com in under 2 months, and I have nothing but praise for the framework. Also, the documentation and community are phenomenal.

    Thanks for bringing more mainstream attention to Django, people will love this framework.

    http://www.djangoproject.com

  2. Chris Says:

    In related news,

    http://digg.com/programming/Zend_Framework_1_0_0_Production_Released
    The Zend Framework just went RTM 7 days ago.

  3. Robert Scoble Says:

    Chris: how does Zend, Django, and Ruby on Rails compare? When would you use each?

  4. PXLated Says:

    ATD I tell ya…PHP, then Rails, now Python, tomorrow Zend. What an attention span. Or is it just lack of confidence and follow the leader.
    ;-)

  5. Ashot Petrosian Says:

    agreed, ruby is a toy, django is a serious tool.

  6. Chris Says:

    “Chris: how does Zend, Django, and Ruby on Rails compare? When would you use each?”

    Zend is for PHP, Django is for Python and Ruby on Rails is for ruby. I’d have to say, if I was doing a PHP project, and I would want to use a high level framework, I would use Zend Framework. If I was a Ruby dev, bla, bla, bla, I would use Rails. If I was a python dev bla, bla, …Django.

    And so on and so forth.

    I am a PHP dev, amongst other languages, like asssembly, C, C++, java, but I do not use frameworks, as my code is down to the metal. I am building a massive search engine, and on hold a new SQL datbase.

    The slightest overhead such as having a short for a boolean flag, be a long and adding 32 unnecessary bits, on a scale of 10 terabytes can add something like 2 more hours to the index time or more.

    It’s crazy. I program my PHP, like I do C and C++, so I really totally hate frameworks. PHP is so high level you really don’t need one unless you have a deadline coming up very quickly. Notice that Pownce, and the other sites you mentioned are not very original sites and have very little serious computing going on, on the server side.
    http://www.digg.com/programming/The_Technology_that_Powers_Digg
    As you can see digg.com itself is based on some very high level tech. But doesn’t reportedly use a framework.

    If you invest that much in a really good site, you probably want to do it from the ground up. When you use a framework, and you don’t audit the code, bad things can happen. Lots of people used http://smarty.php.net framework for PHP, and when vulnerabilities were found, some didn’t update quickly enough and their sites all got hackzored. It’s their fault, but still.

    If you’re just throwing something up and meeting a deadline though in python, ruby or php, all 3 frameworks are great!
    Very little code goes in and lots of nice looking html is pumped out!

  7. Dan Sickles Says:

    Tabblo (recently acquired by HP) uses it. It’s used by newspapers for web publishing (for which it was originally developed). Generic views, easy RSS/Atom feeds and the new unicode support are my three faves It’s currently at v0.96.

  8. Dan Shafer Says:

    I agree that it’s primarily a language choice issue and that topic all too often leads to language wars. I love Python. I like Ruby. I tolerate PHP. But my current project is a PHP project and we’re looking at frameworks right now. We like CodeIgniter best of what we’ve looked at but we’re checking out the Zend framework before we make a call. There’s also a proprietary, unreleaed framework that we like a lot, too. Can’t talk about it yet.

    Django is amazing. I have never had the opportunity to build anything complex using it, but Python’s elegance combined with Django’s top-flight design make it a framework I’d love to get my hands on one day.

  9. Chris Says:

    @Dan,

    The large problem with 3rd party frameworks is the auditing factor. Whether it’s open or proprietary, all bad people need to do is find a single hole then google a filename used by the framework such as frameworkname/includes/file.ext and google will spit out a listing of sites using that framework.

    If you can get over the constant patching and updating, then frameworks can be a great tool. The problem is a lot of people that use the “API” code it and forget it, not realizing that they have to update the libraries just as if it were any other framework like Java, Linux /usr/lib/*.so or Windows API.

  10. Michael Walsh Says:

    I haven’t seen anyone mention another python framework: Twisted Matrix (twisted.web). Is it not as cool as django or are there real reasons why you guys are choosing django over twisted instead of say, never hearding about twisted.web?

  11. Tom Dean Says:

    Chris,

    It’s odd that you use that as your argument against frameworks, when the same logic can be applied to the programming languages you use. PHP is infamous for its security vulnerabilities.

    Django is a great framework, and by and far the best one out there for Python. I introduced a co-worker to it a few weeks ago, and he’s dropped C#/asp.net as his primary dev platform and has converted over to python because of it.

    While an equally skilled programmer can probably get things done just as fast in Django as they could in RoR, Django has the benefit of Python, which runs just a bit faster then ruby.

    “Chris: how does Zend, Django, and Ruby on Rails compare? When would you use each?”

    It really is all a matter of personal preference. I could argue for or against any of them, all that matters is finding the language and framework that best clicks with you.

  12. Simon Willison Says:

    As a co-creator of Django I’m obviously pretty biased but the project is definitely going from strength to strength at the moment thanks to the hard work of a whole bunch of talented people. The status update posts on http://www.djangoproject.com/weblog/ are invaluable for keeping tabs with new developments in the framework and the community at large.

    I don’t know if I’d call Django “new” though - it’s two year birthday as an open source project is this month, but initial development as a closed-source framework began in late 2003.

  13. tapster Says:

    there’s nothing new about Django, it’s been around for a couple of years at least :)
    Seriously though, application development is about so much more than the flavor du jour. eg. maintainability, availability of skilled developers etc etc the list goes on. there’s a place for most depending on the task at hand, and the expertise you have available

  14. Sean Says:

    The Ruby zealots love Rails. The Python zealots love Django. Etc., etc., etc. Most of the people who say they love one over the other are already strongly biased for the language it uses. Try to find a Ruby lover who says Django is better than Rails (or vice versa). Something about Python and Ruby seem to make people religiously attached to the language and everything about it. I personally have programmed with both languages (and still do) and didn’t find the religion for either one. Of course, I’ve never found a programming language I like enough to feel religious about, so I may be out of the ordinary (when it comes to software developers at least)…

  15. Ajit Says:

    The best part about using django is that you get python for free.
    Python has tons of libraries that one can use in python and for the framework.
    As a framework, django carries very little flab and was built for “customize-ability”. It gives you enough freedom to use pre-built features or write your own… from scratch or extend teh existing features. What else can one ask for!

  16. arjun Says:

    the docs for django are extremely thorough, and fun to go through. with ruby, you have to buy a book or else you’re stuck in the dark.

    personally, i’ve tried both in the last few months and prefer django as well.

  17. Robert Dempsey Says:

    As a Ruby on Rails developer and the founder of a non-profit dedicated to promoting Ruby on Rails, I can say that django is a framework that I have heard many good things about. Personally I hold to the mantra, “the right tool for the right job.”

    In any case, review the pros/cons of each framework and language, examine how each would (or would not) work in your current environment (technological or political), find what works best for you, and dive in!

  18. share.websitemagazine.com Says:

    The hot new development framework

    I’m hearing more and more about Django. Pownce uses it. Zooomr uses it. I keep hearing more about it at developer events and seeing more and more developers using it.

  19. Chris Says:

    “It’s odd that you use that as your argument against frameworks, when the same logic can be applied to the programming languages you use. PHP is infamous for its security vulnerabilities.”

    The difference is this.

    yum update php

    and you’re done, and patched. Usually an automated system like /etc/init.d/yum-updatesd will do it automatically.

    Usually these frameworks have no RPM or .deb associated with them and are not maintained by major repositories.
    Most people will have PHP updated to recent builds without ever knowing it happened and stay safe.

    Not only does this not happen with frameworks, but a lot of the people that use the frameworks will never update them thinking their code is bound to a certain version of the API.

    That is a HUGE difference in my book.

  20. Evan Says:

    How different is Django from Drupal?

  21. Robert Zolkos Says:

    Nice conversation. Its good to see some programming related stuff happening here. I agree with Robert Dempsey in that its important to find what works for you.

    I’m whats called a language whore - moving from ruby to python to php and back again. Probably should pick one and stop writing Hello World so much.

  22. James Bennett Says:

    @Chris, just a couple of points:

    Because most of the popular new frameworks offer extremely flexible and — more importantly — clean URL configuration, it’s much harder to pin down a “signature” URL that identifies them. If there’s no equivalent of “FormMail.pl” or “mt-comments.cgi” or, well, anything with a “.php” on the end, then automated exploits — even when a vulnerability makes them possible — are much harder to run effectively.

    As for packaging, I’ll step up as the release manager for Django and point out there are Django packages in Debian, Ubuntu, Fedora and Gentoo that I know of, and I’m tracking down rumors that there’s one in SuSe now too. I keep on top of who the maintainers are and make sure they know when we release (and that they’ll get as much lead time as we can give them if there’s a security vulnerability). So, at least with Django, the latest release is never more than a “yum” or “apt-get” away.

    And I wonder where you’re seeing the “constant updates and patches”; most of the frameworks I’m familiar with average a couple releases a year, and security patches have been mercifully few; perhaps you’d like to share your experience of some framework releasing so quickly you had to stay on your toes (tracking someone’s development trunk doesn’t count)?

  23. nerkles Says:

    When picking a framework, you need to understand your needs, then figure out what the strengths of the different frameworks are, and choose. None of them are the end-all be-all.

    I’ve been fond of TurboGears.org because it’s so flexible (the v2.0 due soon is going to take it to a new level). TG also builds on several existing projects rather than reinvent everything (Python, SQLAlchemy, Genshi, MochiKit, etc.).

  24. Jacob Kaplan-Moss Says:

    I won’t pile on, but the security argument, at least as it applies to Django, is complete FUD.

    Django’s been audited numerous times, both by individuals and corporations (including HP). Each time its passed with flying colors. We’ve learned from the mistakes of PHP; security in Django is anything but an afterthought.

  25. Jacob Kaplan-Moss Says:

    Grrrr, “it’s”, not “its”.

  26. Rob Says:

    I tried Django quickly but it lacks in many areas, espeically file uploading. Their “newforms” doesn’t even support it, and it was a terrible mess trying to use their “admin” app to change the uploaded filename to a random md5-hashed string or change the directory to something that isn’t based off of dates (such as model ids). Both of these problems were fixed in six lines in Rails using Rick Olson’s attachment_fu and overriding two methods. Django is good for CMS but if you’re trying to build a web app, use Rails instead. Better helper methods for views, more plugins, and Ruby uses rubygems which allows you to easily manage any gems such as rails and actually delete them as well. Python has nothing like this except for “easy_install” which not every program supports and is flakey.

  27. Silver Stripe Blog » Blog Archive » Scoble on Django Says:

    [...] calls Django the hot new development framework. Not sure about the new part. It’s been around for a few years. But definitely hot. When I [...]

  28. harryhomeowner Says:

    Chris,
    I’m not sure I quite follow your example in comment #9.

    Don’t most of the frameworks store their application code outside of the public directory? I know django does, and I was under the impression that RoR did. With that being the case, I’m not sure what googling for a vulnerable file would get you.

  29. Andrew McClain Says:

    Of the myriad technology decisions we had to make for fluther.com, django has been our best. The community is extremely responsive, and the biggest positive is that to my coder’s mind, things just *make sense*. Every time I dig under the hood, I’m always impressed.

  30. Geek And Poke Says:

    The Lazy Youth - Part 3

    Programming will never be the same (the Scobleizer). For those of you geeky scaffold folks here are links about call -151 and HP 16C. Btw.: Part 1 of Lazy Youth is here and part 2 is here.

  31. Oliver Widder Says:

    Time for another complaint about the lazy youth.
    See my small cartoon:
    http://geekandpoke.typepad.com/geekandpoke/2007/07/the-lazy-youth-.html

    Bye,
    Oliver

  32. Jeff Croft Says:

    Oliver, I do realize that was humor (and fairly funny, to boot!), but just to clear up any misconceptions: Django has no “scaffolding.” Rails does the scaffolding thing (although I believe it’s purely optional), but Django does not.

  33. pk11 Says:

    rob, there are solutions for the file upload issues:
    http://www.djangosnippets.org/snippets/103/
    http://www.niquille.com/2007/06/17/streaming-upload-in-django-for-large-files/

    also, the new version of the admin interface is going to be more flexible (http://code.djangoproject.com/wiki/NewformsAdminBranch).

    use what suits you the best, if it’s rails good luck with that.

  34. frank peterson Says:

    Somethings I dont like about Django:

    1.0 will most likely not happen until next year (it was supposed to happen last summer and then this summer). Sure a lot of the code is stable and guaranteed to be in 1.0 but some things are still changing and until 1.0 things wont be guaranteed to have backwards-compatibility.

    Their aren’t any useful tools (like radrails or instantrails) for it.

    The only Django book is the one online which is the one they are writing.

    There are no screencasts of anyone showing how they do things. There are blogs with some little snippets of code but thats it.

    No forums are available, you have to use Google Groups.

    Its been hell getting Django installed on Windows, however someone did figure it out ( http://thinkhole.org/wp/django-on-windows/ ), this shouldnt be so hard and should of been documented better earlier on. It’s probably a pain to install on Mac OS X as well.

    All Python books only have 1 small chapter dedicated to talking about Web Development and its so basic its unusable.

    The Django “community/bloggers/developers” seems to be more doing more of their own thing and not sharing info as much as other language “communities” seem to.

  35. Jeff Croft Says:

    > It’s probably a pain to install on Mac OS X as well.

    Actually, it’d dead simple to install on Mac OS X, since OS X comes with Python, MySQL, and Apache. I’ve never tried it on Windows, though, so I’m sure you’re right about that.

  36. pk11 Says:

    hi frank,

    1) the irc channel and the django-user+dev forums are high traffic, you should be able to get help there
    2) as for editors: there is Vim+plugins, Emacs, TextMate or PyDev(refactoring, code completion, snippets etc.) just to give you a couple of choices
    3) besides the official Django book, there is this in the making:
    “Professional Python Frameworks: Web 2.0 Programming with Django and Turbogears” due in October
    5) I can not comment on windows but on *nix it’s super easy to install
    6) there are some screencasts (not on rails level but still):
    http://www.throwingbeans.org/django_screencasts.html
    http://blog.webfaction.com/django-screencast
    http://www.djangoproject.com/screencasts/model_syntax_change/

  37. Ryan Says:

    I work primarily in Ruby/Rails at work and on my own time. I’ve sought out, as a new years resolution, to learn a new language this year. That language is Python (which of course would entail django). I’ve also heard a lot of good things about it, and I can’t say (from experience) that I do or don’t think it’s better than Ruby/Rails. However, I’ve began sifting through a Python book, and I must say, as a beginner, I really, really like the Ruby language a lot more than Python.

    In theory, the open-ended block structures based on spacing/indentation is a great idea, but it’s almost too open-ended for me. I like the closure I get with blocks in Ruby. I absolutely love it’s readability, and it’s simply an amazing language altogether. Of course, it all boils down to an opinion, so I just thought I would share mine.

  38. Siddharta Says:

    Hi Frank,

    > There are no screencasts of anyone showing how they
    > do things.

    Here is one that I did a few months ago for the wikicamp.in event - http://www.silverstripesoftware.com/screencasts/wiki_in_15_mins.html

  39. cjlesh Says:

    Frank -

    While “not ready for prime time” yet, I do have a http://www.instantdjango.com up and running, and will soon finish my first tutorial.

    You can download something I call “instant django”, which is a no-installation-required development environment for Django, which runs on Windows. It even runs from a USB thumb drive. It mostly works for the official tutorials on the django project site.

    Check it out, and let me know about any bugs that you find. Don’t forget to read the disclaimer on the my site: I am a total newbie to django.

    -cjlesh

  40. eas Says:

    “Its been hell getting Django installed on Windows”

    I haven’t deployed on Windows, but getting it running with the dev webserver is really easy, and I’ve had no trouble turning around and running the stuff I’ve developed on Windows under mod_python on webfaction’s hosting.

    I don’t know about screencasts, because, I don’t find screencasts to be very useful, anyway. The pace is always off they are either too slow, or they breeze over something important, and I have to go back over it 10 times to try and make out what happened on the screen. Give me a well written tutorial any day.

  41. Jason Best Says:

    DJango was very easy to setup on Windows. Maybe you don’t understand Python at all? You should probably take some time to learn the language and how it works with your OS before attempting to build on a web application on top of it. Sadly the ruby on rails crowd got people started without “knowning” ruby. I am sure it will turn up some great maintainable web applications.

  42. George Says:

    I also recommend WebFaction (http://www.webfaction.com) for hosting. I have *seven* Django sites with them and I haven’t had any problem in the 6 months that I’ve been there.

  43. Lorenzo Bolognini Says:

    @Frank

    Django is super-easy to install on Windows: i’ve been using it for development on Windows 2003 Server and XP for over a year now and i never had a problem.

    Provided you have TortoiseSVN these are the steps:
    - checkout Django’s trunk
    - python setup.py install

    That’s it, really!

    If you need a nice IDE be sure to checkout PyDev (it’s an Eclipse plugin) but that’s really a pain to setup. Alternatively you might use Komodo Edit which is not mind-blowing but works fine… BTW wasn’t RadRails dead?

    L.

  44. Chris Williams Says:

    Lorenzo, RadRails is not dead. It’s just been handed over to new developers, and is now backed by a company: Aptana. You can grab RadRails at http://radrails.org/download_rails_rdt.php

  45. minutetraders Says:

    I think the most important question would be: how scalable a framework can be ? we are using Django but not sure if it can hold very high load … any experience ?

Leave a Reply


Powered By WordPress