[Python-Dev] RELEASED Python 3.0 final
glyph at divmod.com
glyph at divmod.com
Fri Dec 5 06:40:46 CET 2008
On 4 Dec, 07:12 pm, python at rcn.com wrote:
>The latter statement worries me. It seems to unnecessarily undermine
>adoption of 3.0. It essentially says, "don't use this". Is that what
I think so. The default case, the case of the user without the
wherewithal to understand the nuances of the distinction between 2.x and
3.x, is a user who should use 2.x. If the user understands what's going
on, they're not going to pay attention to such a notice anyway. I think
Barry did a great job phrasing this; the language in this comment has to
be strong enough to counter the prevailing wisdom that "higher version
number = better". I think it did that without being overly negative.
For most users, especially new users who have yet to be impressed with
Python's power, 2.x is much better. It's not like "library support" is
one small check-box on the language's feature sheet: most of the
attractive things about Python are libraries. Of course I am not free
from bias, being the author of many libraries myself, but it was other
libraries that drew me to Python in the first place.
If you're writing an application with 2.x, you get GTK, Qt, PyGame, PIL,
NumPy, and of course the wonderful Twisted. With 3.0, you get...
Tkinter, and ... pywin32, I guess, although I can't find the download on
sourceforge? A fork of django that "just barely works"? A "half
broken" email module in the stdlib? All things which you can *also* get
on 2.x, modulo the "barely works" and "half broken".
If you're writing a library, even if you intend to support py3 as a
platform on day one, you could reach a much wider audience by simply
writing in 2to3-friendly style and releasing 2.x source. Writing a
3.x-only library will artificially limit your audience and make it much
harder to combine your library with *other* useful Python libraries
which have not yet been ported. There's no 3to2 yet, and maybe there
never will be. ("py3to2" looks like an interesting project, but seems
to be misleadingly named, since I don't think it will help you run your
3.x-source programs on a stock 2.x VM).
The third (albeit much less likely) option is that you're learning
Python to learn to interact with a system that's scriptable in embedded
Python, like Blender or Gimp. I don't think there's a single system of
that variety which uses 3.0 yet, and these will likely be even slower to
move than libraries. So if the user downloads Python 3 and the
accompanying tutorial they're likely to be confused when they try to use
their newly-acquired knowledge to script the tool in question.
Of course, in the long term, maintenance for 2.x is going away and we
are all being gently herded to 3.x. Aren't the things I just talked
about the reason for the continued maintenance of 2.x, though?
It makes sense to talk about 3.1 and beyond, because that points to some
continuity with 3.0. It doesn't make sense to say "don't use it", but
it does make sense to say "use it to get ready for the eventual
direction of the language". For example, my experience so far suggests
that the only motion on Twisted towards 3.x during the 3.0.x/2.6.x cycle
will be us reporting bugs in 2to3 and in the new version of the stdlib.
3.1 is likely to be the first version we could realistically target. I
am sure that many other libraries are in a similar situation, since 2to3
has not yet been exposed to a wide variety of ugly, real-world code, and
nobody's maintaining an #ifdef'd up C extension module yet. By the time
3.1 rolls around, we will all know how this migration strategy is really
working out, and will be able to predict the likely migration timetable
for various libraries with some degree of accuracy.
More information about the Python-Dev