"Django vs. Rails" Considered Harmful · Monday, July 18, 2005

Late last week, a new Python web application framework called Django was released into the wild. Like the immensely popular Ruby on Rails, Django was extracted from an existing production application. As a result, Django appears to be a very strong foundation for building high-traffic web applications in Python. Its stable, Pythonic, WSGI-compliant, and fairly well documented. In addition, there is enough buzz surrounding Django that I think it could shortly become the dominant Python web application framework. This would almost certainly be a good thing for the currently fragmented Python web application world.

But, I think there is a problem brewing. I have already seen a few weblog posts around pitting Django against Rails. As a Python lover who also thinks a lot of Ruby on Rails, I sincerely hope that we can avoid the ongoing mudslinging war going on between the Java crowd and Rails (I’m looking at you David!). Nothing good could come from a Django vs. Rails war except distracting both sides from proving the real point — dynamic languages make you more productive.

Rails isn’t great just because of the patterns and practices, no matter what David says. Sure, MVC, ORM, and test-driven development have a lot to do with Rails being great, but I honestly don’t believe that you can clone Rails in a language like Java or C# without losing a lot of the simplicity and power that a dynamic language brings.

One day, “the enterprise” (does anyone else hate that term?) could wake up and realize the power of dynamic languages, but not until they are beaten over the head with the information for years. In the same way that the Rails community has convinced web application developers to drop Struts/Tiles/Hibernate/J2EE, a united front from dynamic language supporters could cause more people to embrace Python, Ruby, SmallTalk and the like.

Django and Rails are on the same team, along with Seaside, and any other projects that show how innovative and productive you can be with dynamic languages.

So, I for one hope that the Django and Rails communities won’t start “Django vs. Rails” wars. Instead, I hope that they use each other to help innovate and improve their respective projects. At the same time, don’t be afraid to refer people to both projects. In the end, a victory for Rails is a victory for Django, and vice-versa. The more people who use Python and Ruby, the better software will be.

Comment

  1. I haven’t seen many mud slinging wars. ROR is probably one of the best things to happen to python in the past year or so. In fact I believe ROR was a great impetus to the release of Django and now TurboGears. Competition and choice (python tends to breed this, perhaps because it makes implementation rather easy…) are usually good things. I think this is more a case of pythonistas who don’t want to learn ruby just to have an easy way to develop web apps.
    Monopolies are usually bad.
    matt    1774 days ago    #
  2. Matt, I couldn’t agree more. At the time I wrote this post, Django had just been released, and I wanted to make sure that people in the dynamic language world knew that RoR was great for not only Ruby, but for Python, and that the same could be true for Django.

    If anything, TurboGears, Django, and Rails can all push each other so that the dynamic solutions stay well-ahead of the “enterprise” heavier solutions like ASP.NET and Struts/Hibernate/Java.
    Jonathan LaCour    1774 days ago    #
  3. Django will have quite a ways to go before it becomes the dominant Python web application framework.

    This place is currently being held by a little framework apparently easily forgotten about: Zope.
    Martijn Faassen    1771 days ago    #
  4. Comparisons like this serve one very important purpose – they enable you to choose a framework and, perhaps more importantly, to learn about web frameworks even if you’re not about to pick one. Knowing that Rails, Django and Seaside are all good won’t help you decide among them; the comparisons will. While mudslinging isn’t desirable, we’d all lose if people stopped making these comparisons.

    I get the idea that Django is on its way to becoming THE python web framework; is that correct?
    Kartik Vaddadi    1769 days ago    #

commenting closed for this article