CodeZoo: Programming Language Demand

Yesterday, we launched a new major release of CodeZoo, O’Reilly’s directory of reusable, open source components for programmers. Over the next few days, I’m going to pull out some of the interesting data we’ve collected by running CodeZoo since our April launch, and talk a bit about how that data led to the features we selected for the new launch. I think a lot of this is widely applicable, and not just for those of us running component directories.

Why is that? Who should care about interest in “reusable components” in programming languages? Components are small pieces that help programmers get started on their development projects — they are the Lego blocks that Lego builders can compose into amazing creations. In the Lego world, strong demand for wheel pieces probably shows that builders are building lots of cars and trucks; in the programming world, lots of demand for Web services components would probably mean that Web services are taking off. (But our numbers would suggest that conclusion isn’t right.) The CodeZoo numbers, then, can say a lot about the computer industry at large — they show the beginnings of work programmers are undertaking right now.

Let’s start out by looking at the programming languages we support on CodeZoo. When we launched in April, we supported only Java, and Java remains the largest language on CodeZoo, counting by the number of components we list. (The open source Java community produces a very large number of similar components — for instance, we list 10 separate components in our Java > XML > Parsers category, all of which do pretty similar things. We launched the site in part to help people sort out the good implementations of an idea from the bad ones, using developer ratings, visible download counts, and other features to let the best code bubble to the top.) At the time of the initial launch, I put out a call for language requests, asking developers to let us know what other languages they’d like to see supported.

Language Requests

Yesterday we added two new languages to CodeZoo: Python and Ruby. You can see from the language requests graph, above, the languages for which we got more than a few requests (I’ve left off Cobol and the others that only were requested a couple of times). From this, the choice of Python is completely obvious — it was the winner in the request race, beating out C++ and many other languages that might be considered “larger” by other metrics. In addition to the clear demand for it, Python is a natural fit for O’Reilly, since we publish a great deal of treeware and online material about Python, and cover Python extensively at our conferences (especially at the Open Source Convention taking place this week).

Ruby, however, is tied for fifth on the list, and in raw component counts on our site, it is the smallest of the languages we support. As we’ve discussed on Radar over the past few months, we see Ruby as an emerging force in the open source world, driven by interest in Ruby on Rails, and by the excellent books on Ruby written by the Pragmatic Programmers. The language is also well-served by RubyForge and the RubyGems project (the latter of which functions like, and as well as, apt-get on Debian — resolving dependencies and downloading needed files from the net). In short, both the supply of components and the demand for a CodeZoo tab for Ruby were both lower than for other languages, but we decided to include Ruby in order to give support to a growing and important language, and to bring together the documentation and other resources O’Reilly is starting to produce around the language.

