Wed

Dec 7
2005

Tim O'Reilly

Tim O'Reilly

Ruby Book Sales Surpass Python

I was just looking at our BookScan data mart to update a reporter on Java vs. C# adoption. (The answer to his query: in the last twelve weeks, Java book sales are off 4% vs. the same period last year, while C# book sales are up 16%.) While I was looking at the data, though, I noticed something perhaps more newsworthy: in the same period, Ruby book sales surpassed Python book sales for the first time. Python is up 20% vs. the same period last year, but Ruby is up 1552%! (Perl is down 3%.) Perl is still the most commonly used of the three languages, at least according to book sales, but Python and now Ruby are narrowing the gap.

Here are the trend graphs for books on ruby and python, respectively.

ruby.gif python.gif

(Note that the scale on the two graphs is not identical, and that the graphs show two years of data, while it's only recently that ruby has taken the lead. Note also that the downturn at the end of each graph is an artifact of the Thanksgiving holiday in the US. Book sales take a steep dive that week every year, and recover the following week.)

When I sent this tidbit around to our editors list, Jonathan Gennick remarked:

Largely due to Rails, I'd bet. Interestingly, I just happen to have been talking today to David Ascher and others about Python web frameworks. I get the idea that there is much (or at least some) wailing and gnashing of teeth in the Python camp over the ascendency of Ruby due to Rails. TurboGears and Django are two frameworks I'm starting to learn about, but I don't know that either of those is truly an answer to what Ruby has in Rails.

Rob Orsini replied:

A friend of mine, Ben Bangert, is working with Ian Bicking on a direct port of Rails to Python called Pylons. They've chosen all the best of breed components from the Python world for Pylons.
Ruby on Rails is indeed, as Jonathan suggests, the driver of the interest in Ruby, which, after all, has been around for years without generating the kind of surge it's seen in the past six months. But as you can see, we're on the fence about whether or not Python has an answer to RoR (and we're not even asking the question about Perl!) What do you think? Will Python hackers come up with something as good or better?

P.S. Added some other trend graphs in comments, but it looks like MT doesn't allow images in comments, so I'll add it all here in the body of the entry.

Don, you asked for numbers on PHP. I'm sure others would like to see the same for Perl, and the year on year graphs for Java and C#, and I realized I should show Javascript as well, since it's seen a huge jump due to the AJAX buzz. So here are the rest of the graphs. Note that we get a new week's data synced in every Wednesday, so these graphs show the post-Thanksgiving rebound I mentioned yesterday. And remember, they aren't all to the same scale.

Here's PHP. Still the largest of the "scripting" languages in terms of book sales (about 3x Ruby and Python), book sales have had a gradual downward trend over the past two years, but with the last twelve week period pretty much flat with the same period last year:

Here's Perl. Bill -- you noted that the newness of books can skew the data, and you're right. Look at the June/July bump in Perl when O'Reilly published a number of new Perl books. But note that it doesn't translate into what appears to be a sustained upward trend, as the two Ruby books from the Prags have done:

Here's Java. The uptick I noted in my summer posting (referenced above) seems to have worn off, and the downward trend resumed. However, Java is still by far the most widely used programming language, if book sales are any indication, about 2x C#, 2.5x PHP, 4x Perl, and 9x Ruby/Python:

Here's C#. I'm not sure what's driven the recent upward trend, and don't have time to delve into it right now, as I'm on the road. Would love any insight from readers.

c#.tiff

And finally, here's Javascript. Unlike Ruby, there are no new books driving this spike.

javascript.tiff

tags:   | comments: 61   | Sphere It
submit:

 
Previous  |  Next

0 TrackBacks

TrackBack URL for this entry: http://blogs.oreilly.com/cgi-bin/mt/mt-t.cgi/4428

Comments: 61

  Asbjørn Clemmensen [12.07.05 04:39 PM]

I recently started learning Ruby and Ruby on Rails, and I've never seen a language as logical and intuitive. I develop websites on a freelance basis, and this far I've been using the typical LAMP setup with P being PHP 4.
The only downside to Ruby, as far as I can see, is the lack of hosting options - PHP is far more popular on the website front, it seems, and I'm not sure that's a fact I agree with.

  Peter Herndon [12.07.05 05:40 PM]

Try looking at your Python catalog. You've got the definitive reference books in Python In a Nutshell and the Python Cookbook, which is great. You've got Python Programming, which isn't that good a book. It's not bad, but it's not great either. I've got Learning Python 1st Ed., and it's a decent intro, but I don't need to buy the 2nd Edition. Python Programming on Win32 is excellent, but hasn't been updated since its release. I'd actually buy a newer edition of that, if it were available. Python and XML was obsolete when it hit the shelves, and it is MASSIVELY out of date now. And you've just released Abe Fettig's Twisted book, which I've ordered, but have not yet received -- it's back-ordered, at the moment.


So, you have two good reference books, and a just-released topical book. Your breadth is poor, that's all there is to it. John Goerzen's Python Networking book is definitive on that subject, but it isn't an O'Reilly book. There are a few reasonable books on Zope and Plone out there, again none from O'Reilly. There's a Manning book on wxPython due soon, which I intend to pick up when available. But there are very few books available that target a specific Python subject. I know it isn't easy, as they probably don't sell large volumes, they are quickly obsolete, and it's probably hard to find writers. After all, picking up most specific Python subjects is relatively easy. And the hard ones are usually *really* hard, e.g. Twisted.


For what it's worth, I'd quickly buy books on the following: Python infrastructure projects -- aap, scons, buildbot, trac; a Twisted "Bible", which I've heard Fettig's book is not (c.f., Tommi Virtanen's review); a book on PJE's PEAK and PyProtocols; an updated Python and XML; a book on Python, RDF and the semantic web (4Suite and Redland are nice large topics); a book each on PyQt and PyGTK; and finally I'd like to see a good book on medium-to-advanced general Python programming.


Everybody and their brother has jumped on the RoR bandwagon, and a number of well-regarded Java types have jumped to Ruby, rather than Python, (Martin Fowler, the Pragmatic Programmers) thus influencing the average Java coder. These two phenomena give Ruby books, as well as the language as a whole, a huge boost which Python has not enjoyed. That's not to say Python isn't popular, it certainly is, but the rapidity of Ruby's rise is indeed remarkable.


I, for one, don't entirely understand it. Python has some great web frameworks, though none hit the scene with the marketing oomph displayed by Rails (the first great working Web 2.0 apps, plus the excellent video, plus good docs, plus a well-spoken creator) -- at least not until *after* Rails hit, at which point they've lost the first-mover advantage (e.g. TurboGears). The other factor, Ruby's adoption by influential Java leaders, escapes me. I've looked at Ruby, briefly, but when I decided to leave Java behind, Python did and does fit my head better.


*shrug*


Anyway, there's my 0.000000002 cents...

  Mark Haliday [12.07.05 06:42 PM]

I gave Ruby and RoR a fair shot. Bought the books, went through the tutorials, etc. I just didn't care for the Ruby language though in the end. Granted it has some really cool things going for it: GEMS, Rubyforge, etc. - but, when it came down to a decision, there was something that "clicked" for me and it was Python and TurboGears. RoR is good, but I think you will see TurboGears picking up a lot of steam over the next 6 months.

  Tom Wilcoxen [12.07.05 06:47 PM]

Rails certainly is the hawker getting us in to try the tempting treats. But if Rails was built with PHP, Perl or even Python, I don't think it would have the uptake it does. There's so much compelling to Ruby that seems to sync with a lot of programmers.

David Hansson recently commented on the difference in 'aesthetics' with code samples of similar classes (Project in Python and Person in Ruby). When I look at those two one makes me happy and the other just looks like some more OOPish code.

I think there are some great frameworks out there in Python, but at least for me, without Ruby under them they just won't be as compelling.

  Anonymous [12.07.05 07:46 PM]

Peter Herndon,
Click on the link for BookScan data mart in the very first sentence, and you are taken to a previous post which starts:

"Based on data from Neilsen Bookscan, which aggregates point-of-sale data from about 70% of US bookstores, including Amazon, Barnes & Noble, Borders, and many smaller chains and leading independent bookstores..."

That undercuts your comments to a significant degree.

  Ben Bangert [12.07.05 07:49 PM]

I should note that Rob's message is a little off. Ian Bicking has had some great advice for me Pylons has developed, but he isn't actually an active developer on Pylons (he has enough projects of his own :). The other active developer to Pylons is James Gardner who wrote a web framework called Bricks before joining me on Pylons.

It's also not a direct port of Rails, but rather an extension of an incredibly flexible Python framework called Myghty (itself a port plus modifications of Perl's Mason). It's been configured to have controllers in a similar style to Rails (Rails wasn't the first with this style), and I've ported the Routes system as well as some of the useful helper functions I enjoy in Rails.

I am, as Rob said though, noting the interesting aspects of other frameworks and making parts of them available in Pylons.

Ian Bicking's input has been helpful as he's written a framework of his own (Webware), and some of the parts that make Pylons slick are using projects of his (PythonPaste, SQLObject, etc). For example, his exception traceback ajax explorer is really slick. :)

  David Heinemeier Hansson [12.07.05 07:53 PM]

