On Tue, Jun 18, 2019 at 2:01 PM Ahmet Altay <al...@google.com> wrote:
> Thank you for the update, very helpful. It might be worthwhile to share a > version of this with user mailing list after 2.14. > I think so too, we can send an update to user list when 2.14.0 is released. > Remaining question for me is: There is no plan for an LTS release > currently. Would it make sense for us to target one after known remaining > issues are mostly fixed. What release would that be? > >From Python 3 standpoint, 2.16.0 could be a good target for an LTS release, that would give us two more releases in 2019 where we can mark Python 2 support as deprecated and remove it with the first release in 2020. > > On Tue, Jun 18, 2019 at 12:08 AM Valentyn Tymofieiev <valen...@google.com> > wrote: > >> To give a better understanding where we are w.r.t. Python 3, I'd like to >> give a quick overview of the recent work that has been happening in Beam >> community to support Python 3, and to summarize the current status of this >> effort. >> >> Current status: >> >> 1. >> >> Beam 2.11.0 was the first release that offered Python 3 support, >> specifically Python 3.5 support. Due to several limitations that have been >> fixed since 2.11.0, Beam 2.13.0 (or newer version) is recommended for >> Python 3 pipelines. >> 2. >> >> Pipelines running on Portable Flink / Spark runners may have to use >> Beam 2.14.0 once it becomes available. >> 3. >> >> Python 3.5 or newer version of the interpreter is required to install >> Beam and run Python 3 pipelines. >> >> >> Known remaining limitations of current Python 3 offering: >> >> >> 1. >> >> Several syntactic constructs introduced in Python 3 (keyword-only >> arguments, dataclasses), are not yet supported. See: BEAM-5878, BEAM-7284. >> 2. >> >> Pickling errors occasionally prevent usage of --save_main_session >> flag, but changes to the pipeline code may help to overcome this >> limitation. See: BEAM-6158, BEAM-7540 >> 3. >> >> Beam has limited type inference capabilities support in Python 3.6+, >> and type checking of Beam typehints is not always enforced, see: >> BEAM-2713, >> BEAM-7377. >> >> >> The cause of limitations 1-2 largely lies in Beam dependency 'dill' that >> supports pickling. In the immediate future we will be working on evaluating >> replacements or/and fixes to address this. We are also working on an >> improved typehints support in Python 3, see: BEAM-2713. >> >> The efforts to make Beam codebase Python3-compatible started back in >> 2017. Most of this work is visible in BEAM-1251[1] and in Kanban Board [2]. >> >> >> 2017: >> >> - >> >> BEAM-1251 is opened, and first efforts to make Beam codebase >> Python3-compatible followed shortly. >> >> >> Q3-Q4 2019: >> >> - >> >> Active work on "futurizing" Beam codebase piece-by-piece while >> preventing regressions in performance in existing Python 2 offering. >> - >> >> Building test infrastructure to incorporate Python 3 test scenarios. >> >> >> Apache Beam 2.11.0 (Q1 2019): >> >> - >> >> "Futurization" of Beam Python codebase completed. >> - >> >> Apache Beam 2.11.0 is released with Python 3 support, with >> limitations. >> - >> >> Continuous pre-commit and post-commit test suites added for Python >> 3.5. >> - >> >> Gaps in Python 3 support in Datastore IO, Avro IO, Bigquery IO >> identified and scoped. >> - >> >> Continuous testing mostly limited to Python 3.5. >> >> >> Apache Beam 2.12.0 (Q2 2019): >> >> - >> >> Pre and Post-commit test coverage expanded to Python 3.5, 3.6, 3.7. >> - >> >> Direct and Dataflow runners added support for Python 3.6 - 3.7. >> >> >> Apache Beam 2.13.0 (Q2 2019) >> >> - >> >> Avro IO support enabled on Python 3. >> - >> >> Datastore IO support enabled on Python 3. >> - >> >> Bigquery IO support for BYTES datatype enabled on Python 3. >> >> >> Apache Beam 2.14.0 (to be released in Q3 2019) >> >> - >> >> Python 3 bug fixes for Bigquery IO and Portable Runner >> - >> >> Every Python SDK commit exercises Direct, Dataflow, and Portable >> Flink runners on Python 3 in various test suites. >> - >> >> Beam 2.14.0 will declare Python 3.5, 3.6, 3.7 support in PyPi. >> >> >> Next steps: >> >> - >> >> Address known limitations and user feedback. >> - >> >> Increase Python 3 test coverage in portable runner. >> - >> >> Assist Beam users in Python 2 -> Python 3 migration. >> - >> >> Deprecate of Python 2 support in Beam, cleanup the codebase. >> >> >> I'd like to thank all Beam contributors who have been helping to push >> this effort so far. >> >> >> [1] https://issues.apache.org/jira/browse/BEAM-1251 >> >> [2] >> https://issues.apache.org/jira/secure/RapidBoard.jspa?rapidView=245&view=detail >> >> On Tue, Jun 18, 2019 at 12:03 AM Valentyn Tymofieiev <valen...@google.com> >> wrote: >> >>> I like the update Ismaël referenced [1], I think we should prepare a >>> similar update for Beam users. I would propose the following: >>> - Designate last LTS release that we will have in 2019 to be the last >>> LTS release with Python 2 support. >>> - Add a Beam-specific deprecation warning on Python 2 starting from the >>> last LTS release, or last 2 releases of Beam in 2019, whichever happens >>> earlier. >>> - Remove Python 2 support starting from the first release in 2020. >>> >>> The cost of maintaining Python 2.7 support is higher than 0. Some issues >>> that come to mind: >>> - Maintaining Py2.7 / Py 3+ compatibility of Beam codebase makes it >>> difficult to use Python 3 syntax in Beam which may be necessary to support >>> and test syntactic constructs introduced in Python 3. >>> - Running additional test suites increases the load on test >>> infrastructure and increases flakiness. >>> >>> [1] https://spark.apache.org/news/plan-for-dropping-python-2 >>> -support.html >>> >>> On Tue, Jun 11, 2019 at 7:57 AM Robert Bradshaw <rober...@google.com> >>> wrote: >>> >>>> Sounds good. >>>> >>>> On Fri, Jun 7, 2019 at 8:28 PM Ahmet Altay <al...@google.com> wrote: >>>> >>>>> I agree with you. A more recent LTS release with python 2 support will >>>>> be good. Cost of maintaining python 2 support is also fairly low (maybe >>>>> zero actually besides keeping some pre-existing compatibility code). >>>>> >>>>> I believe we are referring to two separate things with support: >>>>> - Supporting existing releases for patches - I agree that we need to >>>>> give users a long enough window to upgrade. Great if it happens with an >>>>> LTS >>>>> release. Even if it does not, I think it will be fair to offer patches on >>>>> the last python 2 supporting release during some part of 2020 if that >>>>> becomes necessary. >>>>> - Making new releases with python 2 support - Each new Beam release >>>>> with python 2 support will implicitly extend the lifetime of beam's python >>>>> 2 support. I do not think we need to extend this to beyond 2019. 2 >>>>> releases >>>>> (~ 3 months) after solid python 3 support will very likely put the last >>>>> python 2 supporting release to last quarter of 2019 already. >>>>> >>>>> On Fri, Jun 7, 2019 at 2:15 AM Robert Bradshaw <rober...@google.com> >>>>> wrote: >>>>> >>>>>> I don't think the second release with robust/recommended Python 3 >>>>>> support should be the last release with Python 2 support--that is >>>>>> simply not enough time for people to migrate. (Look at how long it >>>>>> took us...) It does make a lot of sense to at least have one LTS >>>>>> release with support for both. >>>>>> >>>>>> Regarding timeline, I think we could safely say we expect to support >>>>>> Python 2 through 2019, likely for some of 2020 (possibly only via an >>>>>> LTS release), and (very) unlikely beyond 2020. >>>>>> >>>>>> On Wed, Jun 5, 2019 at 6:34 PM Ahmet Altay <al...@google.com> wrote: >>>>>> > >>>>>> > I agree with the sentiment on this thread. Our priority needs to be >>>>>> offering good python 3 support that we can comfortably recommend users to >>>>>> switch. Progress on that so far has been promising and I do anticipate >>>>>> that >>>>>> we will reach there in the near future. >>>>>> > >>>>>> > My proposal would be, once we reach to that state, we can mark the >>>>>> first subsequent Beam release as the last Beam release that supports >>>>>> Python >>>>>> 2. (Alternatively: in line with the previous experimental/deprecated >>>>>> discussion we can make 2 more release with python 2 support rather than >>>>>> just 1 more.) With the current state, we would not give users plenty of >>>>>> time to upgrade python 3. So in addition, I would suggest we can consider >>>>>> and upgrade relief by offering something like a 6-month support on the >>>>>> last >>>>>> python 2 compatible release. We might do that in the context of an LTS >>>>>> release. >>>>>> > >>>>>> > I do not believe we have a timeline we can share with users at this >>>>>> point. However if we go with this suggestion, we will probably support >>>>>> python 2 approximately until mid-2020. >>>>>> > >>>>>> > Ahmet >>>>>> > >>>>>> > On Wed, Jun 5, 2019 at 4:53 AM Tanay Tummalapalli < >>>>>> ttanay...@gmail.com> wrote: >>>>>> >> >>>>>> >> We can support Python 2 for some time in 2020, but, we should >>>>>> target a date no later than 2020 to drop support. >>>>>> >> If we do plan to drop support for Python 2 in 2020, we should sign >>>>>> the Python 3 statement[1], declaring that we will "drop support for >>>>>> Python >>>>>> 2.7 no later than 2020". >>>>>> >> >>>>>> >> In addition to the statement, keeping a target release and date(if >>>>>> possible) or timeline to drop support would also help users to decide >>>>>> when >>>>>> they need to work on migrating to Python 3. >>>>>> >> >>>>>> >> Regards, >>>>>> >> - TT >>>>>> >> >>>>>> >> [1] https://python3statement.org/ >>>>>> >> >>>>>> >> On Wed, Jun 5, 2019 at 4:37 PM Robert Bradshaw < >>>>>> rober...@google.com> wrote: >>>>>> >>> >>>>>> >>> Until Python 3 support for Beam is officially out of beta and >>>>>> >>> recommended, I don't think we can tell people to stop using >>>>>> Python 2. >>>>>> >>> Given that 2020 is just over 6 months away, that seems a short >>>>>> >>> transition time, so I would guess we'll have to continue >>>>>> supporting >>>>>> >>> Python 2 sometime into 2020. >>>>>> >>> >>>>>> >>> A quick survey of users would be valuable here. But first >>>>>> priority is >>>>>> >>> making Python 3 rock solid so we can unconditionally recommend it >>>>>> over >>>>>> >>> Python 2. >>>>>> >>> >>>>>> >>> On Wed, Jun 5, 2019 at 12:27 PM Ismaël Mejía <ieme...@gmail.com> >>>>>> wrote: >>>>>> >>> > >>>>>> >>> > Python 2 won't be maintained after 2020 [1]. I was wondering >>>>>> what will >>>>>> >>> > be our (Beam) plan for this. Other projects [2] have started to >>>>>> alert >>>>>> >>> > users that support will be removed so maybe we should decide or >>>>>> policy >>>>>> >>> > for this too. >>>>>> >>> > >>>>>> >>> > [1] https://pythonclock.org/ >>>>>> >>> > [2] >>>>>> https://spark.apache.org/news/plan-for-dropping-python-2-support.html >>>>>> >>>>>