Ruby on Rails wins the marketing war

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.

14 thoughts on “Ruby on Rails wins the marketing war”

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

  2. I never said that David Heinemeier Hansson’s marketing is a bad thing. On the contrary, it’s a hugely powerful thing. As you point out, the great marketing has led to an active community, which does benefit the whole project.

    The Plone members, I believe, have done a great job in marketing Plone as a CMS. I don’t think I’ve seen it marketed as a solution to the standard CRUD application needs.

    You’re absolutely correct that many people don’t care about Python advantages that I’ve pointed out. Generic functions *could* be used to help create a web framework that is extensible in some great new ways that people would care about.

    I don’t consider it heresy to point out the similarity between Ruby and Python. They are very alike in features, even if the syntax is a little different.

    Subway can bring the integration that Rails has to Python. My point, though, was that the people working on Subway should not expect that creating something “similar to Rails” is going to create a similar draw to Python and Subway. The only way that it can do that is to have something worth talking about and to get people talking about it.

  3. I’ve played with Rails, it’s very slick. Python could get a lot of traction from something as integrated, easy, and well-documented as Rails. Hansson has created a buzz around Rails which is creating buzz around Ruby.

    Funny that Java programmers are attracted to Rails; Java started out as 99% marketing as well.

    Greg Jorgensen

  4. especially for people coming from a java servlet+templating environment, WebWare (http://webwareforpython.org) + Cheetah (http://www.cheetahtemplate.org) comes *very* close.

    my only frustration as a relatively new user is – surprise – documentation, and comprehensive examples that clearly tie all the components together in the new user’s mind. i can sympathise with the webware lead developers preferring coding to documenting, but i think this is an impediment to building a larger community around webware – which ruby on rails appears to be doing quite well.

    on the whole it’s been a pretty easy transition for me (i’ve been using python for a couple months now). still discovering things here and there, though, that i really should have known about early on. complete, coherent documentation and a couple start-to-finish typical business-oriented database applications that lay bare the entire scheme would have taken care of this. i should note here that one of the lead developers of webware blogged his disdain for the word “enterprise”, which he considered to be the antithesis of creative software development. that may be, but it would be in webware’s interest to cultivate “enterprise” developers rather than snub them.

    i hope i haven’t sounded too critical – the fact that i’m using java strictly for maintenance and doing all new web apps in webware should speak louder than anything i’ve said here that sounds so.

    webware is gearing up for a 0.9 release, which i’m looking forward to.

  5. “For the Java-centric crowd, how about Snakelets http://snakelets.sourceforge.net/ which is a quite capable and relatively easy to learn Python app server. It has an embedded web server, which I believe Rails does also.”

    Actually, it is Ruby itself that has the built-in Web server. Rails is Yet Another Ruby App that makes use of it.

    In fact, despite the hype about Rails, it is mostly a clever application of intrinsic Ruby features, bundled up with user-friendly metprogramming and coding conventions.

    Not to knock the greate work down by the Railsers, but it is more of a developer UI win than a feat of techincal programming. It abstracts the mundane, repetitive tasks, and uses introspection and reflection to make reasonable guesses based on small amounts of code, saving the developer the tedium of coding the obvious.

    On the downside, the hype has gotten tiresome, and the engorged set of libraries and APIs means you spend far more time learning to do things The Rails Way than using Ruby directly.

  6. One element that is lost in the shuffle is Rail’s connection to 37 Signals. If Rails hadn’t been used in and prominently connected with some very well designed, accessible, popular web applications like Basecamp and Ta-Da lists, it would never have attracted the attention it has.

  7. I think what Python really needs in the web framework area is a LEADER! Someone to direct the scattered efforts into a single unified project. Someone to mediate all of the software-design fights that people are inevitably going to have, someone to spread propaganda and inspire us, someone to basically do what David Heinemeier Hanssen has done!

    David’s a great leader. He sets up websites to facilitate communication within the community, he gives talks, he posts on the mailing lists, he gives spirring speeches on his blog about the success people have been having and the pure joy its brought them, he manages patches, fixes bugs, closes bug reports, and STILL manages to find time to jump on IRC. The guy even shelled out cash to get a t-shirt quality Rails logo made by the dude who designed the Firefox logo!

    It was also very smart, as someone pointed out earlier, to develop Rails alongside a real-world application, and not to start hyping it until it was ready!

    I think one of the things that made people enjoy Rails so much, however, was that David doesn’t just talk about how to use Rails on his blog, but he shares the design philosophies that he’s accrued from his development experience. His blog doubles as a fountain of software-design wisdom.

    Python needs a committed web-leader like this. Someone who could focus the energies of the authors of the 239874312980740982374 web frameworks out there to produce a well-planned and documented framework (or two, for the different design preferences people may have).

    I mean, Python definitely has the manpower — there’s no question that far more people are using Python than Ruby.

    The main problem for Python seems to be organization and communication. There isn’t (to my knowledge) a good website like RedHanded (http://redhanded.hobix.com/) which brings together all the various blogs from major leaders in the community.

    The Python.org site NEEDS to be overhauled too, and SOON. That thing is embarassing. 🙂 It’s hard to navigate and it’s got a lot of outdated or redundant information (I mean, 50 beginner tutorials is not a good idea. 😉 The main goal should be to concentrate all the great information in one place, and make it EASY to access.

    This would actually be a good project for the new Python UberFramework! We could create a new Python.org with it, featuring: a Wiki, a version release manager, a better PyPI, a blog aggregator, news, forums, etc. And since we’d be making a real-world product at the same time as developing the framework, its warts would become evident immediately.

    So, how bout it guys? Who wants to be our new Leader!? 😀

  8. CherryPy does AJAX with either xmlrpc or jsonrpc. jsonrpc is far superior to xmlrpc parses faster, and uses less bandwidth. Most people who use java enjoy suffering so it is only natural they use ruby on rails. I am running cherrypy on my site and have a jsonrpc demo. Also available is cherryshell an python interpreter embeded that controlled by webbrowers, makes use of jsonrpc and ajax.

  9. It’s a shame that CherryPy doesn’t run behind Twisted, because I seriously had considered using it. For Zesty News, Twisted was more important than CherryPy. (And Nevow has handled things nicely, though I think CherryPy is a little slicker.)

  10. Hy,
    I have a PHP/Java background. But I got tired of PHP’s design flaws, got tired of having to reinvent the weel and write my own framework. I also program in Java. I have managed to get my boss to think that Tapestry is actually good 🙂 But even with beautifull frameworks like Tapestry, Hibernate and Spring, it’s still a very expensive technology for small-medium projects.

    I am looking for a new technology to cover that void. I stoped and looked at both Python and Ruby. Python is actually quite good. The frameworks are allready there. The problem is the Python’s community doesn’t realize ModPython and FastCGI are actually the way. Also, I had trouble finding documentation. And man, those oficial Python sites are ugly ! And maybe hackers take pride in them, but man, they need to change their attitude.

    Ruby is still too young. And I don’t like the hype. It’s too fast too soon. Rails doesn’t compare to J2EE. It doesn’t even come close. It’s way back when compared to Python’s frameworks.

  11. Python has the tools, but they lack the integration. And you’re right about the docs. For many Python projects, you really need to refer to the source. Luckily, the source is generally quite readable.

    When you say “Rails doesn’t compare to J2EE”, what do you mean exactly? As has been discussed recently, the “doesn’t scale” argument is often fallacious.

    Unless ActiveRecord has come a long way since I last looked, Hibernate is most definitely a more powerful OR mapper that can deal with many more situations. ActiveRecord is fine for new databases, but not so good for existing, possibly strangely organized ones.

Comments are closed.