The neutron-lib repo exists to provide code with a long-term stable interface for subprojects. If we do need to deprecate something, a debtcollector warning will be added, the neutron-lib core team will make every effort to update any neutron stadium project for you, and you will get at least the current release plus two cycles before it disappears.
In keeping with how hard it is to remove things, the change velocity of this library will be slower than neutron. There are two notable cases where code should go into standard neutron instead of this lib (or your repo):
Private interfaces are PRIVATE. They will disappear, be renamed, and absolutely no regard will be given to anyone that is using them. They are for internal library use only.
DO NOT USE THEM. THEY WILL CHANGE.
Private interfaces in this library will always have a leading underscore, on the module or function name.
This library has a special namespace called neutron_lib.legacy.
Anything in this directory will likely get a new interface in the top-level library sometime in the near future, and then a debtcollector deprecation notice. Expect to get current cycle plus one release of maintenance at that point, and then they will be removed.
Why this intermediary step? Because neutron has some serious dependency issues with its subprojects that need breaking, we do not want to rush some of the refactors to our interfaces that need to happen, we have limited resources, but we still need to make addressing those dependency issues a high priority.
The legacy module is for those existing modules in neutron that are in wide use by subprojects, but which are not super interfaces. The legacy submodule is for routines that will still be maintained with a long-term backwards compatibility interface contract, but which are not considered “library worthy” by the neutron core team.
This can easily be abused as a kitchen sink to just move stuff and make fast progress. Please do not do this, and do not expect this kind of thing to be favorably reviewed. Good candidates for this area are things that we want to refactor, but are lower priority, AND they have been around for a long time with no changes (i.e. an existing history of stability).
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.