Thanks for holding this vote. Note that this is a pledge to remove support sometime in 2020, but no promises as to whether that will be January or December (though I hope sooner rather than later).
Valentyn, did you want to go ahead and make a PR adding Apache Beam to the python3statement page? On Mon, Sep 30, 2019 at 5:10 PM Valentyn Tymofieiev <valen...@google.com> wrote: > > As suggested and enthusiastically supported by several folks in this thread, > I will send a vote to sign a pledge on http://python3statement.org on behalf > of Apache Beam to discontinue Python 2 support in or before 2020. > > The motivation for signing the pledge is: > - to provide another signal to Beam users, and projects that depend on Beam > that Beam Python 2 offering will soon sunset; > - to facilitate adoption of Python 3 by Beam users, developers, and runner > maintainers; > - to facilitate adoption of Python 3 in wider Python ecosystem. > > See also http://python3stament.org for background behind this pledge and the > list of projects which have already signed it. > > On Mon, Sep 23, 2019 at 4:45 PM Kyle Weaver <kcwea...@google.com> wrote: >> >> Re feedback collection, we already print a message: >> "You are using Apache Beam with Python 2. New releases of Apache Beam will >> soon support Python 3 only." >> When users run Python 2 pipelines. This might be a good place to provide >> additional info along with a place to send feedback (probably user@). While >> I'm sure not everyone out there reads their logs, I imagine this is a sure >> and easy way of reaching at least some Python 2 users. >> >> Kyle Weaver | Software Engineer | github.com/ibzib | kcwea...@google.com >> >> >> On Fri, Sep 20, 2019 at 10:28 AM Valentyn Tymofieiev <valen...@google.com> >> wrote: >>> >>> Thank you, Chad, for refreshing this conversation and adding the >>> perspective of Python 2 users of Beam who have not(yet) completed the >>> migration. My thoughts below. >>> >>> - It is in the best interest of everyone to ensure a smooth migration for >>> Beam users. However a migration needs to happen since Python ecosystem is >>> moving off of Python 2. >>> - Beam has a couple of dozen dependencies, and we cannot have an >>> expectation that Python 2 versions of these dependencies will be maintained >>> in 2020. >>> - BEAM-1251 should be closed, since it may communicate a signal that Beam >>> does not support Python 3, while it does. Beam has first announced support >>> of Python 3 in Beam 2.11.0, admittedly later than many mainstream libraries >>> in Python ecosystem. >>> - I think Python 2 LTS release (if we continue them) may have critical bug >>> fixes, but not new features, so we won't be backporting new features. >>> - Beam portability allows users to customize usercode runtime environment, >>> and it should be possible for users to supply a Python 2 SDK harness >>> container, should they have no other option. This would require a >>> backported user-supplied version of Beam SDK that works on Python 2, >>> although such SDK may become difficult/impractical to maintain for most >>> users. >>> - There are several open issues related to Python 3, but they are >>> improvements in nature, and we are steadily closing them off. I am not >>> aware of any adoption blockers for Beam Python 3, specific to Beam. >>> - I have not heard of users reports who attempted but were not able to use >>> Beam on Python 3. >>> - This does not mean that our offering is perfect, there may be errors and >>> omissions that are yet to be discovered. However, it would be in the best >>> interest of the Beam community to discover these issues earlier. A message >>> that Beam will discontinue Python 2 support will encourage users to >>> migrate, therefore I also support Beam signing https://python3statement.org. >>> - Having more usage statistics and feedback closer to 2020 can help us be >>> more confident in deciding when to stop Python 2 support. >>> >>> On Thu, Sep 19, 2019 at 6:05 PM Ahmet Altay <al...@google.com> wrote: >>>> >>>> Thanks a lot for sharing your thoughts, I completely agree that we need to >>>> minimize the burden on our users as much as possible. Especially in this >>>> case when we are offering a robust python 3 solution just now. However I >>>> do share the same concerns related to dependencies and tool chains, It >>>> will be increasingly difficult for us to keep our code base compatible >>>> with python2 and python3 overtime. (To be very explicit, one of those >>>> dependencies is Dataflow's python pre-portability workers.) >>>> >>>> On Thu, Sep 19, 2019 at 5:17 PM Maximilian Michels <m...@apache.org> wrote: >>>>> >>>>> Granted that we just have finalized the Python 3 support, we should >>>>> allow time for it to mature and for users to make the switch. >>>>> >>>>> > Oh, and one more thing, I think it'd make sense for Apache Beam to >>>>> > sign https://python3statement.org/. The promise is that we'd >>>>> > discontinue Python 2 support *in* 2020, which is not committing us to >>>>> > January if we're not ready. Worth a vote? >>>>> >>>>> +1 >>>> >>>> >>>> +1 >>>> >>>>> >>>>> >>>>> On 19.09.19 15:59, Robert Bradshaw wrote: >>>>> > Oh, and one more thing, I think it'd make sense for Apache Beam to >>>>> > sign https://python3statement.org/. The promise is that we'd >>>>> > discontinue Python 2 support *in* 2020, which is not committing us to >>>>> > January if we're not ready. Worth a vote? >>>>> > >>>>> > >>>>> > On Thu, Sep 19, 2019 at 3:58 PM Robert Bradshaw <rober...@google.com> >>>>> > wrote: >>>>> >> >>>>> >> Exactly how long we support Python 2 depends on our users. Other than >>>>> >> those that speak up (such as yourself, thanks!), it's hard to get a >>>>> >> handle on how many need Python 2 and for how long. (Should we send out >>>>> >> a survey? Maybe after some experience with 2.16?) >>>> >>>> >>>> +1, we had some success with collecting information from users using >>>> Twitter surveys. >>>> >>>>> >>>>> >> >>>>> >> On the one hand, the whole ecosystem is finally moving on, and even if >>>>> >> Beam continues to support Python 2 our dependencies, or other projects >>>>> >> that are being used in conjunction with Beam, will also be going >>>>> >> Python 3 only. On the other hand, Beam is, admittedly, quite late to >>>>> >> the party and could be the one holding people back, and looking at how >>>>> >> long it took us, if we just barely make it by the end of the year it's >>>>> >> unreasonable to say at that point "oh, and we're dropping 2.7 at the >>>>> >> same time." >>>>> >> >>>>> >> The good news is that 2.16 is shaping up to be a release I would >>>>> >> recommend everyone migrate to Python 3 on. The remaining issues are >>>>> >> things like some issues with main sessions (which already has issues >>>>> >> in Python 2) and not supporting keyword-only arguments (a new feature, >>>>> >> not a regression). I would guess that even 2.15 is already good enough >>>>> >> for most people, at least to kick the tires and running tests to start >>>>> >> the effort. >>>> >>>> >>>> I share the same sentiment. Beam 2.16 will offer a strong python 3 >>>> offering. Yes, there are known issues but this is not much different than >>>> the known issues for rest of the python offering. >>>> >>>>> >>>>> >> >>>>> >> (I also agree with the sentiment that once we go 3.x only, it'll be >>>>> >> likely harder to maintain a 2.x LTS... but the whole LTS thing is >>>>> >> being discussed in another thread.) >>>>> >>>>> >> >>>>> >> On Thu, Sep 19, 2019 at 2:44 PM Chad Dombrova <chad...@gmail.com> >>>>> >> wrote: >>>>> >>> >>>>> >>> Hi all, >>>>> >>> I had a read through this thread in the archives. It occurred before >>>>> >>> I joined the mailing list, so I hope that this email connects up with >>>>> >>> the thread properly for everyone. >>>>> >>> >>>>> >>> I'd like to respond to the following points: >>>>> >>> >>>>> >>>> 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. >>>>> >>> >>>>> >>> >>>>> >>> With so many important features still under active development >>>>> >>> (portability, expansion, external IO transforms, schema coders) and >>>>> >>> new versions of executors tied to the Beam source, staying behind is >>>>> >>> not really an option for many of us, and with python3 support not yet >>>>> >>> fully completed, the window in which Beam is fully working for both >>>>> >>> python versions is rapidly approaching 2 months, and could ultimately >>>>> >>> be even less, depending on how long it takes to complete the dozen >>>>> >>> remaining issues in Jira, and whatever pops up thereafter. >>>>> >>> >>>>> >>>> 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. >>>>> >>> >>>>> >>> >>>>> >>> I would argue that the cost of maintaining a python2-only LTS version >>>>> >>> will be far greater than maintaining python2 support for a little >>>>> >>> while longer. Dropping support for python2 could mean a number of >>>>> >>> things from simply disabling the python2 tests, to removing 2-to-3 >>>>> >>> idioms in favor of python3-only constructs. If what you have in mind >>>>> >>> is anything like the latter then the master branch will become quite >>>>> >>> divergent from the LTS release, and backporting changes will be not >>>>> >>> be as simple as cherry-picking commits. All-in-all, I think it's a >>>>> >>> lose/lose for everyone -- users and developers, of which I am both -- >>>>> >>> to drop python2 support on such a short timeline. >>>>> >>> >>>>> >>> I'm an active contributor to this project and it will put me and the >>>>> >>> company that I work for in a very bad position if you force us onto >>>>> >>> an LTS release in early 2020. I understand the appeal of moving to >>>>> >>> python3-only code and I want to get there too, but I would hope that >>>>> >>> you give your users are much time to transition their own code as the >>>>> >>> Beam project itself has taken. I'm not asking for a full 12 months >>>>> >>> to transition, but more than a couple will be required. >>>> >>>> >>>> What would be the ideal time frame for you? >>>> >>>>> >>>>> >>> >>>>> >>> thanks, >>>>> >>> -chad >>>>> >>> >>>>> >>> >>>>> >>> >>>>> >>>