Also realize that there are currently only two recent ruby/rails books on the market. Agile Web Development with Rails and Programming Ruby, 2nd Edition. So I suspect its the combination of these two titles that are pulling the vast, vast majority of the load. All the other titles deal with the old version of Ruby (1.6).

So the current catalogue of Ruby titles certainly look even more limited than the Python one. In any case, I'm extremely happy to see this data. Thanks for sharing, Tim!

  Kevin Bedell [12.07.05 08:20 PM]

Another important guidepost is the number of alpha geeks that are migrating over to RoR.

I've been knee deep in a RoR implementation over the last couple months and have run across a number of other folks that I knew from (primarily) the Java world.

Erik Hatcher, Bruce Perens, Sam Ruby and at least a few others have all been putting focus onto RoR. This -- in addition to my own work -- is telling me that this is a "real technical improvement" over the existing Java world.

RoR has been optimized for web app development in a way that makes it extremely productive. I'm convinced that a small, focused team of 4-5 talented developers using RoR could out perform a team twice as large using Java. The 4-5 person team could probably out perform a 20 person team if that team was 50% outsourced developers trying to work from a typical set of development specifications.

RoR has the potential to turn outsourcing of small to medium sized development projects on its head. The productivity gains are that significant.

Having used (and written a book on) Jakarta Struts, I think I'm in a decent position to hazard a guess. RoR is the most productive MVC architecture out there.