We’ve had a strong response to both of these language launches, and I think we chose the right targets. A welcome side effect of these choices, too, is that the CodeZoo activity on the Python and Ruby tabs will help us learn more about the uses of these languages — another “faint signal” to guide our overall business and interests.

  • I saw the chart before I read the post and I immediately thought “wow, that’s cool”. Then I read that you’re only supporting three languages and thought “that’s much less cool”. Zoos are not about homogeny – they are about preserving diversity.


  • Hi, Brian,

    No doubt. I’d love to support every language on the list (well, maybe I’d leave off Cobol!).

    Because we review every component that we enter into CodeZoo, the process isn’t so automatic as to allow us to simply turn on support for all of these languages. Since CodeZoo is focused on helping users of components, we want to make sure everything listed is high quality and easy to integrate. (I’ve spent way too much time finding some project on the net and downloading it, only to find that it was abandoned years ago and probably never compiled.)

    So, the site is too young to support every one of the languages requested. I hope to get there in time. And remember, diversity also exists within each language — we now list the work of hundreds of individual developers.

    Thanks for the comment.


  • Just a quick suggestion… have you considered (if you don’t already) listing modules that are included with Python? I wouldn’t be surprised if someone looking in, say, Python > XML, didn’t know about some of the options that are included in the standard library. It’s not a download, of course, but it might make sense in a directory of useful code.

  • Thanks, David, that’s an excellent suggestion.

  • Abdullah

    I would REALLY , REALLY , REAAALLLY love to see support for C# and/or .net in codeZoo. It is one of the major platforms, though i see that will add more work for you guys.

  • For a lot of components for C# and .NET you could check through

  • Krishna

    I am surprised to see Tcl missing from this list?

  • Hi, Krishna,

    I actually received no requests for Tcl at all. If you’re interested in seeing Tcl support, please send in feedback, and encourage others you know who use Tcl to do the same.


  • ade

    How does this compare to something like Swik?

  • Hi, Ade,

    There are a lot of other repositories on the net for open source projects. Here are the ways we’ve tried to make CodeZoo different from the existing resources:

    1. We only list components (code meant to be called by other code) and development utilities (test frameworks, etc.). We don’t list applications. CodeZoo is meant to be a toolbox for developers sitting down to write applications.
    2. We only list components that are actively maintained and/or components with continuing utility. If a component is just a good idea someone put on Sourceforge and then abandoned, we don’t list it. We do not try to be comprehensive, but instead we try to have every component we list be useful and up-to-date. Many sites try to be comprehensive, and they are useful for other reasons, but for people trying to get work done, we believe having editors and reviewers helps avoid wasting time with dead projects.
    3. We only list code that is freely available and downloadable.
    4. Unlike a site like CPAN, we list multiple languages. We hope that having a consistent and well-designed interface will let multilingual programmers have less drag when going from one tool to another.
    5. We do not simply provide a raw data dump about a project, but instead try to provide key metrics (average rating, download) and information (O’Reilly and Safari books, articles, blogs, and conference sessions) that will let developers choose a tool quickly and use it easily.

    It’s not the goal of CodeZoo to replace or destroy any of the valuable sites that list open source code. Instead, we are providing a view on the open source components that make programmers’ lives easier. If you have suggestions for how we could improve our listings, please let us know.


  • Oops, I forgot one:

    6. We make it extremely easy to find and get the download you probably want. The main download for the current version is accessible by one click on the big, green button shown on the component page. You don’t have to dig through a huge list of releases, files, and file formats, and you don’t have to click through three pages of mirrors and redirects to get the file you want.

  • How we can make suggestions ? In Python sections I miss Spyce (Python Server Pages), Pywin32 (Python Windows Extensions) and more…

  • Anjan Bacchu

    hi marc,

    good to know about this.

    i’m also increasingly on the ruby /RoR bandwagon. My personal projects are moving to Ruby.

    Are you seeing any large scale migration of Python users to Ruby ? Such a migration can be assisted by identifying the top 10 projects that python users use and then migrate them over to ruby.

    Also, a python to ruby compiler/translator would be useful. Such a translator could be useful tomorrow, when a new internet language that learnt from ruby/java/C# is invented and needs users to migrate from the well entrenched Ruby(say, in 2010) ?



  • Rob

    Hey Marc,

    I think what you are doing with the site is really neat, but it seems as though PHP was one the most requested languages, according to the graph. Ruby has what looks like only one third of the requests that PHP did. Do you have plans for adding PHP code? If so, when? If not, are there resources online that I should know about that serve a similar function?


  • “we decided to include Ruby in order to give support to a growing and important language”

    Thank you from Ruby/Toronto. We love you for the support.

  • atchie rivera

    my group are doing a written report about Ruby. do anyone from here knows who the main users of Ruby are?

    thank you in advance.

  • bug

    Ruby may benefit the most from a resource like this, and it certainly has the buzz, but as a PHP developer, I have to say, look at the numbers!

    What more must PHP developers do to get your attention?

  • Simon Kissane

    As a PHP developer, I strongly urge you to add PHP. You can already see from your stats how popular it is.

  • Kaveh Shahbazian

    I am a C# programmer since 2002. I think microsoft will provide good support and good fake communities for it. I want to see emerging of such a coll thing like ruby. Go on open source please. Ofcourse there is a mono project there that it’s licensing future is blure … ao after all it aeems that C# is not open source. And ofcourse there is many cool things in dot net that Open Source an learn from it and open source showed that it is very talented and a little lazy student, but in any way cool!

  • Philippe Verdy

    Where is Java ?
    It’s one of the the two top development languages for enterprise applications (along with .net/C#), and it has an impressive and fast growing number of applications for all kind of applications (not just for applets) including for desktops (remember MacOSX which ships with builtin Java).
    Yes website development is still minor face to PHP, but JSP is still growing too (but Java leaves just behind frontal servers, with many databases and enterprise erm/crm systems) and now java emerges also in graphics and 3D applications including games (remember smart phones). And also in popular P2P apps.

  • Philippe Verdy

    The interest for Python is highly questionable. That’s one of the languages (the other being COBOL) that I have tried to learn and train with, but rapidly abandonned. It’s really a nightmare collection of tricks collected by geeks for geeks with a geek syntax and unstable specification, and its formating is a nightmare for realiable editing (it reminds me too much COBOL!)
    Let’s better learn Fortran, it will be more productive for its mathematical applications. And choose Java (or C#) for its tremendous and exciting support and intrinsic quality in complex heterogeous and highly connected systems.

  • Hi all!

    I am Lucy, I have found your website while searching for some info at Google. Your site has helped me in a big way.