Originally posted by **mdickinson** March 13, 2023
I propose deprecating and eventually removing the egg-related machinery in Envisage. Specifically, the `EggPluginManager` and the `EggBasketPluginManager`.
- The Python packaging community has moved away from eggs towards wheels, and eggs are becoming increasingly difficult to manage. For example, there's no obvious supported way that I could find to _build_ eggs (e.g., for testing purposes). Use of `python setup.py bdist_egg` is [discouraged](https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html), and (for example) `python build` doesn't seem to support building eggs.
- The code is becoming increasingly difficult to maintain.
Moreover, on recent projects we haven't found this particular method of extensibility to be useful. Instead, where this sort of thing is needed we've gone with an approach of installing packages into `site-packages` and having those packages contribute to setuptools entry points.
It may make sense to add a new `PluginManager` subclass that knows how to retrieve and instantiate plugins given the name of a `setuptools` entry point.
Discussed in https://github.com/enthought/envisage/discussions/521