In many ways, RoR seems to represent the idea of "less is more" in an MVC frameword. Check Jason Fried's IT Conversations podcast -- he discussed the idea of agressively simplifying applications/products as a strategic advantage for small companies. Jason was the CEO of the company that employed the primariy developer of RoR. RoR seems to take this idea to heart in that it aggressively pushes convention over configuration.

That is, it gives you the opportunity to minimize the effort you spend accomplishing common tasks as long as you can live with the programming conventions RoR is optimized around. For me, at least, the dramatic productivity enhancements have been worth the compromize. I believe this will likely be so for many others as well -- especially once they realize how much time/money they can save by doing so.

  king mob [12.07.05 08:24 PM]

"I get the idea that there is much (or at least some) wailing and gnashing of teeth in the Python camp over the ascendency of Ruby due to Rails."



The only place I ever see this brought up is in Ruby-oriented articles.


Over at the "Python camp", maybe it's that we seem more interested in actually getting on with the coding than with engaging in debate over false dichotomies that come across more as "youngest child syndrome" than genuine attempts at dialogue.


But, y'know, if it makes your coding language better for you if it "wins"...

  Amr Malik [12.07.05 08:33 PM]

And there's also the fact that a lot of people are checking RoR out and learning Ruby from the older book or "PickAxe I" (which is fine except in very specific cases of new functionality)

Not to mention Why's excellent tutorial (http://poignantguide.net/ruby/) along with other tutorials.

As an "ex-python-Zope" users I must say that the compelling reason for me looking at Ruby again was definitely RoR and not Ruby itself. I had looked at around the start of the century, but I just didn't "get it". Maybe I'm just another lemming, but I did try Python and did bang my head against the wall of Zope, and it was just too complicated and awkward for me. As a disclaimer, I'm not a programmer, but more of a systems admin/architect type. So maybe I didn't really see the true Python side of things (but somehow Ruby just fits like a glove).. I must say that the OO makes more sense to me in Ruby than it does in Python. Not sure why.

Gotta admit though, IMO, Ruby won't be where it is in terms of up-take if it wasn't for RoR.

  Matthew J Desmarais [12.07.05 09:12 PM]

I think that Rails is neat stuff and probably stunningly useful for some web app developers out there. Once I'd played with rails a bit (enough to make it feel like technology and not magic) I found myself impressed by what the Rails team has done. I think that Ruby is a great fit for the ideas that David and the rest were having when they make it happen.

I've picked up Python again after about a year with Ruby and I must say that I'm having difficulties. I've grown used to the way that Ruby stays out of my way and Python is feeling very clunky right now.

The Ruby Test::Unit library makes clever unit testing a breeze; when I write ruby unit tests I find that all of my attention goes towards input selection and test quality. My experiences with the PyUnit library have felt much more like pushing a greased-up boulder around; a lot of effort and not nearly as much payoff.

I'll say that I may not have found the Python testing library that suits me. I might find testing easier in another framework, but I suspect that I won't be able to take the time to hunt one up.

Things aren't _all_ rosy in the Ruby camp though. The Ruby interpreter does suffer from some performance issues, and I know that this turn a lot of people off. It doesn't really affect me since I tend not to do very much time-sensitive processing, but I _am_ looking forward to the new VM that is supposed to be revealed with Ruby 2.0. There is also a lot of discussion around Ruby's threading model. A search of the ruby-talk mailing list archive will turn up a number of threads on the topic.

There was a time that I shouted Python from the rooftop, but then I met Ruby. I understand that for some of the earlier commenters, Python was the way that they thought. As it turns out, Ruby thinks like me and that's been tremendously gratifying.

  Os [12.07.05 09:14 PM]

It's doubtful that the Python folks can come up with anything as compelling (or elegant) as Rails. Why? Because Ruby is so good at creating Domain Specific Langauges (DSLs). Ruby's anonymous code blocks are a big part of what enables DSLs to be written so easily in the language. Python doesn't have them. Python's lambda's (and closures in general) are crippled as well, which also doesn't help Python's cause.

In general it just seems that Ruby is just more powerful. Mileage will vary of course; even though the languages have a lot of commonality (other than the features mentioned above) you usually find that a programmer will prefer one over the other Prefer is too soft a word here, usually people will like one and despise the other language - it's almost like a psychological ink-blot test of some sort. Some people (myself included) just can't stomach syntactically, significant indentation a 'la Python. Others seem to love it for some reason.

