2007-06-23

Python-Dev does care about the 2.x -> 3.0 transition

Martijn Faassen and others (and I do mean others; I am not singling out Martijn, just his blog post since it's easy to point to =) in the community seem to be suggesting as of late that python-dev is not paying enough attention to the difficulties people are going to face in porting code from Python 2.x to Python 3.0. It has led to both Collin and Doug posting on the topic.

And now I am going to speak out about this. I really wish people would not view python-dev and python-3000 as a bunch of nutty coders sitting in some ivory tower who just toss stuff out the window to the crowds below without ever looking. It feels like we are being cast as some nasty aristocrats who are just doing what is fun for us and not worrying enough about others who depend on our work.

If people are thinking that, they are just plain wrong. The first thing you need to remember (that Doug points out in his blog) is that we are also users (the Hair Club For Men tag line is now going off in my head). I don't know of a single active member of python-dev or python-3000 who doesn't have Python code to maintain. There is the entire stdlib that we have to maintain for both Python 2.6 and 3.0 (and trust me, that code uses every trick in the book and spans back to the 1.x days and it has managed to be transitioned). We all have the same worries as everyone else of making sure our code keeps working in Python 2.6 and Python 3.0.

Heck, I am probably one of the few people in this world who has written code from scratch to run on both Python 2.6 and Python 3.0 (my PEP 362 implementation that I did at PyCon). It wasn't bad at all (hardest thing was remembering whether I should use a 'print' statement or function for debugging). And I am about to embark on bootstrapping importlib. With tests, it is 2,394 lines of code according to sloccount. This code is developed for Python 2.6 but is going to be run under 3.0. And I can't cheat and dev in 3.0 since I hope to backport to 2.6. I am going to be very aware of transition cost with this project (although, I do admit upfront, the code is only for 2.6 as I have dependencies on some 2.6 stdlib code, but it could be ported to 2.5 probably without issue).

And people should not think that we don't listen to the community. Obviously people do or else I wouldn't be taking the time to do this blog post for people realize that we do.

But it is tough, as Collin's post shows, when people in the community start to comment like we don't care. It wears on you. People have been talking on python-3000 and python-dev about these issues for over a year now. You get to the point where you do just want to go "talk is cheap" and tell people to either help address their own issues are go away. It's not like everyone is like Guido and gets paid to work on Python. I don't even get to work on the core for my thesis anymore. It's volunteer time and having people complain about your volunteer work is an amazing downer and makes you either stop wanting to volunteer or become bitter and tell people to go away if they don't appreciate what you are doing. I really have to fight the latter from taking hold (the former won't happen because I enjoy working on Python too much). I constantly remind myself that these comments stems for general worries that people have and also from lack of info because not everyone follows development closely and so they go on what hits the blogosphere or c.l.py (it's one of the reasons I constantly try to make python-dev transparent and want to help make it easier to follow and join).

But we have had issues like this before. Python-dev knows how to do backwards-compatibility; I think our track record shows this.

And I think we have shown we care about the community. I personally did the python-dev Summaries for quite a while beyond what made them useful to me just because I knew the community found them useful and I care about the community.

And people also need to realize that this entire thing is an organic process. People are acting like Python 3.0 is releasing in a week along with 2.6 and everything is locked in stone for a shrink-wrapped box release. But we have not even reached alpha! Would you want someone coming to you and getting after you for what you planned to do when you had not even reached alpha yet? Heck, the word "alpha" has not even been uttered for 2.6 on python-dev yet.

The transition process is not in stone. Tools can change. New ideas can come forward. As I said, we are not even at alpha yet for 3.0 so the feature set is not even fully implemented which means needed changes to 2.6 have not occurred. And even when we do hit alpha, we don't have a ship date that we absolutely must hit. A perk of open source is that if a ship date slips, then it slips. If we come up against a problem in the transition process we can stop and deal with it, ship date be damned if necessary.

So please, don't pass judgement on the transition until we have released stuff and said, "go play". And even then, give us (constructive) feedback! Tools can change and we can continue to improve the process long after Python 3.0 and 2.6 ship. But please, if you are worried, just say you are worried but will wait to pass judgement until everything has been finalized and released and give python-dev the benefit of the doubt for now.

OK, I feel better now. =) I hope my points come across clearly. And I hope this doesn't spark some little flame war online; the whole point of this post is to prevent that. Hopefully I won't have to do another post like this again since feeling like you need to defend your volunteer efforts just plain sucks.