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