But, I think, what will be key to future growth is what happens to the Perl programmmers (many of whom are tired of waiting on Perl 6 and want a better solution for OO programming now instead of later). In general having been a Perl afficianado prior to moving to Ruby as my preferred language, I think they'll find that Ruby's philosophy is much closer to Perl's than Python's is to Perl. That means that going forward as Perl programmers go on to explore new languages, probably more Perl folks will find that they like the freedom of Ruby vs. Python's "There's only one way to do it" philosophy (which tends to feel very confining to Perl folks). Given the large size of the Perl community, if a good percentage of them decide that they should be (or want to be) learning a newer, more OO language it's a good bet that more of them will settle on Ruby. In fact you're probably seeing some of this happening already as you're seeing Perl book sales fall and Ruby and Python book sales rising. In the past Perl-ers would tend to hear a lot more about Python than about Ruby, so a lot of them went towards Python. Now, they're just as likely to have heard about Ruby (because of the popularity of Rails) so you're seeing more of them go in the direction of Ruby. I think going forward, you'll see Ruby grow faster than Python because of this.

There's no doubt that the great majority of Ruby's growth in the last year or so is owed to Rails. After people see what's possible in Rails and how Rails owes it's elegance to Ruby they tend to get interested in learning more about Ruby itself.

  Don Wilson [12.07.05 09:17 PM]

Can we get numbers on PHP books sold vs. Ruby on Rails sold?

  Phil [12.07.05 09:32 PM]

Django (djangoproject.com) is a fantastic competitor to Rails - it wasn't designed as a competitor (like so many other knockoffs), rather it was born out of real world projects after being in production use for a couple years. The developers of Django and Rails were in Chicago a few days ago for an informal debate -- see http://snakesandrubies.com/event/ .

  Larry [12.07.05 11:15 PM]

@Peter Herndon:
I think the idea of a book on Python and RDF is killer, I've wanted that book for a year and a half.

@Matz's fans:
Ruby's an intriguing language, in some ways it acts like a morph between perl and smalltalk, and Rails ties together a lot of pieces of web application development that had been ad hoc in previous frameworks. It's not surprising to see Rails getting ported to just about anywhere that it might be useful (there's even a couple of PHP implementations); but I get the sense that Rails is most effective if you are operating mostly on it's home ground. It will also be interesting to see how well RoR apps weather change once the original devs have moved on.

  PatrickGemmell [12.08.05 03:34 AM]

I think most of those who are buying Ruby books probably already own a Python book or two. You'd have to be fairly switched on to "scripting" languages to buy either, so I think the two user groups must overlap quite a bit.

Does O'Reilly Media have any statistics on the range of books any particular individual might buy?

Once I had bought Learning Python and Programming Python I kind of had everything I needed, it's not really surprising that I also own two Ruby books now, both of which I bought in the last six months.

  Ben [12.08.05 05:07 AM]

I know Python, Ruby, and Perl well. I've read through the RoR book. All things considered, I chose Catalyst (http://catalyst.perl.org/) for my last project. I'm not exactly sure why the limelight has fallen from Perl. No other scripting language has anything comparable to CPAN. The language supports procedural, functional (better than Python), and object-oriented style programming. You can write good, clean Perl code --- Perl Best Practices (http://www.oreilly.com/catalog/perlbp/) will show you how.

Regards

  Matt Lee [12.08.05 05:12 AM]

Great... what the world needs is *another* Python web framework.

This is why people are moving to Ruby on Rails.

  Kevin Dangoor [12.08.05 05:21 AM]

Phil, above, notes that Django is not a Rails clone. It's worth noting that TurboGears is also not a Rails clone (in terms of APIs).

What Django and TurboGears have in common with Rails is the full-stack approach, which was really a brilliant packaging idea that had eluded people before David showed the way. (Django *may* have been full stack before Rails entered the world, but it was locked away back in those days.)

TurboGears has attracted a lot of attention and has quite a community built around it, and it only gets better with the 0.9 release that's forthcoming. I've been approached by two publishers already about a TurboGears book, so things are already heating up to get a book out as fast as my co-author (Mark Ramm) can write it.

My point here is that the people working on Rails have done a great job showing what a web framework can be, and that we, in Pythonland, have been paying attention and are working on advancing the state of the art as well.

  Bill Seitz [12.08.05 05:21 AM]

The new-ness of Ruby/Rails books may be a big positive - there hasn't been a significant new Python book in a while (maybe there isn't a need), so demand has been met...

  Peter Herndon [12.08.05 06:56 AM]

Anonymous,



I read the link, and don't understand which argument of mine it undercuts. My argument was that O'Reilly in particular didn't have a very broad range of Python books. In fact, no publisher has, and though O'Reilly's range is broader than others, a large portion are obsolete. Finally, I gave suggestions as to which books I'd like to see, and that if new, good Python books came out I'd buy them.



The fact that Ruby has only two good, recent books (as per DHH), and those two books are more popular at the moment by far, doesn't invalidate my theory that if more Python books existed, they'd sell, though in small numbers. N.B., in my original post I mentioned that the market for Python-based, specialized subject matter books is inevitably going to be small. But that doesn't mean I don't want them. ;) Can O'Reilly (or any publisher) make a profit on that? I don't know.



I guess at the end of the day, my "argument" was simply that I want more good books, that Ruby never fit my head, and that between Rails and the various Java "thought leaders" embracing Ruby, there's a solid set of reasons for Ruby's greater mind-share at the moment. Python's always had marketing shortfalls. But it's still my language of choice.

  Curt Hibbs [12.08.05 07:06 AM]

