The more you know — the discussion around Python 3000

June 23rd, 2007 § 5 comments

I had a nice long post to talk about all the rounded up posts about python 3000 — all of the ones wor­ried, with admit­tedly good cause, and all those defend­ing the process.

Rather than post the long winded ver­sion, here’s the abbre­vi­ated sum­mary and a few side notes — Doug has already sum­ma­rized some of my thoughts and with Brett’s lat­est “Python-Dev does care about the 2.x -> 3.0 tran­si­tion” post really tak­ing the cake with regards to how I feel about this.

Per Brett:

In the end it all doesn’t mat­ter. Python 2.x is not going any­where, 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 bet­ter for it. I know that I will end up devel­op­ing for Py3K exclu­sively when­ever I can and be hap­pier for it. Hope­fully most of you will end up being hap­pier as well.

To date there has been some arm wav­ing and con­cern raised by var­i­ous peo­ple around the frac­tur­ing of the Python com­mu­nity (not just Mar­tijn mind you (so I am not pick­ing on you)) around the python2x to 3x con­ver­sion and changes com­ing in the lan­guage. There have been many dis­cus­sions around this across the internet(s), mail­ing lists and blogs.

But a warn­ing — before you take any sin­gle blog post at face value, and before you jump to any con­clu­sions about how hard, or what has already been dis­cussed — you really need to look up the his­tory (via the peps and mail­ing list) of Python 3000’s devel­op­ment, that’s where a lot of the real work has occurred.

Remem­ber many peo­ple in the com­mu­nity are not exposed to the py3k mail­ing list. Heck, most peo­ple only hear second-hand infor­ma­tion from a fel­low Python­ista about py3k unless they attended pycon, or — like me — are obsessed with read­ing things on the inter­net and con­stantly troll mail­ing list archives. So when some­thing like Guido’s orig­i­nal post gets around — peo­ple who were not directly exposed to the dis­cus­sion around why changes where made, who have not read the PEPs, or are wor­ried about the frac­tur­ing of the com­mu­nity make posts on their weblogs, and the echo cham­ber effect takes hold — some­one sees one posts, responds, some­one sees the response to that, and responds but lacks the con­text of the orig­i­nal, and so on. The dis­cus­sion gets so far from the orig­i­nal deci­sion that it gets dif­fi­cult to fig­ure out the orig­i­nal point. All of this takes place in public.

We should all get closer to the source — I actu­ally cre­ated a Python 3000 search engine: Python 3000 Google Search to help look up python 3000 infor­ma­tion (I’ll add more sites as I find them).

Through all of the dis­cus­sions, here’s one of the ones I clapped for:

Python is not try­ing 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 some­thing like one-and-one-half years of straight Ruby (no, not Rails, just script­ing) and Haskell + OCaml, and I found that my expec­ta­tions had changed along with my style. More recur­sion, an expec­ta­tion of implicit returns, et al. So, I’m gen­er­ally rust­ing at Python. But … Python is becom­ing a bet­ter Python, and I really would have loved to be in the com­mu­nity yet. Python is great, even with­out being of the par­a­digm I favour these days.

Yes. Exactly. Precisely.

Doug already listed out a bunch of the posts — here’s the list again, with addi­tions as I find them:

There have been a lot of his­tor­i­cal 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 seri­ous­ness, with regards to Python 3000 — I don’t think there are any losers, at all. Yes, the tran­si­tion will be grad­ual, the size of the indi­vid­ual code base being con­verted will obvi­ously dic­tate the length by which that team has to stick with the 2.x series. Yes, the “core python team” will with every­one they can to help drive this effort, as will all python 3000 adopters.

And yes, it will be a long road — as any­one who has worked on an appliance/embedded device will tell you, change to core inter­nals (JVMs, inter­preters, Ker­nels) comes slow. Some­times, you have to have 2–3 or more ver­sions actively being tested or installed as a fall­back posi­tion. Heck! Some of the machines I work on are still based on python 2.3, which is why on my lap­top 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 com­mu­ni­ties” nice tools that came in 2.5. 2.6 is a year or more from my grasp.

Many peo­ple will first exper­i­ment with what­ever their OS ships. OS/X Leop­ard will ship with Python 2.5 — Fedora Core, Ubuntu and other Lin­uxes will see 2.5 rolled out as well. The world will con­tinue for us on 2.x for the next few years as we work on con­ver­sion kinks. Most OSes should ship both a 2.x and 3.x inter­preter as soon as 3.x hits final — the larger frame­works will prob­a­bly start their ini­tial 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 rev­o­lu­tion — noth­ing is going to die here. But as in Evo­lu­tion, some peo­ple get wings sooner than other, that’s all — and we might have to glue wings onto some of the lowly earth-bound. As Mar­tijn points out, there will be con­fu­sion — yes! There shall be such con­fu­sion — and all of us who are debat­ing this now amongst our­selves will fly from our mighty ivory tow­ers to help and guide new­bies to the Python3k FAQ, to tell them to read the news group archives, and maybe we’ll even help them con­vert their code. Change is scary, but it’s also fun.

Brett, Guido and the rest of the core devs are peo­ple just like the rest of us — the process is open, trans­par­ent and dis­cussed (in the open). Get involved, sign up to the mail­ing list and air your con­cerns, sync sub­ver­sion — get syn­tax errors! Go forth and be Pythonic but remem­ber all of this is still being devel­oped, and we can all enact change.

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

  • Brett

    Nice post (but then I am biased =).

  • http://www.jessenoller.com jesse

    I think we all have to be to a cer­tain extent.

  • James Thiele

    When peo­ple won­der “Why are they changing/adding/removing this in Python 3?” they prob­a­bly don’t know the his­tory of the changes. I have been (mostly) lurk­ing on the Py3K mail­ing list since last August and many of the issues were dis­cussed in great detail. The BDFL changed his mind about some fea­tures after par­tic­i­pat­ing in the dis­cus­sions. There may be some changes that seem arbi­trary and/or stu­pid to some peo­ple but the pros and cons were always considered.

  • http://www.jessenoller.com jesse

    Exactly: Change doesn’t occur in a vac­uum, there are rea­sons and there have been dis­cus­sions. The impor­tant thing to remem­ber is that you “can’t please everyone”.

  • Pingback: Las Noyas de Taran

What's this?

You are currently reading The more you know — the discussion around Python 3000 at jessenoller.com.

meta