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?

  • http://sdpurtill.wordpress.com/ sdpurtill

    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

  • http://sdpurtill.wordpress.com/ sdpurtill

    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

  • http://www.beercosoftware.com/ Chris

    In related news,

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

  • http://www.beercosoftware.com Chris

    In related news,

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

  • http://scobleizer.com/ Robert Scoble

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

  • http://scobleizer.com/ Robert Scoble

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

  • http://www.geise.com/ PXLated

    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. ;-)

  • http://www.geise.com PXLated

    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. ;-)

  • http://www.jumpcut.com/ Ashot Petrosian

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

  • http://www.jumpcut.com Ashot Petrosian

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

  • http://www.beercosoftware.com/ Chris

    “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!

  • http://www.beercosoftware.com Chris

    “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!

  • Dan Sickles

    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.

  • Dan Sickles

    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.

  • http://www.danshafer.com/onemind Dan Shafer

    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.

  • http://www.danshafer.com/onemind Dan Shafer

    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.

  • http://www.beercosoftware.com/ Chris

    @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.

  • http://www.beercosoftware.com Chris

    @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.

  • Michael Walsh

    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?

  • Michael Walsh

    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?

  • http://www.tomnipotent.com/ Tom Dean

    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.

  • http://www.tomnipotent.com Tom Dean

    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.

  • http://simonwillison.net/ Simon Willison

    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.

  • http://simonwillison.net/ Simon Willison

    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.

  • http://tapster.wordpress.com/ tapster

    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

  • http://tapster.wordpress.com/ tapster

    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

  • Sean

    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)…

  • Sean

    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)…

  • http://ajitk.com/ Ajit

    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!

  • http://ajitk.com Ajit

    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!

  • arjun

    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.

  • arjun

    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.

  • http://www.techcfl.com/ Robert Dempsey

    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!

  • http://www.techcfl.com Robert Dempsey

    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!

  • Pingback: share.websitemagazine.com

  • http://www.beercosoftware.com/ 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.”

    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.

  • http://www.beercosoftware.com 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.”

    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.

  • Evan

    How different is Django from Drupal?

  • Evan

    How different is Django from Drupal?

  • http://www.goodluckwithyourprojects.com/ Robert Zolkos

    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.

  • http://www.goodluckwithyourprojects.com Robert Zolkos

    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.

  • http://www.b-list.org/ James Bennett

    @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)?

  • http://www.b-list.org/ James Bennett

    @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)?

  • http://nerkalog.lumpus.info/ nerkles

    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.).

  • http://nerkalog.lumpus.info/ nerkles

    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.).

  • http://jacobian.org/ Jacob Kaplan-Moss

    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.

  • http://jacobian.org/ Jacob Kaplan-Moss

    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.

  • http://jacobian.org/ Jacob Kaplan-Moss

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

  • http://jacobian.org/ Jacob Kaplan-Moss

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

  • Rob

    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.