pyomo
pyomo copied to clipboard
[PEP] Promotion process for packages in `pyomo.contrib`
Summary
There are several contributions to pyomo.contrib
that have gained popular usage (e.g., PyNumero
) and have been considered numerous times for promotion out of contrib
into the core offering of Pyomo. There is currently no documented process for such a promotion.
Rationale
Some packages within pyomo.contrib
have existed at this point for many years, are mostly stable / not actively under development, and have popular usage. Because contrib
is more intended for items that are under active development/"use at your own risk" (see #2460 ), those packages which have a shown amount of stability and usage should be given a promotion path.
Additional Information
While this topic has been floated a few times, we currently have no solidly proposed solution and want to open the discussion for suggestions. Some considerations to keep in mind:
- Life/duration of package
- Code coverage
- Documentation
- Popularity/usage by Pyomo users
- Maintainability
My advice is to mimic Python and keep Pyomo itself as small as possible. This argues in favor of only rarely moving something "up" from contrib and doing so only when there is compelling evidence that the benefits of doing so outweigh the potential costs.
Supposing that we eventually want to move something out of contrib (into Pyomo "proper"), one of the first steps should probably be to partition the code into what we do want to promote and what we don't (yet) want to promote. I mention this as while PyNumero has some components that are stable and fairly widely used (e.g. PyomoNLP), it also has some components that are not (e.g. ExternalPyomoModel).