Peter, I think you'r earlier post, while not actually saying this, seemed to imply that the numbers were skewed by the nature of O'Reilly's Python catalog. Reacting to this, the responder was pointed out that the numbers reflect sales of other publishers, too.

  Ross [12.08.05 07:14 AM]

Books I would buy without hesitation:

- Django: The Definitve Guide
- Ruby in a Nutshell (updated to 1.8.2)
- Ruby on Rails Cookbook

  Peter Herndon [12.08.05 07:28 AM]

Oh, that makes sense. Sorry, my mistake. I think that the current set of available books certainly has an influence on book sales (bad or obsolete books don't sell, good and current books do), but I didn't mean to imply that O'Reilly's catalog is the cause of the lesser growth rate. In no way could that be the case, particularly not with these numbers. There might be some truth to the thought that a technology won't take off until there's a good book or two available on the subject, but while a good book might be necessary, I don't believe that's sufficient. And there will always be exceptions to that rule, too.

  Marcus Ramberg [12.08.05 07:48 AM]

Tim wrote:

>But as you can see, we're on the fence about whether or not Python has an answer to RoR (and we're not even asking the question about Perl!) What do you think? Will Python hackers come up with something as good or better?

And why aren't you asking the question about perl? There are several MVC Web frameworks out there, including long time runners like OpenInteract, more lightweight CRUD aimed framworks like Maypole, and Catalyst (which I happen to be one of the developers of). How come you write off these frameworks without even consideration?

Even with a slight decline in sales, it should be quite clear that the perl user base dwarfs both the ruby and python communities.

  Greg Wilson [12.08.05 07:55 AM]

A previous poster said:

"I get the idea that there is much (or at least some) wailing and gnashing of teeth in the Python camp over the ascendency of Ruby due to Rails."

The only place I ever see this brought up is in Ruby-oriented articles.

Not true: I'm a long-time Python user and advocate (helpedget it into the undergraduate curriculum at U of Toronto, for example), and I've been gnashing my teeth about Python's thrashing in the web space for quite a while (google http://www.third-bit.com/blog/ for examples). As a colleague said a few weeks ago, "Python seems to be about the language; Ruby seems to be about the applications."

And w.r.t. JavaScript's spike, that's pretty clearly AJAX-inspired, no?

  Lars Balker Rasmussen [12.08.05 08:05 AM]

"But as you can see, we're on the fence about whether or not Python has an answer to RoR (and we're not even asking the question about Perl!)"

Why not ask the question, when the answer is already here?

Why wouldn't O'Reilly be interested in a book on Catalyst (http://catalyst.perl.org/), which also has a lot of momentum right now? It's not "RoR done in Perl" as some would have it, but is instead focusing CPAN (after all, Perl's greatest strength) onto the MVC paradigm.

RoR includes its own ORM (Active Record), whereas Catalyst can easily use any available on CPAN (Class::DBI, DBIx::Class, Tangram etc) or for that matter, none at all.

RoR has its own idea on how the View should look, whereas Catalyst leverages the skillset your organisation may already have in place on the View side. You can write your templates in any templating language available on the CPAN (Template Toolkit, HTML::Template or HTML::Mason being the current favorites), or even PHP!

  Nils Kassube [12.08.05 08:42 AM]

Lars,
it is an _advantage_ of RoR that the framework is - in the words of its creator - "opinionated". RoR development is focused on making it easy for users to do "the right thing".

  Jacob Kaplan-Moss [12.08.05 08:52 AM]

Hey, it's great to see the interest in a Django book! Actually, Adrian and I sent a proposal off to O'Reilly for just that book about a week ago and we're waiting to hear back... we'd love nothing more than to see a book on Django under the O'Reilly mark.

How about it, Tim?

  Lars Balker Rasmussen [12.08.05 09:20 AM]

Nils,

I don't disagree, but it's not a perfect fit for all people. Of course, nothing is ever a perfect fit for all people, but if you want to stray from the path David has set, you have a lot of work ahead of you.

Having programmed in primarily Perl over the last decade (with detours into less flexible languages), I have a hard time understanding why people would want to avoid having the option of doing things another way, but to each their own :-)

