2009-04-03

PyCon 2009 recap: Best PyCon ever!

I landed in Chicago midday in hopes of catching the tail-end of the VM summit. After grabbing my luggage and finding the shuttle to the hotel idling at the curb -- which took a little to find as the signage pointing you to where the shuttles wait is not good at ORD -- I got to the hotel, checked in, and went on down to the summit. There I found a room with a bunch of VM implementors standing around talking.

Turns out that the entire summit had been like that. After brief introductions by each team -- including the public unveiling of Unladen Swallow -- apparently everyone just started chatting in small groups and that continued until people broke up for dinner.

When I arrived I instantly started chatting with the CPython guys in the back of the room. One of the great things of PyCon is getting to see friends in person that I typically only get to see at the conference. It's one of those situations where you just start talking almost instantly without a huge build-up of what anyone has been up to since we read each other's blogs, IM or Twitter, etc. Chatting went on for several hours as more people began to show up at the hotel. Eventually we stopped for dinner at a place a block away from the hotel, after which I just slept.

Thursday was the first Python language summit. Originally there was going to be a morning session of general discussion followed by a 2.7/3.1 discussion with parallel tracks midday/afternoon, but those plans were scrapped. Instead we ended up all staying in the same room talking all day.

During the initial session we all just talked about various things. For me it became very obvious that the DVCS was going to be a running topic of interest for the rest of my stay at PyCon. I don't remember anything specific coming up in the first session.

For the 2.7/3.1 session several things came up. One was that it is very likely 2.7 will be the end of the line for the 2.x series for Python. While the idea was floated of canceling 2.7 entirely, that was disliked and instead the preferred approach of strongly stating the opinion that 2.7 will be the end of 2.x was chosen.

It was also strongly stated that new features cannot exist only in 2.7. Even more important, though, was that people should strongly consider adding new features only to 3.x in order to help entice people to move to 3.x.

This discussion segued into the idea of 3to2. The idea sprung up at PyCon 2008 but never went anywhere other than being an idea. During the summit, though, the various framework implementors said that they would love to get to code in 3.x and then run 3to2 over their code to get 2.x code for their compatibility requirements. Thanks to 3.x having clearer semantics -- clear separation of Unicode and bytes, nicer syntax, etc. -- it is actually easier to go from 3.x to 2.x than the other way around. There was general excitement that this idea could pan out and be a great way to get adoption of 3.x to pick up.

In terms of Python 3.0 it was decided that 3.0.2 would be the last release. We will not even bother with security fixes for the release as the user-base is so small and 3.1 such a nice step up in performance that it will not be worth our time to maintain even security patches for 3.0. Obviously this is a very unique situation and we are not about to start doing this on a regular basis.

After lunch was the alternative VM session where we discussed how other VMs -- basically Jython, IronPython, and PyPy -- fit into all of this. With Unladen Swallow effectively acting as a long-term branch of CPython the discussion focused around the other VMs and how to put them on equal footing with CPython. My big suggestion, which was surprisingly well-received, was to pull out the part of the standard library implemented in pure Python, all of the tests for things that all VMs are expected to implement, and the documentation and place it all as a top-level project within CPython's code repository. The idea would be for all VMs, including CPython, to pull in the standard library from this project along with the tests they are expected to pass. That way we can pool development resources on the standard library along with making sure the test suite properly reflects what a Python VM must pass to be called a true implementation of Python. The versions of the language will still be tied to CPython but at least the language will seem to be less of "what CPython does" and more "what the test suite and standard library say it is". And to help facilitate this the various major contributors to the VMs have been given commit privileges to help start cleaning up the test suite. This should start to happen once we switch over to Mercurial.

The last session of the day was on packaging. The general consensus of that session is that distutils needs to be cleaned up and morph into a support library that third-party tools can be built off of. So tools like virtualenv or buildout won't go away and be replaced by distutils, but they should be able to harness more of distutils to have a more common base. It also looks like an extensible, declarative format is going to be developed for those situations where a setup.py script is overkill. Tarek is spearheading this endeavor and hopefully he will be enough of a dictator to make sure it happens.

Friday was the first day of the conference where I got to give the first lightning talk on why Git was no longer being considered in the morning (I start at 3:47 in the video). I also had my talk on how Python is developed along with the Python VM panel. I also somehow got pulled into giving my shorter-than-I-remembered intro talk on sprinting on Sunday along with a tutorial on how to contribute to Python.

