[Twisted-Python] Removing support for old Python 3 versions
Hi everyone! Currently, Twisted supports five Python versions. These are 2.7, 3.3, 3.4, 3.5, and now 3.6. This is more Python versions than Twisted has ever really supported in the past, and even though it is great to support a lot of runtimes, it is becoming a greater burden on Twisted to support so many. The major reasons for this is that newer Python 3 versions include useful features (such as % formatting for bytes) that earlier ones do not. This leads us to having two, or sometimes three, ways of doing something - the Python 2 way, the early Python 3 way, and the new Python 3 way. This introduces complexity (and bugs!) and means we can't really take advantage of anything nice Python 3 gives us in the future, as we still remain compatible with 3.3 and 3.4. As such, I would like to remove support for these Python versions. Using recent statistics (https://langui.sh/2016/12/09/data-driven-decisions/) we can infer that Python 3.3 is on the whole uncommon, despite it being the default Python 3 for Ubuntu 14.04 LTS. We can further infer that adoption of new major versions of Python 3 (Python 3.5 was barely a year old by the time of these stats and yet dwarfed 3.4) is rapid, and so it seems only the latest two or so are worth supporting. The other rationale I have for this is that we no longer have the problem of CentOS 6-style Python 2.6 being put into new production because it's what people ran -- the Brave New World of Docker and containerisation puts us in a different position than we were with Python 2.6. Although this is purely anecdotal, it appears lots of Python 3 installations are not through the operating system (due to how slow the cycles are, and the proliferation of PPAs and Docker containers), and therefore being tied to whatever current OSs support is not doing any Python 3 users a real service. With this rationale, I propose that the next version of Twisted (most likely 17.3) will be the last to support Python 3.3. The question of Python 3.4 support is something that will need further discussion (where 3.3 just plain has the writing on the wall), but I believe a removal of support not long after is reasonable, considering the 3.4 installed base is smaller than that of 2.6. Thoughts? - Amber Brown, Release Owl
On Feb 20, 2017, at 4:46 PM, Amber Brown <hawkowl@atleastfornow.net> wrote:
With this rationale, I propose that the next version of Twisted (most likely 17.3) will be the last to support Python 3.3.
FWIW, we’ve considered dropping support for 3.3 in pip and basically the only reason we didn’t was because it was still technically supported by upstream. I very much doubt that Twisted is going to have a problem dropping 3.3. — Donald Stufft
On Feb 20, 2017, at 2:03 PM, Donald Stufft <donald@stufft.io> wrote:
On Feb 20, 2017, at 4:46 PM, Amber Brown <hawkowl@atleastfornow.net <mailto:hawkowl@atleastfornow.net>> wrote:
With this rationale, I propose that the next version of Twisted (most likely 17.3) will be the last to support Python 3.3.
FWIW, we’ve considered dropping support for 3.3 in pip and basically the only reason we didn’t was because it was still technically supported by upstream. I very much doubt that Twisted is going to have a problem dropping 3.3.
Thanks for this data point, Donald. Personally I think we should drop 3.3 pretty soon. The only reason it's even remotely interesting is that it is the only supported pypy version of py3, but from what I've heard it's already better to just use the nightly builds of the 3.5 branch. -g
On Mon, Feb 20, 2017 at 1:46 PM, Amber Brown <hawkowl@atleastfornow.net> wrote:
With this rationale, I propose that the next version of Twisted (most likely 17.3) will be the last to support Python 3.3. The question of Python 3.4 support is something that will need further discussion (where 3.3 just plain has the writing on the wall), but I believe a removal of support not long after is reasonable, considering the 3.4 installed base is smaller than that of 2.6.
This sounds OK to me. Up until this year, large parts of Twisted didn't work with Python 3 at all, so I don't think there are many Python 3.3 Twisted users out there. -- Craig
In general I'd say we should take into account LTS releases. OTOH Python 3 adoption is still rather low and tends toward newer versions with fast upgrading. There's deadsnakes and there's SC and there's Docker. I think it's totally fair to drop everything before 3.5 since that gives us nice goodies that make a lot of sense for Twisted. A volunteer driven project gets to choose their own priorities and there's no entitlement to shiny new features on old Pythons. 3.3 should die immediately. 3.4 should follow ASAP. Sent from my phone apologies for top posting.
Am 20.02.2017 um 22:46 schrieb Amber Brown <hawkowl@atleastfornow.net>:
Hi everyone!
Currently, Twisted supports five Python versions. These are 2.7, 3.3, 3.4, 3.5, and now 3.6. This is more Python versions than Twisted has ever really supported in the past, and even though it is great to support a lot of runtimes, it is becoming a greater burden on Twisted to support so many.
The major reasons for this is that newer Python 3 versions include useful features (such as % formatting for bytes) that earlier ones do not. This leads us to having two, or sometimes three, ways of doing something - the Python 2 way, the early Python 3 way, and the new Python 3 way. This introduces complexity (and bugs!) and means we can't really take advantage of anything nice Python 3 gives us in the future, as we still remain compatible with 3.3 and 3.4.
As such, I would like to remove support for these Python versions. Using recent statistics (https://langui.sh/2016/12/09/data-driven-decisions/) we can infer that Python 3.3 is on the whole uncommon, despite it being the default Python 3 for Ubuntu 14.04 LTS. We can further infer that adoption of new major versions of Python 3 (Python 3.5 was barely a year old by the time of these stats and yet dwarfed 3.4) is rapid, and so it seems only the latest two or so are worth supporting.
The other rationale I have for this is that we no longer have the problem of CentOS 6-style Python 2.6 being put into new production because it's what people ran -- the Brave New World of Docker and containerisation puts us in a different position than we were with Python 2.6. Although this is purely anecdotal, it appears lots of Python 3 installations are not through the operating system (due to how slow the cycles are, and the proliferation of PPAs and Docker containers), and therefore being tied to whatever current OSs support is not doing any Python 3 users a real service.
With this rationale, I propose that the next version of Twisted (most likely 17.3) will be the last to support Python 3.3. The question of Python 3.4 support is something that will need further discussion (where 3.3 just plain has the writing on the wall), but I believe a removal of support not long after is reasonable, considering the 3.4 installed base is smaller than that of 2.6.
Thoughts?
- Amber Brown, Release Owl _______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
On Tue, Feb 21, 2017 at 2:27 AM, Hynek Schlawack <hs@ox.cx> wrote:
3.3 should die immediately. 3.4 should follow ASAP.only the latest two or so are worth supporting.
Debian Jessie (which also means Raspbian Jessie, which is my primary concern) uses Python 3.4, so I would hope that Python 3.4 support in Twisted would not be dropped for a while. -- Jeff Ollie The majestik møøse is one of the mäni interesting furry animals in Sweden.
Debian 9 (Stretch) is in final freeze and will become the new stable release very soon (a month or so?). By the time we drop 3.4 support, Stretch will be current stable, so my recommendation would be to upgrade to Stretch when it comes available, and use the Python 3.5 it ships with. Alternatively, you could install 3.6 through pyenv or some other source on Jessie. - Amber On 23 Feb 2017 4:50 AM, "Jeffrey Ollie" <jeff@ocjtech.us> wrote:
On Tue, Feb 21, 2017 at 2:27 AM, Hynek Schlawack <hs@ox.cx> wrote:
3.3 should die immediately. 3.4 should follow ASAP.only the latest two or so are worth supporting.
Debian Jessie (which also means Raspbian Jessie, which is my primary concern) uses Python 3.4, so I would hope that Python 3.4 support in Twisted would not be dropped for a while.
-- Jeff Ollie The majestik møøse is one of the mäni interesting furry animals in Sweden.
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
On Feb 22, 2017, at 9:50 AM, Jeffrey Ollie <jeff@ocjtech.us> wrote:
On Tue, Feb 21, 2017 at 2:27 AM, Hynek Schlawack <hs@ox.cx <mailto:hs@ox.cx>> wrote:
3.3 should die immediately. 3.4 should follow ASAP.only the latest two or so are worth supporting.
Debian Jessie (which also means Raspbian Jessie, which is my primary concern) uses Python 3.4, so I would hope that Python 3.4 support in Twisted would not be dropped for a while.
Is there a "pre-installed on hardware that's hard to change" issue here? Do Raspbian users generally upgrade to new stable releases? -g
On Thu, Feb 23, 2017 at 1:30 AM, Glyph Lefkowitz <glyph@twistedmatrix.com> wrote:
Is there a "pre-installed on hardware that's hard to change" issue here? Do Raspbian users generally upgrade to new stable releases?
-g
There's also a substantial lag after a Debian release before the corresponding version of Raspbian becomes generally available. Debian Jessie was released April 2015, but Raspbian Jessie looks to have gone GA in September[1] (though you could get it sooner by adjusting your apt sources). [1]: https://www.raspberrypi.org/blog/raspbian-jessie-is-here/ ---Tom
On Feb 24, 2017, at 3:29 PM, Tom Most <tommost@gmail.com> wrote:
On Thu, Feb 23, 2017 at 1:30 AM, Glyph Lefkowitz <glyph@twistedmatrix.com <mailto:glyph@twistedmatrix.com>> wrote:
Is there a "pre-installed on hardware that's hard to change" issue here? Do Raspbian users generally upgrade to new stable releases?
-g
There's also a substantial lag after a Debian release before the corresponding version of Raspbian becomes generally available. Debian Jessie was released April 2015, but Raspbian Jessie looks to have gone GA in September[1] (though you could get it sooner by adjusting your apt sources).
[1]: https://www.raspberrypi.org/blog/raspbian-jessie-is-here/ <https://www.raspberrypi.org/blog/raspbian-jessie-is-here/>
So Jesse (== CPython 3.4) is still what's current for Raspbian users? -glyph
Yes, this is what my Raspbian system reports: Python 3.4.2 (default, Oct 19 2014, 13:31:11) [GCC 4.9.1] on linux ---Tom On Fri, Feb 24, 2017 at 6:01 PM, Glyph Lefkowitz <glyph@twistedmatrix.com> wrote:
On Feb 24, 2017, at 3:29 PM, Tom Most <tommost@gmail.com> wrote:
On Thu, Feb 23, 2017 at 1:30 AM, Glyph Lefkowitz <glyph@twistedmatrix.com> wrote:
Is there a "pre-installed on hardware that's hard to change" issue here? Do Raspbian users generally upgrade to new stable releases?
-g
There's also a substantial lag after a Debian release before the corresponding version of Raspbian becomes generally available. Debian Jessie was released April 2015, but Raspbian Jessie looks to have gone GA in September[1] (though you could get it sooner by adjusting your apt sources).
[1]: https://www.raspberrypi.org/blog/raspbian-jessie-is-here/
So Jesse (== CPython 3.4) is still what's current for Raspbian users?
-glyph
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
Perhaps we should add a Raspbian builder if this is a platform of interest to Twisted users. (And I do think it should be.) Are there big / fast raspberry pi emulators so we don't need to wait for the test suite to run on such a slow / small machine?
On Feb 27, 2017, at 3:38 PM, Tom Most <tommost@gmail.com> wrote:
Yes, this is what my Raspbian system reports:
Python 3.4.2 (default, Oct 19 2014, 13:31:11) [GCC 4.9.1] on linux
---Tom
On Fri, Feb 24, 2017 at 6:01 PM, Glyph Lefkowitz <glyph@twistedmatrix.com <mailto:glyph@twistedmatrix.com>> wrote:
On Feb 24, 2017, at 3:29 PM, Tom Most <tommost@gmail.com <mailto:tommost@gmail.com>> wrote:
On Thu, Feb 23, 2017 at 1:30 AM, Glyph Lefkowitz <glyph@twistedmatrix.com <mailto:glyph@twistedmatrix.com>> wrote:
Is there a "pre-installed on hardware that's hard to change" issue here? Do Raspbian users generally upgrade to new stable releases?
-g
There's also a substantial lag after a Debian release before the corresponding version of Raspbian becomes generally available. Debian Jessie was released April 2015, but Raspbian Jessie looks to have gone GA in September[1] (though you could get it sooner by adjusting your apt sources).
[1]: https://www.raspberrypi.org/blog/raspbian-jessie-is-here/ <https://www.raspberrypi.org/blog/raspbian-jessie-is-here/>
So Jesse (== CPython 3.4) is still what's current for Raspbian users?
-glyph
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com <mailto:Twisted-Python@twistedmatrix.com> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python <http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python>
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
Dropping 3.3 makes sense, as does deprecating 3.4 The only thing I suggest/request is a webpage (and possibly txtfile in the source) that lists the supported Python versions. When people runs into issues, finding this info quickly is just so useful. e.g. Version Python2 Python3 Twisted 17.3 2.x+ 3.x+ Twisted 17.1 2.x+ 3.x+ I helped build the first version of a similar grid for sqlalchemy - http://www.sqlalchemy.org/download.html Mike rewrote most of it over time, but the concept is the same -- as part of the build/deploy process, the grid is automatically generated by querying PyPI for the raw data ( https://bitbucket.org/zzzeek/sqlalchemyorg/src/6d7045b6096c43a6b0f243cbd2b90bff01e5a5ed/_controllers/gen_releases.py?at=master&fileviewer=file-view-default )
On Feb 21, 2017, at 8:31 AM, jonathan vanasco <twisted-python@2xlp.com> wrote:
Dropping 3.3 makes sense, as does deprecating 3.4
The only thing I suggest/request is a webpage (and possibly txtfile in the source) that lists the supported Python versions. When people runs into issues, finding this info quickly is just so useful.
e.g. Version Python2 Python3 Twisted 17.3 2.x+ 3.x+ Twisted 17.1 2.x+ 3.x+
I helped build the first version of a similar grid for sqlalchemy - http://www.sqlalchemy.org/download.html <http://www.sqlalchemy.org/download.html>
Mike rewrote most of it over time, but the concept is the same -- as part of the build/deploy process, the grid is automatically generated by querying PyPI for the raw data ( https://bitbucket.org/zzzeek/sqlalchemyorg/src/6d7045b6096c43a6b0f243cbd2b90bff01e5a5ed/_controllers/gen_releases.py?at=master&fileviewer=file-view-default <https://bitbucket.org/zzzeek/sqlalchemyorg/src/6d7045b6096c43a6b0f243cbd2b90bff01e5a5ed/_controllers/gen_releases.py?at=master&fileviewer=file-view-default> )
This kinda seems like a separate issue. If you want to build the same code for Twisted, we can probably find a place to run it, though - this does look like useful information :) -glyph
On Mon, Feb 20, 2017 at 1:46 PM, Amber Brown <hawkowl@atleastfornow.net> wrote:
As such, I would like to remove support for these Python versions. Using recent statistics (https://langui.sh/2016/12/09/data-driven-decisions/) we can infer that Python 3.3 is on the whole uncommon, despite it being the default Python 3 for Ubuntu 14.04 LTS. We can further infer that adoption of new major versions of Python 3 (Python 3.5 was barely a year old by the time of these stats and yet dwarfed 3.4) is rapid, and so it seems only the latest two or so are worth supporting.
The default in Ubuntu 14.04 is actually Python 3.4. (12.04 shipped with 3.2, and 16.04 has 3.5.) Due to this, I am writing new Twisted code which targets 2.7 + 3.4 right now. I'm not opposed to deprecating Python 3.4, though. Ubuntu 14.04 ships with a version of Python 2.7 that lacks SNI, so I want to shift to 16.04 ASAP anyway.
participants (8)
-
Amber Brown
-
Craig Rodrigues
-
Donald Stufft
-
Glyph Lefkowitz
-
Hynek Schlawack
-
Jeffrey Ollie
-
jonathan vanasco
-
Tom Most