A modest proposal on extensibility

Talking to a few folks off-list, it seems like the extensibility discussion
has gotten a bit muddled.  The goal of this message is to try to
focus/clarify with a specific proposal.   It sounds like the general
desiderata people have are:
1. To make it possible to add new values for strings/enums without major
spec surgery
2. To make it easy for developers to find extensions

To that end, I would like to propose a way forward for extensibility:

<proposed-plan>

1. Wherever a string/enum value is defined, insert something like the
following:
1.1. This specification defines values X, Y, Z
1.2. Implementations MAY support other values
1.3. When an extension is made to add a value, a reference should be added
to the "Extensions" section

2. Wherever a string/enum value is used as a branch point, insert something
like the following:
2.1. If X... If Y... If Z...
2.2. If another recognized value, process according to that value
2.3. If an unrecognized value, raise an NotSupportedError (or TypeError for
enums)

3. Add an "Extensions" section to the bottom of the spec, where links can
be added to point to extension specs.

</proposed-plan>

Does that overall approach seem agreeable to people?

--Richard

Received on Friday, 10 October 2014 15:28:04 UTC