As per usual for me at PyCon I missed most of the talks at the conference. The ones that I saw which have videos online as I write this are for Pinax, IronPython implementation, IronPython status update, intro to multiprocessing, and concurrency and distributed computing in Python. All of those talks were entertaining and are worth watching if you are interested in the subject matter. Otherwise I just attended all of the lightning talks and the keynotes -- the one thing of interest during the keynotes was Guido's talk when he said he was "tiring" but not "retiring".

In terms of ancillary activities during the conference I had the usual Python Software Foundation stuff to deal with. We elected a lot of new members along with expanding the board to ten people -- I am still on it -- and keeping the trademark of the Python logo.

I also was the co-conspirator of the "VAN LINDBERG'D" catch-phrase. Jesse Noller was my roommate and we were up late one night and somehow we were saying we wished we could force the idiots online who put time and effort into trash-talking Python and spend that time instead attempting to contribute to help fix the situation they were unhappy with. Somehow we thought about changing the Python software license such that if you complained without helping we would send Van Lindberg, the PSF lawyer, after you and take you down. We dubbed it being "VAN LINDBERG'D" and it led to lindbergd.info and Jesse's very entertaining lightning talk.

Then came the sprints. The core, as usual, had a good turn-out. This year, though, I at least was able to tell people to work on tests to raise test coverage if they didn't have anything to work on. Having the new developer docs that I have written helped a lot since I finally had something concrete to point people to in order to get up and running.

I personally had no agenda beyond try to help people where needed and to clear out my backlog of issues (which I actually did in the end). Various people worked on things and last I heard from Georg Brandl we had closed over 125 bugs Wednesday night, of which just under half were closed by Georg himself.

But the great thing that happened during the sprints was not the coding but the camaraderie that broke out amongst Django and Pinax Tuesday. The core team was next door to the Pinax sprint room and at some point on Tuesday we heard some laughing continually break out. Turns out a little "war" had broken out between the Django and Pinax teams, culminating in several domains being purchased and the Django pony being made to do things no stuffed animal should have to do. Eventually there was a peace accord. James Tauber plans to write up a blog post about what happened so I will let him tell the story. For the core's part some of us got pulled into all of it, leading to ponysex.us coming into existence (the site is Safe For Work).

The night that ponysex.us came into existence was also the night before April Fool's. The idea for the Python April Fool's for this year took a couple of turns before it ended up at what was posted online. I originally came up with the idea of doing a blog post where I helped lead a coup against Guido to usurp him as dictator and install Barry Warsaw as my puppet with a future statement for adding back in the diamond operator to massage Barry's ego to help keep him in line. I had that idea nearly a year ago and told Guido about it during my internship. He liked it so I did the future statement on the flight to PyCon and let Barry in on the idea at the conference.

That's when Barry decided he wanted to tweak it. Because of Guido's whole "not retiring, just tiring" bit in his keynote, Barry wrote up PEP 401, suggesting Guido was retiring and would be replaced by Uncle Tim. That made the use of the diamond operator not quite as poignant as Tim has never expressed a dislike for '!=' while Barry and Thomas Wouters have both stated that they preferred '<>', but it still would be funny.

Then Guido decided to tweak it to have Barry be the successor and throw in the idea of Barry switching us to Bazaar instead of Mercurial. I am sure getting back his precious diamond operator in Python 3.1 has made up for any possible disappointment from Mercurial being chosen over Bazaar for Barry.

And then there was Wednesday night. At some point the Django folks relocated to the Pinax sprinting room. Since there were not that many core sprinters at the time, we decided to relocate to the room where the laughter was coming from. After sitting down, one of the core developers, who will remain nameless to prevent embarrassment with any potential future employers, seemed determine to get his drink on -- a lot of us were happy to join in of course. Eventually some people went out and bought some liquor, which led to the core team finishing off a bottle of Knob Creek and a little bit of scotch -- most of it was drunk by one individual and myself. I actually managed to check in code that night, although there was an unfortunate svnmerge mishap that deleted the metadata for the tool. But otherwise it was a fun night of drinking and joking all around (read Twitter of the folks attending to get an idea of what the heck was going on).

In the end PyCon 2009 turned out to be the best PyCon I have attended. The language summit was fun and seemed to produce some results. I got in a great amount of socializing during the conference. And the sprints were just awesome. PyCon 2010 in Atlanta has a lot to live up to for me personally.

I should also probably mention I am going to take three months off from Python development in order to focus on my thesis proposal which is due by July 1. It will also give me a chance to finally redo my father's web site in Django -- maybe even Pinax -- so that he can update the information on the site himself in a manner easy enough that even his partner could do it -- he just learned about copy and paste, although he can navigate the web fine -- while leaving me in complete control of layout. In other words this blog's focus will be shifting for the near term to web programming stuff and I might be suffering from Python withdrawl.