For my current project, I have integrated a few different open source Python projects that give me power at least equivalent to that of Rails. The pre-packaged integration is only one part of it, though: the Rails guys are good at marketing their ideas. Not only are they good at marketing to Ruby audiences, but they also have done a great job of getting Java folks to write about it. Here’s an example: Ajaxian Blog: Ruby on Rails 0.11 includes native Ajax support.
Rails 0.11.0 is out on the street and I’m especially proud of the Ajax support we’ve been able to include. Instead of trying to soften the blow of doing client-side Javascript libraries as many others are doing, we’ve gone ahead and more or less removed the need for hand-written client-side javascript entirely.
This is done by off-loading the creation of DOM elements to the server side, which returns complete constructs that are then injected live through innerHTML. While this method is slightly more verbose than just peddling data across the wire, it’s immensely easier to develop.
For those who have been following Python web frameworks, you might remember that Woven and now Nevow have both offered a LivePage feature which does exactly this. It does more, in fact, allowing you to easily call the client side from the server whenever you want, and not based on an explicit request.
Subway might help, but for anyone who has read Seth Godin’s Purple Cow aiming to be “similar to Ruby on Rails” is not a likely way to gain mindshare. To be sure, Subway will help people who want to quickly put together a Python webapp, but don’t expect it to heavily increase interest in Python web development the way Rails has for Ruby. To do that, there would need to be startingly cool new features.
In one sense, Rails had it easy marketing-wise, because web development in Java is a pain in the butt. To outdo a dynamic system like Rails is more difficult.
Of course, I don’t need convincing, because I’m already a Python user. But, as far as convincing other people go, Python does have some advantages: Python apps can be nicely packaged up as Windows exes and Mac apps, generic functions are an important feature for certain types of problems, and Python is already entrenched in a number of places.
The title of this post is a bit over-the-top, I know. There is plenty of room for a variety of successful tools. But, successful marketing, more than anything else, has made Rails what it is today.
> the Rails guys are good at marketing
> their ideas.
You are right and at the same time you seem to miss the point. David Heinemeier Hansson excels at this “marketing”, or genererating hype if you will. But that is not a bad thing, on the contrary. Rails is still a very young project. He has been able to single handedly build a thriving community around it, by no means a small feat. Through this community and the considerable amounts of interest he generates, Rails will continue to gather mindshare for the foreseeable future at a rate which no comparable Python framework can offer (except perhaps Plone).
> Python does have some advantages
You are right again, but these are not advantages most people will take into account or care about. They *will* look at the fact that you can get up to speed with Rails in only a few days and that it offers true integration without any need for DIY customisation of seperate components (basically what you did).
People will also look at the fact that within a few months the Rails community has created a truly great documentation package: videos, extensive Rubydocs, a wiki, how-to’s, active mailing lists and an active IRC channel (which are archived).
In the end anyone can experience that Rails *does* deliver on its promises. Just follow the excellent tutorials. Undoubtedly you might have the same experience with Python, but it will take much more work to get things going and it will lack the gloss or neatness of Rails.
For me Python is a nearly ideal language. But Ruby is not so much different (herecy here
, it even has some features which I would like to have in Python itself (code blocks). In the end, the benefits of using Rails far outweigh any benefit the use of Python, The Language, might offer me.