Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Eventlet is at a dead end. We want to help you get out of it! #824

Closed
4383 opened this issue Dec 8, 2023 · 28 comments
Closed

Eventlet is at a dead end. We want to help you get out of it! #824

4383 opened this issue Dec 8, 2023 · 28 comments

Comments

@4383
Copy link
Member

4383 commented Dec 8, 2023

Hi Eventlet maintainers,

We are aware that, currently, eventlet face a cruel lack of human resources. This is a growing issue since 2-3 years.

Lack of resources is a recurring problem in the economy of the open source projects [1]. Maintainers of open source projects have bills to pay and a private life. We, users of open source projects, must thanks hundred of time these maintainers, who, on their free time, carry out all these small projects which make all technology around us run on a daily basis.

The result of all this is a significant drop in activity or even a abandonment of maintenance of certain projects, due to lack of time, money, or motivation. All these reasons are legit.

Eventlet is currently in this specific case.

Eventlet is in danger. Its health and its future are threatened. The health and future of projects that rely on eventlet are threatened.

A significant part of the python ecosystem is currently in a cold sweat about its own future. Many developers see a cloud of sleepless nights looming on the horizon of their evening. Others have a painful keyboard from biting their fingers until they bleed.

Almost all Python users all around the world already used eventlet at least once, probably without even knowing it. Indeed, Eventlet alone represents more than 62 million downloads. Eventlet is downloaded more than 1,300 million times every month.

https://www.pepy.tech/projects/eventlet

More than 32 thousand projects are based on eventlet, and among them we can cite Openstack, Celery, PgAdmin, numerous Flask and Django add-ons, etc...

https://github.com/eventlet/eventlet/network/dependents

If Eventlet collapses then entire parts of new technologies could collapse with it.

Growing compatibility issues between eventlet and recent versions of CPython are reaching a critical point. de facto, these problems threaten all users of this library.

Openstack is the first victim of these issues:

https://lists.openstack.org/archives/list/openstack-discuss@lists.openstack.org/thread/YO5CZDVAJ6QSF734ALWSGNOQDDAIOXKI/#RZFUTBFTUCSHKVA6SOCWWIXEH3QJHMYT

We, developers from the Openstack community, offer to provide you with our help and support. We propose to come with you and strengthen your workforce and help you get eventlet back up and running for the next versions of Python to come.

To accept our help, you just have to grant writing rights to the eventlet repo to some of us. We could then help you manage reviews and PRs. We could help you manage backlogs. We could help you in managing the daily life of eventlet. You'll benefit from more resources at no cost.

We have already initiated discussions on this subject within Openstack governance.

https://review.opendev.org/c/openstack/governance/+/902585

Our long-term goal is to migrate Openstack to asyncio, however in the short and medium term we still need eventlet. Our mutual needs converge, so it would be a shame not to mutually benefit from them. It should be noted that in the long term (around 4 years), our goal will be to retire from eventlet (if everything goes as planned), and therefore, in the case that no one else is willing to maintain anymore eventlet, we will then retire eventlet. A planned retirement, hopefully with a complete migration plan to asyncio. An honorable end to a memorable project.

You can find more details about your plan in our Openstack governance discussion.

https://review.opendev.org/c/openstack/governance/+/902585

Let's go a long way together, let's save eventlet!

[1] https://www.sonatype.com/hubfs/9th-Annual-SSSC-Report.pdf

@damani42
Copy link

damani42 commented Dec 8, 2023

Hi there,

I totally agree with @4383 about the free software ressource and so on. Also about eventlet and the fact at a lot of projects still depends of it. Actually in openstack we are victim of that depends and as said @4383 it will be very great if we can help with the maintenance of the project.

@edwardgeorge
Copy link
Member

I would gladly help and grant rights to new maintainers, however I do not have access to those settings. @temoto ?

@jeckersb
Copy link

jeckersb commented Dec 8, 2023

Well said, @4383!

I too offer my assistance to help get eventlet back on track!

@jayofdoom
Copy link
Contributor

Thanks for posting this, @4383. Just noting as the original author of the OpenStack ML thread linked above, that I'm also invested in helping ensure this gets back to a reasonable maintenance point with an off-ramp for those who desire one, and to leave it in a better state if anyone wants to continue maintenance once OpenStack has migrated.

Just generally as well -- I hope @temoto and others who have helped build eventlet do get a chance to see this; thanks for helping to build this library and keep it going for years.

@jstasiak
Copy link
Contributor

jstasiak commented Dec 9, 2023