And just because Catalyst gives you the freedom to do your own thing (or leverage existing kloc's of "doing your own thing"), doesn't mean the framework isn't (heavily) opinionated towards DBIx::Class + TT.

Please note that nothing I've written here is a slam on RoR; heck, I even bought the RoR beta book. I'm just wondering about Tim's curious stand on Perl.

  Jeffrey McManus [12.08.05 09:33 AM]

I've never really understood the notion of book sales as a proxy for popularity of a language, but it's your business, so who am I to tell you what's what. But it always seemed like book sales is a very inexact proxy. It may be that the languages that get used more sell more books, but maybe books on Java (or C#, whatever) sell more because that language is harder, or newer, or marketed differently, or open source.

There's another factor that I believe is going on in the .NET world at the moment. With the recent release of .NET 2.0, .NET developers are *significantly* under-served by technical books. I say this as someone who co-authored three books on .NET and had to share in a microscopically thin slice of the kajillion-book market for .NET 1.0 books when that topic was "hot". It's still hot (particularly in the area of web development, which to my mind has always been the most compelling aspect of .NET programming).

  Robert Hicks [12.08.05 10:20 AM]

Are book sales a good indication? I don't think so because I buy books just to look at the subject and not necessarily to adopt that topic.

  rodney [12.08.05 10:43 AM]

Perl suffers from a divided community. While the Perl community dwarfs python and rails, the Catalyst or Maypole communities certainly don't dwarf the Rails community. Perl is divided. Rails, Django, and Turbogears have nice reference sites, docs, tutorials, blogs, visibility.

The other issue, though I love Perl dearly, is that people deciding on technology today are hesitant to jump on the train knowing it's the 11th hour of Perl 5.x Difficult to imagine porting things to p5+Catalyst only to have to learn p6 around the corner and migrate what you just migrated. I sure hope Perl 6 comes to life very soon, it could bring some things together

  Mark Haliday [12.08.05 11:10 AM]

The problem with Perl's Catalyst is pretty straight forward: Try to install it on Windows. Yes, it can be done, no it is not easy to do. I can get RoR or TurboGears up and running FAST. When it comes to deployment though, RoR does suffer here. Its not the most straight forward thing to deploy to a production server unless you drop Apache and go with Lighttpd you may not be happy with the performance. Granted things like Zed Shaw's Rails Runner will help things out, but its alpha software at best at this point. I'm sure Catalyst can probably outperform RoR and TGs, Perl is very, very fast - theres no denying that. But again, try to setup Catalyst on a Windows box and see how far you get.

  Os [12.08.05 11:40 AM]

The other issue, though I love Perl dearly, is that people deciding on technology today are hesitant to jump on the train knowing it's the 11th hour of Perl 5.x ... I sure hope Perl 6 comes to life very soon, it could bring some things together

For those asking "but what about Perl?" this is exactly why Perl is essentially 'out of the game' right now. Everyone knows that Perl6 will change things in Perl-dom radically, yet a real Perl 6 implementation (not the Haskell-based one, Pugs, which seems to be primarily a testbed for ideas.) still remains elusive. Perl-land seems to be on-hold waiting for Perl6.

In the meantime, a good percentage of the Perl natives are restless and Ruby looks mighty appealing to them as it seems to offer the flexibility they're used to. Again, I see this as driving Ruby's growth over the next few years.

PHP migration is a factor as well - it also has a very large user base (similar in size to Perl's or bigger?). PHP is an introductory language.... Perhaps as we see more PHP users' programming skills improve they'll be hungry for a language that can grow with them. Lots of them are finding Ruby via Rails right now.

As far as book requests go... I'd like to see more Advanced Ruby titles. Ruby has a lot of depth and new techniques for taking advantage of it's power seem to come out regularly.

  Dave [12.08.05 11:44 AM]

@Mark
There is a PPM repository at http://theoryx5.uwinnipeg.ca/ppms/ so installing Catalyst is as easy as typing "i Catalyst" on the ActivePerl ppm shell.

  Brett Morgan [12.08.05 03:58 PM]

The one thing that RoR has over java, python, perl and lisp is that it has one clear path. There aren't any choices in which web framework, which orm framework, which javascript library to integrate to do ajax. It all just works out of the box.

This comes from having a charismatic leader who is taking the best of breed choices, and making it into a single usable product. The time to first success on building a web app on rails is of the order of ten minutes. You spend longer than that evaluating choices on all the other platforms.

  Kevin [12.08.05 04:06 PM]

I'd like to second what others have said about Python's poor selection of books out there these days, not to mention oreillynet.com hardly touches it outside of some XML and occassional cookbook articles. I used to regularly buy computer books, but these days, I regularly work with wxPython and Python in general, and I find that there just isn't much out there to buy except for yet another "getting started" book. Python has several web frameworks, but no one is talking about them. wxPython at one point was getting half the downloads Python *itself* was getting in a month, but again no one is talking about it.

Cookbooks, getting started guides, and references are okay, but I want expertise, not miscellaneous tips and tricks submitted via readers. If I want to look up a function, or get started with Python, there's tons of stuff on the web for that. But in-depth discussions on issues like writing an app with wxPython, including learning how best to approach various cross-platform issues? Or exploring Python Unicode support and how to move over an ANSI-based Python app? Or which web app framework is best for what purpose? I had to spend hours upon hours learning about this myself because I didn't find many tutorials or books on it. I dropped TurboGears not because it didn't have promise (frankly, it looked very impressive), but because it didn't have enough documentation and I didn't have time to dig deeper into what mistakes I was making while using it. These projects can't really be blamed themselves, they're dependent on volunteers and thus they are dependent on promoters to document and promote their projects. But why aren't publishers looking at this issue?

For most any other language, lots of books from experts are available on specific topics, but on Python, that's not really the case. I don't think it's that people aren't using Python, I think it's just that for whatever reason, publishers like O'Reilly are overlooking the market or not realizing what information Python programmers actually want. Where are the O'Reilly authors when you really need them? :-)

  Ben Bangert [12.08.05 04:08 PM]

A slight correction, is that Pylons is not actually aiming nor desires to be a direct port of Rails to Python. It also incorporates a lot of framework neutral concepts and projects that Ian Bicking has written. The other main contributer is James Gardner, who wrote his own web framework before joining me on Pylons, called Bricks.

The weirdest thing about all these people saying how great it is that choosing a ORM, framework, javascript library, etc. was done for them with Rails, seem to ignore that many of them said just sentences earlier how great their "flexibility" was with Ruby vs the "there's one way to do it" Python way. If Ruby is enjoyed because of its expressiveness and flexibility, where is the same flexibility in ORM's and frameworks?

I'm aware there's Nitro, and other Ruby web frameworks, yet no one ever mentions them in favor of the "one obvious way" to do web programming in Ruby... Rails. Ah.. the irony... :)

  David Heinemeier Hansson [12.08.05 04:56 PM]

No irony, just different levels of abstraction. What you need in language design is different from what you need in framework design and composition.

It would seem that Rails is applying Python's language theme of "one way to do it" to the framework level while most Python frameworks are applying Ruby's "many ways" to the framework level.

So that leaves Ruby on Rails with wide language, narrow framework. Where a lot of Python frameworks are narrow language, wide framework.

Not saying that one is better than the other (at least not in public ;)), just that its interesting how they differ.

  Dave Smith [12.08.05 08:48 PM]

