Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tradeoffs of different failure modes for extension points #9

Open
tfpauly opened this issue Dec 9, 2020 · 1 comment
Open

Tradeoffs of different failure modes for extension points #9

tfpauly opened this issue Dec 9, 2020 · 1 comment
Labels
evolvability Protocol extensibility and greasing

Comments

@tfpauly
Copy link
Member

tfpauly commented Dec 9, 2020

There's an interesting point made here (https://tools.ietf.org/html/draft-iab-use-it-or-lose-it-00#section-2.2):

When SNMP versions 2, 2c and 3 came along, older agents did exactly
what the protocol specifies. Deployment of new versions was likely
successful because the handling of newer versions was both clear and
simple.

This highlights how new versions deployed well when they were completely incompatible with older versions.

There are different ways to use extensibility:

  1. Switch between incompatible versions (fail hard when not supported)
  2. Required extensions within a protocol version (fail hard when not supported)
  3. Optional extensions within a protocol version (no failure when not supported, but maybe bugs)

Failing hard is beneficial property to avoid bugs or ossification around handling optional extensions. To some degree, it may make sense to have the recommendations for extension use be based on how a given extension or version is used. Is this something we could make a recommendation around?

@tfpauly tfpauly added the evolvability Protocol extensibility and greasing label Dec 9, 2020
@cabo
Copy link

cabo commented Dec 10, 2020

Nice example for the one thing version numbers are good for: preventing false interoperability.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
evolvability Protocol extensibility and greasing
Projects
None yet
Development

No branches or pull requests

2 participants