Skip to content

Commit

Permalink
Update maintenance goals
Browse files Browse the repository at this point in the history
- Discourage new eventlet usages
- Encourage usages of asyncio for network programming
- Speak about our intentions to allow transitions from eventlet to asyncio
- Highlight our plan to retire eventlet
- Maintenance only for bugfixes and security purposes
- New features are not accepted
  • Loading branch information
4383 committed Jan 12, 2024
1 parent 6441021 commit a674d89
Show file tree
Hide file tree
Showing 2 changed files with 92 additions and 30 deletions.
82 changes: 53 additions & 29 deletions README.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,54 @@
Warning
=======

**New usages of eventlet are now heavily discouraged! Please read the
following.**

Eventlet was created almost 18 years ago, at a time where async
features were absent from the CPython stdlib. With time eventlet evolved and
CPython too, but since several years the maintenance activity of eventlet
dicreased leading to a growing gap between eventlet and the CPython
implementation.

This gap is now too high and can lead you to unexpected side effects and bugs
in your applications.

**Eventlet is now switching to legacy mode**. **Only maintenance for stability
and bug fixing** will be provided. **No new features will be accepted**, except
those related to the asyncio migration. **Usage in new projects are
discouraged**. **Our goal is to plan the retirement of eventlet** and to give
you ways to move away from eventlet.

If you are looking for a library to manage async network programming,
and if you do not yet use eventlet, then, we encourage you to use `asyncio`_,
which is the official async library of the CPython stdlib.

If you already use eventlet, our goal is to allow you to smoothly migrate from
eventlet to asyncio. We are currently thinking about solutions to
make that kind of migrations possible. Only new features related to the
migration solution will be accepted.

If you have questions concerning maintenance goals or concerning
the migration do not hesitate to `open a new issue`_, we will be happy to
answer them.

.. _asyncio: https://docs.python.org/3/library/asyncio.html
.. _that_was_not_possible_before: https://github.com/eventlet/eventlet/issues/673#issuecomment-740429872
.. _open_a_new_issue: https://github.com/eventlet/eventlet/issues/new

Eventlet
========

.. image:: https://img.shields.io/pypi/v/eventlet
:target: https://pypi.org/project/eventlet/

.. image:: https://img.shields.io/github/actions/workflow/status/eventlet/eventlet/test.yaml?branch=master
:target: https://github.com/eventlet/eventlet/actions?query=workflow%3Atest+branch%3Amaster

.. image:: https://codecov.io/gh/eventlet/eventlet/branch/master/graph/badge.svg
:target: https://codecov.io/gh/eventlet/eventlet


Eventlet is a concurrent networking library for Python that allows you to change how you run your code, not how you write it.

It uses epoll or libevent for highly scalable non-blocking I/O. Coroutines ensure that the developer uses a blocking style of programming that is similar to threading, but provide the benefits of non-blocking I/O. The event dispatch is implicit, which means you can easily use Eventlet from the Python interpreter, or as a small part of a larger application.
Expand All @@ -12,7 +63,7 @@ applications to use it. Start off by looking at the `examples`_,


Quick Example
===============
=============

Here's something you can try right on the command line::

Expand All @@ -26,7 +77,7 @@ Here's something you can try right on the command line::


Getting Eventlet
==================
================

The easiest way to get Eventlet is to use pip::

Expand All @@ -47,34 +98,7 @@ To build a complete set of HTML documentation, you must have Sphinx, which can b

The built html files can be found in doc/_build/html afterward.


Twisted
=======

Eventlet had Twisted hub in the past, but community interest to this integration has dropped over time,
now it is not supported, so with apologies for any inconvenience we discontinue Twisted integration.

If you have a project that uses Eventlet with Twisted, your options are:

* use last working release eventlet==0.14
* start a new project with only Twisted hub code, identify and fix problems. As of eventlet 0.13, `EVENTLET_HUB` environment variable can point to external modules.
* fork Eventlet, revert Twisted removal, identify and fix problems. This work may be merged back into main project.

Apologies for any inconvenience.

Supported Python versions
=========================

Python 3.7-3.12 are currently supported.

Flair
=====

.. image:: https://img.shields.io/pypi/v/eventlet
:target: https://pypi.org/project/eventlet/

.. image:: https://img.shields.io/github/actions/workflow/status/eventlet/eventlet/test.yaml?branch=master
:target: https://github.com/eventlet/eventlet/actions?query=workflow%3Atest+branch%3Amaster

.. image:: https://codecov.io/gh/eventlet/eventlet/branch/master/graph/badge.svg
:target: https://codecov.io/gh/eventlet/eventlet
40 changes: 39 additions & 1 deletion doc/index.rst
Original file line number Diff line number Diff line change
@@ -1,5 +1,43 @@
Warning
=======

**New usages of eventlet are now heavily discouraged! Please read the
following.**

Eventlet was created almost 18 years ago, at a time where async
features were absent from the CPython stdlib. With time eventlet evolved and
CPython too, but since several years the maintenance activity of eventlet
dicreased leading to a growing gap between eventlet and the CPython
implementation.

This gap is now too high and can lead you to unexpected side effects and bugs
in your applications.

**Eventlet is now switching to legacy mode**. **Only maintenance for stability
and bug fixing** will be provided. **No new features will be accepted**, except
those related to the asyncio migration. **Usage in new projects are
discouraged**. **Our goal is to plan the retirement of eventlet** and to give
you ways to move away from eventlet.

If you are looking for a library to manage async network programming,
and if you do not yet use eventlet, then, we encourage you to use `asyncio`_,
which is the official async library of the CPython stdlib.

If you already use eventlet, our goal is to allow you to smoothly migrate from
eventlet to asyncio. We are currently thinking about solutions to
make that kind of migrations possible. Only new features related to the
migration solution will be accepted.

If you have questions concerning maintenance goals or concerning
the migration do not hesitate to `open a new issue`_, we will be happy to
answer them.

.. _asyncio: https://docs.python.org/3/library/asyncio.html
.. _that_was_not_possible_before: https://github.com/eventlet/eventlet/issues/673#issuecomment-740429872
.. _open_a_new_issue: https://github.com/eventlet/eventlet/issues/new

Eventlet Documentation
====================================
======================

Code talks! This is a simple web crawler that fetches a bunch of urls concurrently:

Expand Down

0 comments on commit a674d89

Please sign in to comment.