I wonder if market saturation might be an additional factor. There's more area under the curve for Python books than there is for Ruby, but little of that is new, or at least not new that's above the intro level. I have more Python books than Ruby/Rails books, but the Python books are all more than a year old.

  Ben Bangert [12.08.05 08:50 PM]

Obviously different levels of abstraction. I was referring to the irony that the language theme is reversed at the framework level.

There are Python frameworks with a wide language and narrow framework. Perhaps you could be more specific about which Python framework(s) you're referring to?

  DougHolton [12.09.05 11:06 AM]

What are the numbers for vb.net?

But it seems web development is what is driving most book sales, maybe because it is easier to make money in that area. And in the domain of web development, there is PHP, Java, ASP.NET, and Ruby on Rails. Those are the kings, and ruby on rails is the easiest of them to use (although PHP is quite easy as well).
Python, I'm sorry, has weak metaprogramming support to accomplish what RoR does as elegantly.

Those looking for metaprogramming-rich web frameworks for the java and .NET platforms, see grails + groovy (on the jvm) and castle + boo or nemerle (on the clr). Neither are at a stable or production state though like PHP and RoR are:
http://grails.codehaus.org/
http://www.castleproject.org/index.php/Main_Page
http://boo.codehaus.org/
http://www.nemerle.org/

  Mark Haliday [12.09.05 01:35 PM]

There is a PPM repository at http://theoryx5.uwinnipeg.ca/ppms/ so installing Catalyst is as easy as typing "i Catalyst" on the ActivePerl ppm shell.

Tried this from ActiveState's ppm shell, errored out. 'Catalyst.ppd' could not be found.

  Claus [12.10.05 08:36 AM]

@Mark: Activestate doesn't search Randy Kobes' repository by default, you have to
rep add http://theoryx5.uwinnipeg.ca/ppms/
to use it

  Bill de hOra [12.10.05 09:24 AM]

I use both Python and Ruby; it's much of a muchness between them, and hardly worth arguing about. Ruby has some elegant constructs, Python has fantastic libraries. Ruby has gems, Python has documentation. Ruby has Rails, Python has Django. For some real, radical differentation as opposed to a pointless argument about interchangeable arcana you'd have to move onto Lisp/Smalltalk/Erlang.

O'Reilly seems to have lost some mindshare tho'. They only Ruby books that matter are published by the Prags. The best of the recent Python books have come from Apress. I wonder if there's an Innovator's Dillemma in effect where the rational thing to do has been to target the larger web programming markets.

The Python and Ruby book markets are untapped imo. Any Django book will fly off the shelves. The Great Plone Book has not been written. Ruby Networking Programming. Rails Hacks. Building Domain Specific Languages with Ruby. Win32All, a developers notebook. Design Patterns in Python. Head-First Ruby. JEE Programming with Jython. Endless.

  Eugene [12.10.05 12:12 PM]

Perl and PHP will be most commonly using languages for a long time I think because 1)Host mainly oriented on them, 2)There is a lot of literature on them in the internet

  anon [12.10.05 03:51 PM]

I somewhat question this 'number of books bought' language popularity metric.


I have bought four O'Reilly Perl books and zero Python books because Python has been so much easier to learn. (The difference is not only that the Perl language's design is, comparatively, an incoherent kludgified mess; but also, in retrospect, because some of the O'Reilly Perl books were sufficiently obtusely organized and badly/pretentiously written that I always seemed to need "one more book" to address issues inadequately addressed by a book I already had. Yes, _The Perl Programming Language_ 2nd. Ed., this means you, you pseudo-intellectual piece of ^%^*. Based on my experiences with 2nd Ed when it was current, I won't buy the 3rd.)


This difference in number of books bought does *not* mean that I use Perl more than Python.


It *does* mean that if or when I finally buy an O'Reilly Python book, the book will probably be on some more advanced or specialized topic. Also, I will be much more wary than I used to be about O'Reilly books.

  The Badger [12.12.05 08:45 AM]

