Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!newsfeed.xs4all.nl!newsfeed4.news.xs4all.nl!xs4all!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.017 X-Spam-Evidence: '*H*': 0.97; '*S*': 0.00; 'ideally': 0.04; 'value,': 0.04; 'subject:Python': 0.06; 'incompatible': 0.07; 'coding,': 0.09; 'yeah,': 0.09; 'cc:addr:python-list': 0.11; 'python': 0.11; 'jan': 0.12; '2.7': 0.14; '"requires': 0.16; '3.3,': 0.16; 'backwards': 0.16; 'complaints,': 0.16; 'directive': 0.16; 'from:addr:rosuav': 0.16; 'from:name:chris angelico': 0.16; 'per- module': 0.16; 'perceived': 0.16; 'wrote:': 0.18; 'library': 0.18; 'written': 0.21; 'coding': 0.22; 'cc:addr:python.org': 0.22; '(or': 0.24; 'cc:2**0': 0.24; '(for': 0.26; 'header:In-Reply- To:1': 0.27; 'point': 0.28; "doesn't": 0.30; 'said,': 0.30; 'message-id:@mail.gmail.com': 0.30; "i'm": 0.30; 'code': 0.31; 'question:': 0.31; 'stuff': 0.32; 'entirely': 0.33; 'subject:the': 0.34; "can't": 0.35; 'but': 0.35; 'received:google.com': 0.35; 'there': 0.35; 'are,': 0.36; 'complete.': 0.36; 'largely': 0.36; 'transition': 0.36; 'done': 0.36; 'doing': 0.36; 'should': 0.36; 'application': 0.37; 'two': 0.37; 'being': 0.38; 'issue': 0.38; 'fact': 0.38; 'pm,': 0.38; 'that,': 0.38; 'little': 0.38; 'does': 0.39; 'supporting': 0.39; 'changed': 0.39; 'even': 0.60; 'future': 0.60; 'cost.': 0.60; 'conversion': 0.61; 'lower': 0.61; 'matter': 0.61; 'simply': 0.61; 'making': 0.63; 'address': 0.63; 'kind': 0.63; 'more': 0.64; 'between': 0.67; 'increase': 0.74; 'move.': 0.84; 'moves': 0.84; 'top.': 0.84; 'to:none': 0.92; 'hands': 0.96; 'wholesale': 0.96 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:cc :content-type; bh=zgfNtdv7qPZtvQNAiq43Xg9q4Lhle9UGPVQtFS5wpQI=; b=UrYTV9Hip4qWQyTBOo+Srs1svc65q3z7mm0nzmXeDzCa0nu9sgqe7nGgNEGlpyXGJ6 wDdVHYpAxuR5Yij6ytOjcDYdcSn5az04vQ/Vd+26GD3Vg7hnPm4KlZ2Pmq4ndn0rH56m Y45gHzEGyh38NdcxB7jYKM/IR0bTjhiGLHzYoQpKZvYhzJw1pWRQB0UPl86Pqrx1Rzv8 6D37qElc82ga2tpa8qYKJ0oGvFXMp9pBkLBs24PdkN7HuXuYmyuMtgzOeTaW2+YskElt A1RfV6wBXJJ/iTZrnD9sJ+lrx1kI8eUS5zyMDDUx2QP//u8F3ht1meUQPSnPLisjPTcb gnHA== MIME-Version: 1.0 X-Received: by 10.68.183.164 with SMTP id en4mr10577658pbc.169.1389067182448; Mon, 06 Jan 2014 19:59:42 -0800 (PST) In-Reply-To: References: Date: Tue, 7 Jan 2014 14:59:42 +1100 Subject: Re: the Gravity of Python 2 From: Chris Angelico Cc: "python-list@python.org" Content-Type: text/plain; charset=UTF-8 X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 33 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1389067191 news.xs4all.nl 2891 [2001:888:2000:d::a6]:41714 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:63410 On Tue, Jan 7, 2014 at 2:12 PM, Devin Jeanpierre wrote: > Doing a flag like that that enables a backwards incompatible change > does in fact address that issue you were worried about originally, so > that's something. And feature-by-feature moves are, like the OP said, > still lower cost than a wholesale move. > > In the end a gradual transition can still be done with the polyglot > approach, but I'm not happy that there's no way to enforce/test a > polyglot conversion until it is complete. Any kind of granularity > would have helped. :( Yeah, feature-by-feature is possible; but it doesn't help with one of the big (and common) complaints, that a library can't migrate without the application migrating. The way I see it, polyglot coding should be considered a superset of 2.7 coding, at which point there should hopefully be some perceived value in boasting "Requires 2.7 *OR 3.3*!", and ideally that value should be greater than the cost of supporting both. There are two ways to achieve that: Increase the perceived value, and decrease the cost. Making 3.3 (or 3.4, or whatever) look better is simply a matter of there being more applications (or potential applications) written for that, and that's going to be largely circular, and it's completely not in the hands of Python development, so the focus has to be on decreasing the cost. Hence the question: What are the breakages between 2.7 and 3.3, and which ones can be solved per-module? If the solution to the breakage has to be done per-application, that's a problem, even if it is feature-by-feature. But stuff that can be changed per-module can entirely eliminate the cost of polyglot code (for that feature), as it'll simply be written in the Py3 way, with one little future directive at the top. ChrisA