At the ASA Statistical Computing Award ceremony in Vancouver last month, R's co-creator Ross Ihaka said that R began as a "system that was functional and well-designed, and made it easy and fun for other people to help". R's other co-creator, Robert Gentleman, also described the ability of others to contribute as "the exit strategy" that made R so successful. And the success is undeniable: the rate at which contributors from around the world have created new add-on packages for R has grown, literally, exponentially:
The chart above shows the number of packages -- third-party add-on libraries for R -- added to the CRAN archives over the past decade, with data to the end of August, 2010. (And this chart doesn't even include packages released outside the CRAN system, such as those for the BioConductor project.) The CRAN system, the result of excellent design and untold hours of implementation by R-Core members Kurt Hornik and Fritz Leisch, is the key contributing factor in this growth. R's package system together with the CRAN infrastructure provides a standardized process for authoring, documenting, validating, building and distributing packages to millions of users worldwide. (If you're interested in the details of R's package system, be sure to check out the Writing R Extensions manual.)
Can other programming languages learn from R's success in enabling a vast development community around a core language? That's the question that the ACM's Bay Area chapter will ask in a meeting on Wednesday, September 15 in a meeting titled Software Package Development Processes and R. Spencer Graves and Sundar Dorai-Raj and will use the R system as an illustration of a good software package development process, and see how those processes can be applied to other language systems.
Bay Area ACM: Software Package Development Processes and R
I would frame it as What has R learned from other programming languages. For example, I remember first being drawn to Python (around 1997) by the sheer number of libraries available. Many other successful languages and systems have also encouraged the creation and sharing of libraries.
It may be that R is the first example amongst statistical languages, but there are plenty of pre-existing examples in other more general languages, including the ability of adding 'packages' from a centralized system. The nice thing in R is that for many systems is just a menu item away.
Posted by: Luis | September 09, 2010 at 15:13
That looks geometric to me, not exponential. And really linear in the last few years.
It's also worth looking at the number of packages under active maintenance. That's a lot smaller!
(Of course, R is definitely growing, and I'm a fan, but this graph is rather misleading!)
Posted by: Harlan | September 15, 2010 at 11:57
@Harlan: I was going off this (older) analysis from John Fox; on a log-log scale the chart is pretty close to linear. Also, check out John's paper in the R Journal for details on the methodology.
Posted by: David Smith | September 15, 2010 at 12:03