I don't think Python 3 was a mistake. I understand the reasons for doing it, and the difficult decision making process there. I also have tremendous confidence in core dev team and Guido to make the right decisions even if they are difficult.
However, I think calling it Python-next or -NG or something non-numerical would have been better, and CLEARLY signalling that Python 2.x IS NOT DEAD. The big problem is that 3 is bigger than 2, and by advertising that 3 is not yet ready but 2 will no longer be supported, there is sort of an Osborne effect (http://en.wikipedia.org/wiki/Osborne_effect) that is hurting adoption of Python 2 AND Python 3.
"Python 3 is the future" but "Python 2 is also the immediate future", like for the next 3-4 years AT LEAST. My company is undoubtedly going to need to support it for well beyond that. There is no problem here. Python 2 evolved so much over its point revisions that the idioms in 2.7 for instance are vastly more concise and improved from 2.4. Would it have made sense for someone to not learn Python 2.4 just because eventually 2.7 would improve or deprecate some of the things they'd learned?
Looking through the main python.org page through the eyes of a beginner, it's hard to find clear guidance on this.
My company is squarely in the space of promoting the use of Python for scientific computing and data analysis, and it's difficult sometimes to get folks in the community to recognize the difficult job of ambassadorship to other languages, like R, Java, C#, etc. That being said, there is still tremendous adoption of Python for data and scientific purposes, so I'm not really worried. I'm just sad to hear that a potential newcomer was driven away by unclear messaging.
(Especially to stick with R... <shudder> :-)
It's a bit unfair to try to group the actions of vast swaths of people under the same banner, and penalize them for not acting in concert.
Why isn't the entire Python community using 100% Python3 right now? Because they are a disparate group of people with differing motivations and goals. It's only been in the last year that some major projects have started to support Python3 (e.g. Django). Not everyone has the luxury of spending all their time porting over existing code-bases to Python3 the moment that it's possible.
Developing in Python also seems an either/or proposition: either you target v2 or v3. This puts library authors in the unenviable position of supporting two code bases.
I'm not in the scientific field so forgive me if I'm being parochial but I've been writing software in Py3k exclusively for a year and half now. Using scientific computing, distributed queue processing, webapp, CLI utilities, etc...
[EDIT] Better words.
Remember, he's looking at using Python for the first time. I work in Perl-heavy environments, and I can assure you that the 2/3 split in Python is a reason that many will give for not using Python at all. It's very different among those who are already comfortable with Python.
> Most of the major packages support Py3k and if they don't it's usually very simple to port over
For you, maybe. He's just starting with Python.
With regards to scientific Python, I took a peek at the install link on the Ipython site. It says that Ipython works with Python 2.6, 2.7, and >= 3.2. That was only mention I saw (in an admittedly casual look) for Python3. All the examples were in Python2.
I don't know Python, but I've gone through a few phases where I'll play with it for a bit and then put it back down. (Incidentally, I appear to be entering a "play" phase right now.)
I can't explain it exactly, but the 2/3 thing makes me really uneasy about learning the language.
On one side, there is Python 2 which is supposed to die in the non-immediate future. I don't need to learn it, particularly since development isn't my primary career at the moment and I'm unlikely to "need" it before I inevitably switch careers back to dev. If I don't need it now, and I don't expect to be in a situation where I need it in the near future, why not go for Python 3 right away?
On the other side, Python 3 is the new hotness, and it's the future of the language. It's the heir apparent. It's going to be "the" Python in the nearer-than-you-think future.
But it doesn't seem ready. You get the impression that you'll start a greenfield project and then get to a point where you want to drop in a well-known component and you just won't be able to.
You also look at the fact that it's been around for over half a decade yet 80% of of respondents to this survey say they use 2 more than 3, 40% have never touched it, and 20% say the whole thing was a bad idea. If you were walking into that environment, would you really be so quick to disregard it?
I suppose the answer is to just learn it all and try to keep the differences in mind as you go, but it's understandable the a lot of people don't want to half to learn and semi-unlearn the same language all at once.
If you wanted to be safe you'd just start with 2 as it's easier to get help while learning the ecosystem. There's actually not much to learn / relearn when switching - the difficulty has been moving the dependencies to 3 (which is well underway now).
MySQL driver 1: http://pythonhosted.org/oursql/ MySQL driver 2: https://github.com/PyMySQL/PyMySQL
Both are well supported drivers. Much nicer to use than the old Python2 only MySQL-python driver, imo.
I agree completely on the graphics side, though. Terrible.