Skip to content

Comment on Python, the Web and Little Things on my Mindparent

Comments

That's what I've been told for the last two years -- it'll come, give it time, etc. Then the developer of a library I use announces that a port to Python 3 is unlikely two years after Python 3 is released, and I'm left with even more questions.

I'm curious since you continue to advise patience how you'd react in my position. I've been patient, and now my library of choice for WSGI coming to Python 3 is, quote, "unlikely". What now? Why should I bother caring about 3, if an influential voice in the Python community doesn't? Armin makes excellent points in his post, to be frank.

The fault line is widening, honestly, because of the lack of forward momentum. Your estimate of Python 3 in production being a year to two years off sounds like it come completely out of thin air, as I'm starting to wonder if it will ever happen.

Most Python libraries are considering and/or starting a port now. Py3 is just now starting to be taken seriously, which is fine by me; we don't need to rush to use the "latest cool thing" as long as we get there eventually. It's good for Py3 to be tested and developed without being flooded for its initial lifecycle, which is what happens here.

Note that this attitude has mostly been guided by the Python Foundation in the first place. Until a few months ago, Python 2 was still actively developed. It has entered maintenance mode with 2.7; all future features or enhancements now go to Py3.

Again, please note that 2.7 was released only about six months ago. Since then, libraries, distributions, and other major players that push normal users to adopt new stuff have been moving to Python 3. As popular low-level libraries make the move higher-level stuff will begin to consider it too; Django's reason for not porting to Python 3 is basically "none of our dependencies run there yet".

This post actually demonstrates the strength of Python 3; while the author doesn't feel that this library specifically is a good candidate for a port, he is thinking about it, and he recommends that users still prepare for the transition. He says, in effect, "write code so that 2to3 can handle it easily when the moment comes", not "give up on Python 3 entirely".

Brett and I were just discussing this - and he put up a post summing it up nicely: http://sayspy.blogspot.com/2011/01/my-semi-regular-reminder-...

Short version? We planned on it taking at least 5 years. Armin's point is that Python 3 isn't "there yet" in terms of demand an adoption. Python 3.2 (which increases performances, and fixes bugs) is just coming out. Armin's point - backed by his comments here, is just that demand isn't high enough for him to dedicate the resources to port.

On the other hand, earlier today he was committing bug fixes to the Python 3 source tree, so there's obvious forward movement.

That's a good post, and I'm glad Brett took the time to share his thoughts. Characterizing me personally as a naysayer is missing my point entirely. Throughout this whole thread, I've mentioned that I have questions. The closest I got to naysaying was a rhetorical "why should I care about 3?". Perhaps that's frustration of others boiling over into his response, but given that my comments were really the catalyst for the post (presumably), I was surprised to read it that way.

Brett, Armin, you, Guido, and the rest of the "in" Python developers expected a long turnaround. I understand that now. Brett touched on something, though: that 5-year estimate was on python-dev. That internal discussion does not percolate up to the rest of us that use Python daily but only lightly pay attention to the development ins and outs. I have learned a valuable lesson from this entire thing, which is that I need to pay attention to all of my tools.

How many end users does Brett expect to read python-dev?

You have to look at this from the perspective of a casual user, or perhaps even a user just getting started with Python today.

People always rush to the newest version, and the "Python 2 or 3?" link on python.org is all the way at the bottom, below even Merchandise. (It should be above the download links, in my opinion.) http://www.python.org/download/ also attempts to very lightly dissuade the user from getting 3:

> they're both considered stable production releases.

> If you don't know which version to use, start with Python 2.7

Those are both true statements, but one can be read as going against the other. Assuming they miss that -- which can be easily blamed on the user, I guess -- new users end up playing around with the Python tutorial in IDLE under Python 3. Maybe a few scripts and adoption of Python 3 specific idioms. Then a friend mentions Django, but wait ... Django doesn't have Python 3 support yet. Now they're confused. What now? Oh, they have to use Python 2 instead, but a lot of code that they've written so far doesn't work under Python 2.

In my very humble opinion, I believe this is a poor time to get started with Python. This transition is hurting new adoption, and there is an incentive to get it finished as quickly as possible. What I don't gather from library developers is a sense of urgency to fix it, and my evidence to that end would probably be the acceptance of PEP 3333 taking ages among other disagreements. The immediate response that I anticipate is well, we don't have the resources, but what I gather from other Python developers like me is that this confusion is hurting more than helping.

I'm honestly not sure how I would have done this differently, and I don't claim to have enough wisdom to even know where I'd begin. My initial question would be, if Python 3 had a 5-year outlook for libraries being ready, why wasn't it stabilized and kept in development for, say, 4 of those years? Was the general release necessary in order to port libraries and get distributions on board with packaging? I understand which I should pick because I have Python experience. A flood of new users probably do not, and comments elsewhere in this thread (such as the suicide one) just demonstrate even more confusion about the entire thing.

Obviously, I fully realize that it's unfair to hold a language back because the libraries need a transition period. However, Python without a library (particularly for Web development) only gets you so far, and the burden is on the library authors now.

I guess the underlying thought is that if Python 3 is given first-class treatment on the python.org brochure, an uninformed user might expect that a choice between the two is unnecessary. That there is a choice that must be made just serves to confuse and alienate users.

My two cents, and I'm probably off base anyway.

Since you took the time to write such a big reply - I owe you the same courtesy. First: I'm not referring to you as a naysayer, just trying to clarify the timeline (both expected and perceived). No - your comments were far from the single catalyst for his post, months of comments built up to that comment, so don't worry - none of this, or that, was a personal attack against you.

I concur - the http://wiki.python.org/moin/Python2orPython3 page needs to be more prominent. I think the entire download page needs to be junked, and completely rethought out, but I, not anyone else I know have the time or the constitution to do it.

So yes, the download page could be better - but I don't know anyone willing to change it.

How would you communicate it? Python-dev is public, the plans and designs of Python 3 are open. The lists are open for questions, and I don't know of a single core developer who would not take the time to answer questions. We've made it as public as possible, and reiterated it at every single PyCon, in every blog post we could, etc.

I completely disagree that this is a poor time to get started with python. There is no confusion: Use Python 2 unless you can use Python 3. I use python2 every day, and have no intention of switching to 3 in production before Django and several other things port over.

The python community (see PEPs, the moratorium, web-sig discussions) moves relatively slowly. We get something that works and then we slowly begin to move towards something else. A lot of discussion, and a lot of thought goes into each step.

For example, yes: the general release was necessary - we need an official release for people to even pay attention. We need an official release for OS distributions to even consider picking it up and shipping it alongside existing Python 2 installs.

Yes, the fact that a choice has to be made sucks: but we, those of us in "core" can do nothing but encourage and help with porting where we can, the PSF can sponsor sprints, and we can bide our time.

As for the length of time to get PEP 3333 accepted? Go look at the web-sig archives to find out way. No decision in the community is made without intense and thorough debate.

Finally, I can understand your frustration - its frustrating I have to keep repeating myself because this confusion exists. But I can sum my opinion really simply: Use Python 2.7 until more libraries and frameworks port.

Everyone is open to how we can improve communication: but we're also short on resources. I do what I can commenting in places like here, and trying to explain to people who don't know.

So, I hope that this "confusion" isn't hurting adoption: we've tried to explain things time and time again, only time and framework/tool and libraries authors porting can help at this point.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.