Python Popularity, python at sourceforge
Roeland Rengelink
r.b.rigilink at chello.nl
Sat Dec 29 07:25:02 EST 2001
Hi,
As was remarked earlier in this thread, a measure of Python's
popularity, if not quality, can be obtained by looking at the number
of sourceforge projects using Python. Below you'll find a number of
tables comparing sourceforge projects using Python to those using
Perl, PHP, Java, C and C++. These numbers were obtained by
screen-scraping the sourceforge trove pages.
I started this analysis expecting to find clear evidence for Python's
- exploding popularity
- cross-platform usability
- ease of development
Alas, the numbers are far more ambigious than I'd hoped. To summarize:
1. Python is the smallest of the 6 languages discussed here.
2. Python is currently growing slower than PHP and Java, but faster
than C and Perl.
- Python has only been gaining on Perl for the last 6 months
- the difference in growth w.r.t PHP and Java may be getting smaller
3. Java is more cross-platform than Python. Perl, C, C++ are less.
4. There is no clear evidence for Python's ease of development.
The most interesting result (I think) is Python's changing role from a
glue/scripting language to a stand-alone development language.
Cross-language development statistics are investigated at the end of
this post.
1. All projects
The following two tables list the cumulative number and quarterly
growth rates of sourceforge projects using Python, Perl, PHP, Java or
C++ as one of their programming languages. Note that projects using
more than one of these languages contribute to the numbers of each of
those languages.
The following conclusions can be drawn
- Python is only half as big as any of the other languages.
- The growth rate of Perl, as compared to Python, has been steadily
declining since ther third quarter of 2000. It has become smaller
than Python's growth rate in the third quarter of 2001.
- The growth rates of PHP and Java have been much larger than
Python's. However, up to the third quarter of 2001 their growth rates
declined relative to Python.
- Since the third quarter of 2000, C has been the slowest growing
language.
- The growth rate of Python is most similar to that of C++
To summarize:
Early 2000 Python was the slowest growing language. Currently only PHP
and Java are growing faster, and the gap is closing
Table 1a. Cumulative number of projects
Python=1
Python Perl PHP Java C C++ Perl PHP Java C C++
00-03-01 98 172 84 139 529 361 1.8 0.9 1.4 5.4 3.7
00-06-01 221 417 251 371 1220 882 1.9 1.1 1.7 5.5 4.0
00-09-01 374 785 555 756 2030 1518 2.1 1.5 2.0 5.4 4.1
00-12-01 528 1178 883 1257 2827 2220 2.2 1.7 2.4 5.4 4.2
01-03-01 701 1575 1328 1841 3706 2949 2.2 1.9 2.6 5.3 4.2
01-06-01 898 2020 1867 2539 4652 3806 2.2 2.1 2.8 5.2 4.2
01-09-01 1097 2406 2326 3164 5513 4589 2.2 2.1 2.9 5.0 4.2
01-12-01 1266 2690 2745 3774 6189 5285 2.1 2.2 3.0 4.9 4.2
Table 1b. Quarterly growth rates
Percentage growth Python=1
Pyth Prl PHP Jav C C++ Perl PHP Java C C++
00-06-01 125 142 198 166 130 144 1.1 1.6 1.3 1.0 1.1
00-09-01 69 88 121 103 66 72 1.3 1.7 1.5 1.0 1.0
00-12-01 41 50 59 66 39 46 1.2 1.4 1.6 1.0 1.1
01-03-01 32 33 50 46 31 32 1.0 1.5 1.4 0.9 1.0
01-06-01 28 28 40 37 25 29 1.0 1.4 1.3 0.9 1.0
01-09-01 22 19 24 24 18 20 0.9 1.1 1.1 0.8 0.9
01-12-01 15 11 18 19 12 15 0.8 1.2 1.3 0.8 1.0
2. Cross platform projects
Python advertises itself as a cross-platform development language.
Here, I assume that cross-platform means either OS-independent, or for
2 or more of the the different OS families [Unix, Win, Mac]
The conclusion here is pretty much expected:
- Python is more 'cross-platform' than Perl, C and C++, but less so
than Java, and comparable to PHP
Table 2a Cumulative number of cross-platform projects
Python=1
Python Perl PHP Java C C++ Perl PHP Java C C++
00-06-01 157 273 172 311 590 484 1.7 1.1 2.0 3.8 3.1
00-12-01 365 722 598 1047 1317 1159 2.0 1.6 2.9 3.6 3.2
01-06-01 626 1243 1298 2135 2122 1939 2.0 2.1 3.4 3.4 3.1
01-12-01 900 1658 1959 3198 2836 2701 1.8 2.2 3.6 3.2 3.0
Table 2b Cross-platform projects as fraction of all new projects
Python=1
Pyth Prl PHP Jav C C++ Perl PHP Java C C++
00-06-01 71 65 68 83 48 54 0.9 1.0 1.2 0.7 0.8
00-12-01 67 59 67 83 45 50 0.9 1.0 1.2 0.7 0.7
01-06-01 70 61 71 84 44 49 0.9 1.0 1.2 0.6 0.7
01-12-01 74 61 75 86 46 51 0.8 1.0 1.2 0.6 0.7
3. Active projects
Python also advertises itself for its ease of development. One could
expect that easy projects are more active than difficult projects.
The following tables list statistics for projects that have an
activiy_ranking of more than 80 %. Since I don't know how this
activity is measured I can't really interpret these numbers.
Activity ranking is a relative measure of a projects activity, which
is computed over all sourceforge projects. An activity ranking of 80%
means 80% as active as the most active sourceforge project. Activity
seemt to comprise both developer activity (checkins, bug fixes) and
user activity (downloads, bug reports).
The most notable result from these tables is probably that the numbers
are so similiar. Hence, my tentative conclusion:
- Project activity is largely independent from the choice of
programming language and therefore also independent of the
'accessability' of the language
Table 3a Cumulative number of active projects
Python=1
Python Perl PHP Java C C++ Perl PHP Java C C++
00-06-01 24 36 21 33 156 94 1.5 0.9 1.4 6.5 3.9
00-12-01 43 59 49 74 268 174 1.4 1.1 1.7 6.2 4.0
01-06-01 59 95 81 127 368 263 1.6 1.4 2.2 6.2 4.5
01-12-01 74 120 128 182 441 347 1.6 1.7 2.5 6.0 4.7
Table 3b Percentage active as fraction of all projects
Python=1
Pyth Prl PHP Jav C C++ Perl PHP Java C C++
00-06-01 10 8 8 8 12 10 0.8 0.8 0.8 1.2 1.0
00-12-01 6 3 4 4 6 5 0.5 0.7 0.7 1.1 1.0
01-06-01 4 4 3 4 5 5 1.0 0.8 1.0 1.3 1.3
01-12-01 4 3 5 4 4 5 0.9 1.3 1.1 1.2 1.4
4 Mature projects
Ease of development may also be reflected in what percentage of
projects reaches a mature development status. The following tables
give numbers for projects that reached a mature or production/stable
development status.
The data suggest that Perl and C project reach a mature development
status more often than Python, PHP, Java and C++ projects.
Note that development status is assessed by the project developers
themselves
Table 4a Cumulative number of mature projects
Python=1
Python Perl PHP Java C C++ Perl PHP Java C C++
00-06-01 43 118 41 59 294 168 2.7 1.0 1.4 6.8 3.9
00-12-01 87 233 109 161 599 342 2.7 1.3 1.9 6.9 3.9
01-06-01 122 367 194 286 887 503 3.0 1.6 2.3 7.3 4.1
01-12-01 160 455 280 399 1110 644 2.8 1.8 2.5 6.9 4.0
Table 4b Percentage mature as fraction of all projects started.
Python=1
Pyth Prl PHP Jav C C++ Perl PHP Java C C++
00-06-01 19 28 16 15 24 19 1.5 0.8 0.8 1.2 1.0
00-12-01 14 15 10 11 18 13 1.1 0.8 0.8 1.3 0.9
01-06-01 9 15 8 9 15 10 1.7 0.9 1.0 1.7 1.1
01-12-01 10 13 9 9 14 9 1.3 0.9 0.9 1.4 0.9
5. Cross language development
The most interesting results are obtained when we compare projects
that use a single language with those that use multiple languages. The
follwing tables compare the fraction of projects that use more than
one language, to those that only use a single language.
There are many trends here.
- Python, Perl, PHP and Java projects are increasingly becoming
single-language projects.
- The percentage of cross-language projects in cross-platform projects
is lower for Python, Perl, PHP and Java, while its substantially
higher for C and C++ projects.
- Of the currently active Python projects nearly all old projects
included other languages, while only a third of the new projects
does so.
- Perl is the only language for which the fraction of multi-language
projects is larger for active projects.
- For the mature Python projects there is also a large difference in
the fraction of cross-language projects between old and new
projects.
- For all languages the percentage of mature projects that use more
than one language is smaller.
One conclusion
- Python is increasingly used a stand-alone development language,
especially in active and mature projects.
Table 5a Percentage of all new projects
Pyth Prl PHP Jav C C++ Perl PHP Java C C++
00-06-01 55 51 41 35 47 46 0.9 0.8 0.6 0.9 0.8
00-12-01 52 42 37 33 47 46 0.8 0.7 0.6 0.9 0.9
01-06-01 51 48 39 30 46 46 0.9 0.8 0.6 0.9 0.9
01-12-01 45 42 31 26 47 43 0.9 0.7 0.6 1.0 1.0
Table 5b Percentage of new cross platform projects
Pyth Prl PHP Jav C C++ Perl PHP Java C C++
00-06-01 52 47 44 32 56 51 0.9 0.8 0.6 1.1 1.0
00-12-01 50 40 33 30 54 50 0.8 0.7 0.6 1.1 1.0
01-06-01 51 43 36 27 54 52 0.8 0.7 0.5 1.1 1.0
01-12-01 44 39 28 24 56 48 0.9 0.7 0.6 1.3 1.1
Table 5c Percentage of active projects
Pyth Prl PHP Jav C C++ Perl PHP Java C C++
00-06-01 87 58 19 12 51 44 0.7 0.2 0.1 0.6 0.5
00-12-01 68 60 17 46 44 51 0.9 0.3 0.7 0.7 0.7
01-06-01 50 55 40 32 47 37 1.1 0.8 0.6 0.9 0.7
01-12-01 33 64 25 19 52 47 1.9 0.8 0.6 1.6 1.4
Table 5c Percentage of mature projects
Pyth Prl PHP Jav C C++ Perl PHP Java C C++
00-06-01 58 36 34 27 37 37 0.6 0.6 0.5 0.6 0.6
00-12-01 47 26 20 32 37 44 0.5 0.4 0.7 0.8 0.9
01-06-01 45 37 32 24 34 36 0.8 0.7 0.5 0.8 0.8
01-12-01 34 31 25 22 36 40 0.9 0.7 0.6 1.1 1.2
Undoubtedly there's more to be gained from these numbers. But this is
starting to look like work, so...
Roeland
--
r.b.rigilink at chello.nl
"Half of what I say is nonsense. Unfortunately I don't know which half"
More information about the Python-list
mailing list