Looking away from the trend that every blog's comments section these days seems to be an advocacy platform for loudly-screaming RoR types and the "there was no full-stack Web framework for Python before my pet project came out" poster children, I'd like to agree with the sentiments of Peter Herndon: O'Reilly's Python catalogue looks dated and hardly compelling even for someone as eager to buy computing reference and tutorial texts as he is. One can argue that Ruby's coverage isn't as broad even as Python's in the O'Reilly catalogue, but the Python community is arguably more evenly spread across different topics than Ruby's is.

It would help, however, if the Python community standardised things a bit more and kept them stable for a decent amount of time before loading them up with yet more features that make any book look obsolete before publication.

  Brian Takita [12.17.05 12:59 PM]

Ruby has always been a wonderful and clear language. It had difficulty gaining traction because of the popularity of languages such as PHP and Python. A lot of people where asking, why should I learn this new language when my language already does what I need it to do?

I wanted to use Ruby for web app development back in 2002, but there where no shared web hosts (that I could find) that had Ruby on their server.

To my joy, Ruby on Rails opened up Ruby as a valid web development platform and hopefully segway into a valid "Enterprise Computing" platform.

  Anonymous coward [12.31.05 04:41 PM]

anon wrote: "I have bought four O'Reilly Perl books and zero Python books because Python has been so much easier to learn."

I had a similar reaction to this discussion... maybe there's not as much of a need for Python books because the documentation on python.org is so good? I haven't learned much Ruby yet but my impression is that the state of "official online Ruby documentation" isn't quite on par with what's available for Python.

(But lest I sound like a Python bigot, I'll add that yes I think Rails looks way cool. :-)

  Anonymous [03.27.06 01:32 PM]

I wonder about the effect of adoption of RoR (etc) by academia. The peaks in the Ruby plot (above) coincide with book buying time for students. Who knows what component of the overall sales figure is due to this. On the Java/C# front a bookseller commented to me that the majority of Java booksales seemed to be Sept/Oct whereas .NET language books sold consistently all year round. Her take on this was that it was due to an industry/academia split. On the other hand I think that the majority of people who need books on Java would have bought them by now.

  Matt Walsh [07.25.06 04:41 PM]

I think a large part of RoR's success has to do with how well the books are written. It's totally engaging and clear, whereas the O'Reilly Python books are really bad

  Chris [01.19.07 02:00 PM]

Surely a large part of the excitement is the fact it is so easy to just get started with RoR. This may be good or bad - depending on the quality of the developer. Has anyone here found an easier way to create a clean, functional app for web consumption than RoR? I have to code in Java buried amid Tapestry all day and it is just a paradigm - not a framework. It feels like the developer is just a bit too keen on being abstract and clever and not really solving anything on your behalf. I come home, code my apps in either .NET and C# or RoR - and I actually enjoy the RoR stuff. That is such a joy.

  Remi [03.29.07 11:45 PM]

Sales might be up on the Ruby sales, more specifically, the RoR sales, but that's just Hype, like so many other things that become buzz words in the market. When you actually compare the two technologies directly, Python is very much the superior... the libraries are far superior and more wide spread, the execution speed is exponentially greater and resource usage lower, the language is actually easier to use and be productive in more areas and as far as web usage goes, there are many more fully developed, mature, extremely functional frameworks/toolkits for website/web application development available. All of this and more for Python. Ruby/RoR sales is all Hype, and I'm not saying this off the cuff, I've spent a lot of time and resources looking deeply into both sides of this, both in the past and again very recently.

  Roger Pack [05.10.07 12:29 PM]

Statement has no result columns to bind (perhaps you need to successfully call execute first) at /usr/lib/perl5/site_perl/5.8.4/i686-linux/DBI.pm line 1679. at lib/MT/Template/ContextHandlers.pm line 2242


Hmm. The obvious answer is that Rails has reached a critical mass of popularity, and has a nice niche, so it is starting to attract attention from the php/J2EE users. Note that this group is probably larger than the group of "people using Python." So it is recruiting from that camp, which has helped it to sell more books. Once a python framework also becomes popular, then Python could suddenly become more popular. Of course, it is also true that I use Python, love it, but bought a Ruby on Rails book because...I wanted to do RoR. If there were a good Django book I'd buy it in a heartbeat for exactly the same reason, and probably with more excitement :)
-Roger

  Ravenor [05.10.07 03:20 PM]

I have a well-thumbed copy of "Python in a Nutshell", and while I believe that the author Martelli knows what he's talking about; I feel that the book is very poorly written. The prose style is to load up with esoteric buzzwords, and the book frequently says "Here's a feature of Python, but you'll need to get the details on it from this other source X"..

  Anonymous [07.09.07 05:21 PM]

I've programmed mostly in Perl, since pre-Perl 5 days, and I've used Java on and off since it came out. Working with Catalyst was a driving factor in my decision to move our shop to RoR. Class::DBI, DBIx::Class...ug, enough already.

  Andrew Kornak [10.29.07 07:06 AM]

Yes, choice is difficult for some. Others like the
freedom to choose. Catalyst is flexible enough to
allow you a choice.

  Denise Sasser [07.22.08 11:19 AM]

Books I would buy without hesitation:
- Django: The Definitve Guide
- Ruby in a Nutshell (updated to 1.8.2)

Post A Comment:

 (please be patient, comments may take awhile to post)






Type the characters you see in the picture above.

RECOMMENDED FOR YOU

RECENT COMMENTS