Py3progress updated and 2013 review

I have updated the py3progress site. I really should automate it sometime, since the last update was in September.

Since the whole of 2013 is now up, I think we should review what happened.

2013 in review

So the first thing that jumps out at me is there is less red and more green. That's great! Concretely, the percentage of the top 200 that supports Python 3 has gone from 51% (103) to 69% (138), and it's up another 5% in the first two months of 2014.

The oddly consistent period in the middle of the year was when PyPI changed to providing downloads via a CDN (Content Delivery Network) and the stats took a week or so to be updated. In some ways, the data after that point might not be as accurate to the actual popularity of the packages, but we are only really worried about the indicative relative popularity and the data should be good enough.

Not long after, the ssl module races up from outside the top 200 to in the top 10. It's clearly visible as it is in Python 3 and therefore in light blue. I'm not sure what has driven it's increase, perhaps a popular package now depends on it?

About 5 projects changed to python 2 only during the year. On the whole they have lost popularity. Some even dropped out of the top 200.

I note from the python3wos page that December 2013 marked 5 years since Python 3.0 was first released. Python 3.3, which has a few features that support added backward compatibility, was released September 2012. Python 3.4 is currently at the release candidate stage.

Current state

So looking at the Python3 Wall of Superpowers today, 149 of the top 200 downloads support Python 3. Let's look at some of the the one's that aren't.

Boto is the highest ranked non-python 3 package at 3rd. It is an library for interacting with AWS services. Python-cloudfiles depends on this and is further down the list.

Paste (18th), the web framework, is next. It hasn't been updated since 2010.

Paramiko (22nd) is a SSH library, which from the github issue appears to be under active porting. Paramiko is something I use in multiple ways. One is Farbic, a remote execution tool used for deployment and automation, which is 37th and will be ported once paramiko is ported.

Just above Farbic at 35th is the MySQL-python library. This also appears to be not too far away from having a working python3 version.

The first python 2 only package is meld3 (56th), a templating library. The second is more important to me, Twisted, at 76th. Twisted is an asynchronous networking framework and it's used by other packages on the list, such as carbon (52nd) and graphite-web (53rd). Unusally, the python 2 only tag has a slightly different to the Twisted project - they have an active project to port to Python 3, it's just a really, really big job.

Why supporting Python 3 matters

Python 3 makes a significant improvement, mostly removing old wrinkles and being clearer about bytestring/unicode datatypes. The transition is ongoing (like IPv6), and a good portion of the libraries people use will need to support Python 3 before a bulk of developers will start developing with Python 3 (even though it's technically better). I'm looking at what packages I use and hope to soon start using Python 3 for some things.