A Very Modest Gloat, Historical Context Considered

chromatic on 2008-12-07T01:53:26

The Python core developers value the evolutionary approach, and don't tend to get carried away by ambitious projects like a massive revision of the language and interpreter infrastructure (Parrot).

— Martijn Faassen, in a comment on Titus Brown's Perl is Dying?

If I'd spent eight and a three-quarters years designing and implementing a backwards-incompatible revision of a programming language (see Will Python 3000 Break My Code?, from February 2000 -- and that's not the earliest reference to Python 3000, either), I'd set my sights on goals slightly more ambitious than shuffling around the core library, changing the syntax slightly, and improving Unicode.

I'm not criticizing Python 3.0 by any means. It's a decent, modest improvement on a decent, modern language. Just don't mistake it for anything revolutionary, and don't pretend that it didn't also take almost a decade, even with Googlebucks-funded development.


Python 3.0's age

Martijn Faassen on 2008-12-07T22:12:47

I know that people while promoting Python 3 like to say it took 9 years to create, but that's not really the case.

While the idea of a Python 3k that would break backwards compatibility existed for years, it wasn't much more than an idea for a very, very long time. The actual python 3 development branch was created 2 years 8 months ago. I think serious design work didn't start more than a year before that if even that much. It certainly wasn't considered to be a real project until a few years ago.

The really ambitious Python interpreter project is PyPy. That project started in 2003 or thereabouts (long before Python 3 development took off) and still has a way to go.

Re:Python 3.0's age

chromatic on 2008-12-07T22:30:43

It certainly wasn't considered to be a real project until a few years ago.

Larry and I talked to Guido about it on the morning of October 12, 2003, and Guido had been talking about it long enough to have a stump speech and a stable slide deck for it by then. I was there. Denying that it's been in the works for almost nine years is historical revisionism. Don't tell me otherwise; I was there.

I don't really care how long the project has existed in one form or another. Measured from first date of public mention to release is almost nine years. Perl 6 doesn't get a pass because Pugs came about in 2005 or Rakudo's only been Rakudo for a couple of years. For better or worse, the clock started in summer 2000.

Python's a decent language, and Python 3.0 adds some nice (if modest) improvements. None of that justifies a snake-measuring contest at which project has been around longer or released first. They're very different in scope and execution, and only historical revisionists and the ignorant believe that Python 3000 hasn't been in the works for almost nine years. Remember, I was there six years ago, when the design process was already underway.

Re:Python 3.0's age

Martijn Faassen on 2008-12-08T14:47:27

Yeah, I was there too. And Python 3 wasn't a real project until 3 years ago.

In my mind (but perhaps not in yours) Guido's wish to break backwards compatibility and actually starting a project to do so are two quite different things. Guido has had the dream of Python 3.0 for a very long time. I was there to hear him talk about it year after year since the year 2000.

You can look Guido's slides from those times and make a determination yourself:

http://www.python.org/doc/essays/ppt/

In 2003 Guido was talking on his slides about a Python 3.0 project "in 3 years" (starting it? finishing it?). He called that very ambitious. He mentions a few broad ideas of cleanups.

In 2004 at EuroPython (I was there), Guido had a single slide about Python 3.0 repeating the general concept and a few wishlist items.

Later in 2004 at OSCON, Guido's presentation said this about Python 3.0:

* I had a Python 3.0 slide, but it's all day-dreaming

* 3.0 is my excuse for putting off thorny issues

* Has been "about 3 years away" since 2000 :-)

* I need to retire to be able to work on this

* Python 3.0 : 2.x isn't anything like Perl 6.0 : 5.x

* But it will be incompatible

We have established that Python 3 was "day dreaming" acknowledged as such by Guido himself in mid 2004, more than 4 years ago.

By 2005 the Python 3.0 project had gone to a one-slide item again in the previous mold. Then in early 2006 the slides start getting serious about Python 3.0.

Guido was hired by Google about 3 years ago, in october 2005. About that time, the Python 3 project became real, as Guido found himself with enough time to start working on it.

Now you may wish to interpret this as a 9 year old project nonetheless. There certainly was a very long run-up phase in which there was talk about Python 3. But actual concrete design and implementation haven't been going so long.

I was there too. See how much that counts for anything. Who is ignorant here and who is the historical revisionist? Or shall we be polite to each other instead?

Re:Python 3.0's age

Martijn Faassen on 2008-12-08T17:23:34

Since I can't leave this alone, here's a posting on Python 3000 from 2003 from a Python insider:

http://www.amk.ca/diary/2003/01/python_3000_and_perl_6.html

(considering Python 3 dead at that time)

Here's Guido's post where he announces that "We've started discussing Python 3000 for real" (from april 2006):

http://www.artima.com/weblogs/viewpost.jsp?thread=155123

There is no doubt that the idea of a Python 3 had existed for much longer, so your interpretation as a 9 year old project still stands if you want to. I'd say I can make a good case for a much younger project.

Re:Python 3.0's age

chromatic on 2008-12-08T18:50:52

I'd say I can make a good case for a much younger project.

I say judging volunteer-driven projects by calendar dates is silly, if not disingenuous. If Perl 6 and Python 3.0 really need comparisons, let's compare scope and resource allocation.

