Document policy of never removing traits

It has been asked at least twice in recent weeks (the first time by
me) why unused traits can't be removed from os-traits:

http://eavesdrop.openstack.org/irclogs/%23openstack-nova/%23openstack-nova.2019-04-18.log.html#t2019-04-18T17:59:58
http://eavesdrop.openstack.org/irclogs/%23openstack-nova/%23openstack-nova.2019-04-25.log.html#t2019-04-25T10:48:18

so let's explicitly document this policy to prevent future generations
getting confused, or worse, attempting to remove traits.

Change-Id: I4028c25ff5fc0adeca6ee62b0db11d8bbf909f28
This commit is contained in:
Adam Spiers 2019-04-25 12:16:13 +01:00 committed by Eric Fried
parent 50ca62cfbd
commit f17a1ce37c
1 changed files with 25 additions and 0 deletions

View File

@ -2,4 +2,29 @@
Contributing
============
Trait lifecycle policy
======================
It is the policy of this project that once registered, traits should
never be removed, even those which will never be used by code (e.g. as
a result of pivots in design or changes to the namespaces).
The general principle behind this policy is simply that an
extensible-only enumeration is easier to manage than one than can be
shrunk. One particular example concerns the need for the placement
service to keep its database in sync with the strings in os-traits.
Whenever a placement service sees a new version of os-traits it syncs
up its database with the strings that are in the package, creating a
row in the traits table, with an id that becomes a foreign key in other
tables. If traits could be removed, then extra clean-up code might be
needed in several places to handle this, and this would be
particularly error-prone when execution of that code would need to be
correctly orchestrated across multiple projects.
Generic instructions for contributing
=====================================
.. include:: ../../../CONTRIBUTING.rst