resgateio / resgate

A Realtime API Gateway used with NATS to build REST, real time, and RPC APIs, where all your clients are synchronized seamlessly.
https://resgate.io
MIT License
689 stars 67 forks source link

RES Protocol semantic versioning #113

Closed jirenius closed 5 years ago

jirenius commented 5 years ago

Issue

As new additions are made to the RES protocol, it is needed that developers understand the impact these changes may have on their existing services.

This can be resolved by adhering to semantic version for the protocol. However, since a protocol does not need "bug patches" in the same sense as software, the meaning of each level will be slightly different.

Given a version number MAJOR.MINOR.PATCH (eg. v1.1.5):

MAJOR version

Incremented when the protocol is no longer backwards compatible. The current Resgate repository will always target the v1 protocol. In case of a new major version, a new "Resgate2" repository would be created, and should be considered a different project. Services written for v1 would not work for v2.

There are no plans for any MAJOR version changes.

MINOR version

Incremented when the protocol changes deprecates previously valid behavior. Resgate would still handle services written for previous version for a period of time (~1 year), but will log warnings in case legacy behavior is detected.

During the deprecation period, service developers need to upgrade their services. A document describing these changes, and how to upgrade a service, will be provided. An example is the RES Protocol v1.1 Update document.

There are no planned features that would require any MINOR version change.

PATCH version

Incremented when backward compatible features are added to the protocol. Services written for previous version will continue to work without modifications.

New patch versions may include features like:

Notes

jirenius commented 5 years ago

Resolved in #119