The more you know - the discussion around Python 3000

by jesse in ,

I had a nice long post to talk about all the rounded up posts about python 3000 - all of the ones worried, with admittedly good cause, and all those defending the process. Rather than post the long winded version, here's the abbreviated summary and a few side notes - Doug has already summarized some of my thoughts and with Brett's latest "Python-Dev does care about the 2.x -> 3.0 transition" post really taking the cake with regards to how I feel about this.

Per Brett:

In the end it all doesn't matter. Python 2.x is not going anywhere, so even if Py3K turns out to be a flop Python will live on. But if Py3K does do well (and I expect it will in the end), Python will be better for it. I know that I will end up developing for Py3K exclusively whenever I can and be happier for it. Hopefully most of you will end up being happier as well.

To date there has been some arm waving and concern raised by various people around the fracturing of the Python community (not just Martijn mind you (so I am not picking on you)) around the python2x to 3x conversion and changes coming in the language. There have been many discussions around this across the internet(s), mailing lists and blogs.

But a warning - before you take any single blog post at face value, and before you jump to any conclusions about how hard, or what has already been discussed - you really need to look up the history (via the peps and mailing list) of Python 3000's development, that's where a lot of the real work has occurred.

Remember many people in the community are not exposed to the py3k mailing list. Heck, most people only hear second-hand information from a fellow Pythonista about py3k unless they attended pycon, or - like me - are obsessed with reading things on the internet and constantly troll mailing list archives. So when something like Guido's original post gets around - people who were not directly exposed to the discussion around why changes where made, who have not read the PEPs, or are worried about the fracturing of the community make posts on their weblogs, and the echo chamber effect takes hold - someone sees one posts, responds, someone sees the response to that, and responds but lacks the context of the original, and so on. The discussion gets so far from the original decision that it gets difficult to figure out the original point. All of this takes place in public.

We should all get closer to the source - I actually created a Python 3000 search engine: Python 3000 Google Search to help look up python 3000 information (I'll add more sites as I find them).

Through all of the discussions, here's one of the ones I clapped for:

Python is not trying to be Haskell. Besides, if it is Haskell we want, we know where to find it. Only that I had to write Python code, after something like one-and-one-half years of straight Ruby (no, not Rails, just scripting) and Haskell + OCaml, and I found that my expectations had changed along with my style. More recursion, an expectation of implicit returns, et al. So, I'm generally rusting at Python. But ... Python is becoming a better Python, and I really would have loved to be in the community yet. Python is great, even without being of the paradigm I favour these days.

Yes. Exactly. Precisely.

Doug already listed out a bunch of the posts - here's the list again, with additions as I find them:

There have been a lot of historical posts too: By far the best place to look, or get a sense of look, feel or other things?

woot:~ jesse$ cd subversion/ woot:~/subversion jesse$ ls Pyro python3k-svn update-py3k update-python pypy-dist scriptutil update-pypy update-scriptutil python-svn tahoe update-pyro update-tahoe woot:~/subversion jesse$ sh update-py3k U python3k-svn Checked out revision 56083. woot:~/subversion jesse$ cd python3k-svn woot:~/subversion/python3k-svn jesse$ ./configure checking MACHDEP... darwin woot:~/subversion/python3k-svn jesse$ ./python.exe Python 3.0x (p3yk:56083, Jun 23 2007, 21:57:25) [GCC 4.0.1 (Apple Computer, Inc. build 5367)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> print 'hey dude' File "", line 1 print 'hey dude' ^ SyntaxError: invalid syntax >>> raise Exception, 'Oh noes' Traceback (most recent call last): File "", line 1, in Exception: Oh noes >>>

In all seriousness, with regards to Python 3000 - I don't think there are any losers, at all. Yes, the transition will be gradual, the size of the individual code base being converted will obviously dictate the length by which that team has to stick with the 2.x series. Yes, the "core python team" will with everyone they can to help drive this effort, as will all python 3000 adopters.

And yes, it will be a long road - as anyone who has worked on an appliance/embedded device will tell you, change to core internals (JVMs, interpreters, Kernels) comes slow. Sometimes, you have to have 2-3 or more versions actively being tested or installed as a fallback position. Heck! Some of the machines I work on are still based on python 2.3, which is why on my laptop I have 2.3, 2.4 and 2.5 - the project I get paid to work on is largely 2.4 which means I can not adopt much of the "rest of the communities" nice tools that came in 2.5. 2.6 is a year or more from my grasp.

Many people will first experiment with whatever their OS ships. OS/X Leopard will ship with Python 2.5 - Fedora Core, Ubuntu and other Linuxes will see 2.5 rolled out as well. The world will continue for us on 2.x for the next few years as we work on conversion kinks. Most OSes should ship both a 2.x and 3.x interpreter as soon as 3.x hits final - the larger frameworks will probably start their initial courtship with 3k around alpha/beta.

In 3 years? 2.5 will be a punch line to a joke in a doc string. This is not revolution - nothing is going to die here. But as in Evolution, some people get wings sooner than other, that's all - and we might have to glue wings onto some of the lowly earth-bound. As Martijn points out, there will be confusion - yes! There shall be such confusion - and all of us who are debating this now amongst ourselves will fly from our mighty ivory towers to help and guide newbies to the Python3k FAQ, to tell them to read the news group archives, and maybe we'll even help them convert their code. Change is scary, but it's also fun.

Brett, Guido and the rest of the core devs are people just like the rest of us - the process is open, transparent and discussed (in the open). Get involved, sign up to the mailing list and air your concerns, sync subversion - get syntax errors! Go forth and be Pythonic but remember all of this is still being developed, and we can all enact change.

update: Shilling my brand new Python 3000 Resource page, I am!