2019-07-11 Mandatory Repository Retirement¶
When development ceases on any official OpenStack team deliverable repository and it is no longer maintained, its contents are replaced by a clear statement describing this status, all open changes for it in code review are abandoned with an explanatory message, and access controls are modified to automatically reject future proposed changes. This act is known as repository retirement.
When a repository which was governed by the OpenStack Technical
Committee ceases to be its responsibility any longer, the
deliverable repository entry in the official
https://opendev.org/openstack/governance/src/branch/master/reference/projects.yaml
is moved to a https://opendev.org/openstack/governance/src/branch/master/reference/legacy.yaml
with its proximate retired-on
date recorded. This act is known
as governance removal.
Following conclusion of the Train development cycle, any new
governance removal for a repository in the https://opendev.org/openstack/
must undergo repository retirement even if development will be
continuing in another Git namespace on OpenDev. The OpenStack Technical
Committee may defer this requirement if responsibility over the repository
is being transferred to another official OpenStack governance body with
which it shares the openstack
Git namespace on OpenDev (for
example, a recognized OpenStack special interest group or OpenStack User
Committee working group), but can
still enforce it at a later date if the repository moves to a
different OpenDev Git namespace or leaves OpenDev hosting entirely.
Rationale¶
With the 2019-03-22 resolution to Namespace Unofficial
Projects, only currently
or previously-official OpenStack deliverable repositories (or those
managed by SIGs, working groups and other officially-recognized
bodies) remain within the openstack
Git namespace prefix on
OpenDev. Formerly-official software, which left OpenStack governance
with the intent of continuing development outside it, was in many
cases subsequently abandoned in place by its authors. This created
an attractive nuisance and unwitting surprise for source code
consumers who (in at least some cases) likely continued unaware that
it was no longer supported by anyone at all.
When OpenStack ceases development on a source code repository,
OpenDev’s recommended retirement process
is followed. This process replaces the repository’s source code with
a prominent README
message indicating its new situation, makes
sure open changes for it are abandoned, and sets Gerrit to reject
future change proposals for review. When projects choose to continue
development for formerly-official OpenStack deliverables outside
OpenStack governance, no corresponding process exists to clarify to
users that OpenStack is no longer responsible for these
repositories. This problem is further complicated by OpenDev’s use
of Gitea and its automatic redirect feature. Simply renaming those
projects to move them to a new Git prefix namespace leaves their old
openstack
URLs working for browsers and Git client operations so
many existing users may never notice the transition.
The solution to this problem is to follow the repository retirement
process in openstack
any time a deliverable repository is
removed from current governance, regardless of whether its authors
intend to continue development on it outside governance. OpenDev
allows multiple repositories to have the same base names across
different namespaces, so this does not mean a project has to change
its new name. It does however mean that the repository must be
forked into the new namespace, leaving behind its Gerrit reviews and
no redirection (the README
file can certainly mention where to
find continued development however). This forces existing consumers
of the source code to take note of the change in governance,
clarifying that no official OpenStack project team is responsible
for it any longer.
Because this is a significant change in policy, it cannot easily be retroactively applied to old repositories which are no longer under OpenStack’s governance (but the damage this would mitigate for them is probably already done anyway). To provide ample warning for any existing projects considering exiting OpenStack in the near future, only removals after the conclusion of the Train development cycle will be subject to the new mandatory retirement policy. Removals prior to the end of the Train cycle can be renamed to new namespaces in OpenDev (with redirects) per our previous de facto process, if maintainers prefer.