Hey all,

I believe the summary of the status quo is rather accurate and the offer is both justified and welcome.

I have admin access and I'm with @edwardgeorge in that I'd gladly add new maintainers. I wouldn't want to do it unilaterally though and I'd like to hear from at least some other members of the team first.

If there's no feedback from the rest for some time I'll consider acting on that.

@edwardgeorge
Copy link
Member

@jstasiak do you know who has ownership of the pypi.org project for publishing released versions?

@jstasiak
Copy link
Contributor

jstasiak commented Dec 9, 2023

I can publish new versions but I don't have access to add new PyPI maintainers.

https://pypi.org/project/eventlet/ see the Maintainers list

@temoto
Copy link
Member

temoto commented Dec 9, 2023 via email

@temoto
Copy link
Member

temoto commented Dec 9, 2023

Done: @jstasiak @tipabu and @nat-goodspeed full access in github eventlet org. @jstasiak and @nat-goodspeed full access in PyPI, don't know Tim username there.

@jayofdoom
Copy link
Contributor

Thanks @temoto for the decade+ you've spent creating and keeping eventlet going.

If you, or the other maintainers, wish to give openstack access in pypi; that username is openstackci as documented here: https://docs.opendev.org/opendev/infra-manual/latest/creators.html#give-opendev-permission-to-publish-releases

I'm sure we'll figure out, over time, what the technical shape of the future maintenance of eventlet will look like.

@4383
Copy link
Member Author

4383 commented Dec 11, 2023

Debatable: when you're going to sunset eventlet as whole, please leave room for new interested party to support it, like now.

Sure, we will leave room if someone else is interested by eventlet in the future.