Re:Python 3.0's age

Martijn Faassen on 2008-12-08T19:27:40

So to summarize:

You're calling me a historical revisionist and/or ignorant after I politely pointed out my differing perspective on the history behind Python 3 development (and yes, I was there too).

I don't believe I'm a historical revisionist or ignorant. So I explain where my perspective is coming from by giving some actual historical data, discussing contents of slides and postings over time.

Now you're calling me silly, if not disingenuous, suggesting I judge the projects by calendar dates. Right?

I don't believe I'm silly nor disingenuous. In my original comment that you quote, I compared the scope of the projects (Python 3.0, much smaller scope). I didn't compare calendar dates. You brought them up yourself, so I pointed out that the Python 3 project did not have significant resource allocation before 2006. It did not really take 9 years to create something of such a limited scope as Python 3.0.

Since you started to bring calendar dates into it in the first place, I can only conclude you're the one who is being silly. :) Or shall we be polite to each other?

I must've ticked you off by my original comment that you quote. I apologize if so.

I have my own experience with projects that took a long time as they involved total rewrites and rethinks of everything (Zope 2 -> Zope 3). This took a very long time to mature. The end result was worthwhile and very useful, though it did make me think about the process and how we could've managed it better. (It's not over. We've also been struggling with the transition between Zope 2 and Zope 3 for 4 years since then)

I trust the Perl 6 project is creating worthwhile end results too.

Re:Python 3.0's age

chromatic on 2008-12-08T19:48:31

I must've ticked you off by my original comment that you quote.

Implying that Perl 6 is poorly managed and overly ambitious, and agreeing with Titus that there's no roadmap for Perl 6 certainly did not endear your comments to me. How did you intend people to read that, other than "Despite the Python world having talked about Python 3000 for several years and working on in for three years and producing necessary but modest results, we're better than those Perl 6 jokers!"

All I'm saying is let's make the comparison fair.

Re:Python 3.0's age

Martijn Faassen on 2008-12-08T20:32:22

Point taken. My apologies. Stupid, but I hadn't realized that this had set this off. I shall be more thoughtful next time I say something about Perl 6 (which is below).

Small point: I am not a Python core developer, so I don't believe *we* did better. In fact I was ineptly trying to be positive towards the Python core developers as I had quite a run-in with some of them criticizing Python 3 last year. I also don't think you're jokers. I piss off all language developers equally. :)

Another small point: I didn't say any "despite working on it for 3 years" - they've worked on it for a couple of years and got relatively modest results, no "despite" about it. Sorry you read that into it; wasn't my intent.

I do believe that the Perl 6 project was started as a rather massive undertaking with a huge scope, and therefore risky. I imagine this has lead to some uncertainty in the Perl community. The existence of the Zope 3 project certainly lead to uncertainty in the Zope community, and Python 3 lead to uncertainty in *me* that still hasn't gone away. Don't you think that with what you know now, the Perl 6 project would've done some things differently?

I think that's in part what happened with Guido. I know Guido has said multiple times Python 3.0 was going to be like the Perl 6 project. That wasn't always the case. Back in 2002 he was saying the following about Python 3:

Zope 3 experience may be relevant
  – Rebuild from scratch
        • Refactor mercilessly during development
        • No concern for backwards compatibility
                – But learn from past: good ideas, bad ideas
        • Use coding "sprints"
  – Later, add compatibility (Zope 3x -> Zope 3)
  – Or: Later, merge best features back into 2.x

The "rebuild from scratch" approach wasn't taken in the end. I think this was a good decision. I say this as a Zope insider heavily involved with Zope 3 (and we did merge features back into 2.x), and as a long-time follower of the PyPy project (which does rebuild the interpreter from scratch). I think Guido changed his mind on this in part because he observed the Perl 6 project taking such a long time.

A fairer comparison would be comparing the PyPy project with Perl 6. PyPy has a more ambitious scope in interpreter infrastructure (JIT generator!) than the Perl 6 project does, although it doesn't change the syntax or semantics of the Python language at all (less ambitious there). PyPy is rebuilt from scratch too.

Not unexpectedly, the running times of both projects aren't dissimilar either. The PyPy project has been going on for many years, got significant EU funding, and the end isn't in sight yet. While they have a working Python interpreter, it's not a very attractive platform right now as it's slower than CPython and has far less library support. That might change if they ever get their JIT generation infrastructure going for the Python interpreter. This could potentially make PyPy a much faster Python interpreter than CPython.

The PyPy people, to my frustration, don't have a very clear roadmap. I shouldn't have agreed (by implication) with Titus on the Perl 6 roadmap, as I recall seeing Perl 6 roadmap discussions in the past.

Managing expectations, in my experience with Zope, is much harder if your version number implies you're the designated successor of the older version. That's part of the reason I worry about Python 3 - expectations are that this is the latest greatest version everybody should be using as soon as possible, while the reality is that there is an enormous quantity of porting work to be done that will take years.

I think those are fairer comparisons. I hope you'll agree and we can continue in a more positive way.

Re:Python 3.0's age

Martijn Faassen on 2008-12-09T11:50:26

I meant of course to say Guido has said several times Python 3 isn't going to be like Perl 6.