Do you mind also adding us, at least @jeckersb, @damani42 , and myself (@4383) to the list of granted persons on github and pypi? My pypi username is 4383 (https://pypi.org/user/4383/).

Thanks for all your replies, that's really nice.
Also thanks to all of you for all your amazing works on eventlet during all these years.

@itamarst
Copy link
Contributor

Hi, I'd probably be available to help with development at least in the short term, and see PRs I've already put up.

Also worth sharing my experience reviving another open source project, https://github.com/jupyter-incubator/sparkmagic/, where the original author was no longer around. What I did once I got access was:

  1. I went through backlog of PRs, reviewing and merging everything that seemed important (bug fixes and the like).
  2. Every person whose PR I merged was invited to be a maintainer, with requirement that they follow code of conduct and in general keep tests passing.

In the end only one person stuck around, but they have been maintaining the project (reviewing PRs and the like) for a few years now, and I'm not involved any more. So that was a success.

However, I don't think that specific process should be followed here, at least to begin with:

  • eventlet has a much more significant ecosystem impact.
  • SparkMagic was almost but not quite a standalone application, whereas eventlet is a deeply impactful library with a a need for strong stability guarantees.
  • The guardrails to ensure stability in eventlet need work, e.g. Try to make CI pass tests #823 and probably a bunch more (more linting, type checking, running tests on 3.11, perhaps more testing).

So I would suggest a first pass of project and process infrastructure upgrades as in the last bullet point with the goal of making the project more robust to changes, followed by a pass on bug fixes from pending PRs, and then thinking about next steps.

@temoto
Copy link
Member

temoto commented Dec 13, 2023

Done:

  • github maintainer @4383, developers @jeckersb @damani42
  • pypi openstackci (just publish, not owner), 4383 owner, jeckersb publisher

Error: damani42 not found on pypi.

@4383
Copy link
Member Author

4383 commented Dec 13, 2023

Thanks @temoto. I think @itamarst would be also a good addition. IMO he already made significant contributions.

Thanks @itamarst for all your suggestion and your feedback, they are really valuable.

@jstasiak
Copy link
Contributor

I think @itamarst would be also a good addition.

Done, I just sent a GH organization invitation. You have PyPI access to manage things on that side.

@damani42
Copy link

I will create an pypy account and give to @temoto later. Thanks for the right on github.

@jstasiak
Copy link
Contributor

I just added the maintainers team to the repository, seems like it was missing from there accidentally.

https://github.com/orgs/eventlet/teams/maintainers

GitHub's permission system truly confuses me sometimes.

@jstasiak
Copy link
Contributor

Cross-referencing for visibility: #827 (comment)

I temporarily disabled the requirement for PRs to have green builds to be merged. Let me know if you want it undone (and when).

This is to allow fixing the build piece by piece (which is broken now for more than one reason I believe so will require multiple PRs to fix).

@itamarst
Copy link
Contributor

Any work left to do here, or can we close this?

@4383
Copy link
Member Author

4383 commented Dec 15, 2023

Just one question, how to rerun github actions (tests) for a specific PR? From the UI, apparently I'm not able to request a new build, and if I want to request a new one, I'd have to request a forced push to the author of the given PR. Not sure if this lack of rerun button is related to my current status in the eventlet repo, or if it is simply by github design.

Are you able to rerun actions?

Else, I think we can now re-enable mandatory green builds to allow merges.

Once done, I think we can close it.

@jstasiak
Copy link
Contributor

Yeah this is a good question. The button should be there.

Take two PRs with failing builds:

  1. Python 3.12 fixes by hroncok #817

    Failed py310-epolls job https://github.com/eventlet/eventlet/actions/runs/6714070387/job/18246724902?pr=817

Screenshot 2023-12-15 at 12 21 30
  1. [WIP][Greendns] Replace deprecated resolver.query by resolver.resolve #840

    Failed py310-epolls job https://github.com/eventlet/eventlet/actions/runs/7221143216/job/19675505847?pr=840

Screenshot 2023-12-15 at 12 21 49

Why is it sometimes missing – I have truly no clue and I'd like to understand it.

if I want to request a new one, I'd have to request a forced push to the author of the given PR

There's a workaround for cases where the Re-run button is missing.

I just enabled the "Always suggest updating pull request branches" option in the repository settings, which means that if there are newer commits in the master branch you'll have an "Update branch" button in a PR (like here, scroll down to the checks/merge widget: #796) which you can use to trigger a new CI workflow.

Even if the newly triggered CI workflow fails there should hopefully be a "Re-run jobs" button there this time.

Else, I think we can now re-enable mandatory green builds to allow merges.

Done. Keep in mind the configuration needs to be updated when you add new jobs (like new Python versions, new configurations), all jobs required to succeed need to be listed in the repository settings by hand, sadly.

@4383
Copy link
Member Author

4383 commented Dec 15, 2023

Thanks for details. Will use the update branch button for now.

@4383
Copy link
Member Author

4383 commented Dec 15, 2023

I think we are now able to close this issue.

Thanks everyone for your contributions, I think we made together a significant step forward!

@nat-goodspeed
Copy link
Contributor

Using a domain name with readthedocs requires a new CNAME DNS entry that refers to readthedocs.io.

eventlet.net currently retrieves A records for four specific IP addresses. Am I correct that the change you're requesting is to replace those with a CNAME aliasing eventlet.net to readthedocs.io ?

@temoto
Copy link
Member

temoto commented Jan 23, 2024

Using a domain name with readthedocs requires a new CNAME DNS entry that refers to readthedocs.io.

eventlet.net currently retrieves A records for four specific IP addresses. Am I correct that the change you're requesting is to replace those with a CNAME aliasing eventlet.net to readthedocs.io ?

As far as I know, CNAME for 2 level domain is not supported by general DNS infrastructure, only available on AWS Route 53. If current DNS hosting supports ANAME/ALIAS -- that is super awesome and most straightforward way.

Redirect hosting to eventlet.readthedocs.io is another option. Much less fancy but bulletproof.

@4383
Copy link
Member Author

4383 commented Jan 23, 2024

@nat-goodspeed: The readthedocs documentation say (source https://docs.readthedocs.io/en/stable/guides/custom-domains.html):

For a subdomain like docs.example.com add a CNAME record, and for a root domain like example.com use an ANAME or > ALIAS record

I was simply thinking redirecting eventlet.net to readthedoc.
So in our case, I think we want to use ANAME/ALIAS as suggested by @temoto, if this kind of records are supported by the current registrar...

@4383
Copy link
Member Author

4383 commented Feb 2, 2024

Hello @nat-goodspeed, do you have any updates concerning the domain name redirect?

4383 added a commit to 4383/eventlet that referenced this issue Mar 25, 2024
In accordance with our recent maintenance goals we sets [1][2] and in
accordance with the recent addition of the asyncio hub [3], this patch
proposes to deprecate all the other existing hubs, the non asyncio hubs,
to encourage users to start their migration to asyncio.

[1] eventlet#835
[2] eventlet#824
[3] eventlet#868
@jstasiak
Copy link
Contributor

jstasiak commented Jun 2, 2024

Hey everyone, just a random comment from me: thank you for all your work pushing this forward, fixing things and otherwise taking care of the project.

I don't think it's only my opinion that this is much appreciated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

9 participants