-
Notifications
You must be signed in to change notification settings - Fork 28
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
Define initial version scheme #17
Comments
A big question is which versioning strategy. It doesn't necessarily have to be resolved day 1 but limits the options (or introduces breaking changes) once standardized.
The content negotiation versioning could potentially tie into the decision on Hypermedia, at least in the case of HATEOS. |
Version Management was raised at the meeting on 31 January 2020. There are many aspects to versioning. Among them:
The last point is discussed in #17 (comment) above. I have recommendations to make regarding the first two points, based on other open source standard schemes. Recommendation: for communication, use Semantic Versioning 2.0.0 (https://semver.org/).
Recommendation: for development and release process after 1.0 release, use the GitFlow branching model (https://nvie.com/posts/a-successful-git-branching-model/).
This sounds like a bit of extra work, but is not really too complex, and will help others who want to understand what is ready and what is in development. |
I agree on this proposal for both scheme version and development aspects. As I understood with working on first major version we will be having 2 branches master (for official releases) and develop (for ongoing development). At the time we starting to work on second major release 2.x original v1.x will be extracted to own branch (like hotfix/1.x) for patching support purposes? |
After listening to the recording of our meeting on 14 February (to write the minutes), my summary is:
My further proposal to this is that rather than just V1 or V2 for major versions in branch names and URLs, we make it something recognisable such as ADE-1 or ADE-2 and use this in both branch names and URLs (I think the branch name and the URL identifier should be the same, regardless of whether this is ADE-1, V1, ICAR1, or something else). |
I like the ADE-1 name scheme: the "v" in v1 doesn't add any value. (And it solves a small issue with us at JoinData on already having used 'v1' ;) ). |
Version scheme has now been documented as agreed, the Develop branch has been created, and the ADE-1 branch has been made the default to help new users use the specifications. Contributors should now use the Develop branch. |
This is version 1.0 (or pre-1.0) but eventually there will be later versions, and clients and servers may need to distinguish. It would be wise now to recommend a versioning scheme. There are two components to this:
Version representation - most APIs are now using SemVer or equivalent (major + minor, breaking changes only in major). Its likely we could do this or indeed only worry about major.
Versioning strategy - there are four common methods:
a. Include version in the URL specification (challenging initially if we are not insisting on a URL format, and forces servers to implement multiple API URLs).
b. Include version in the URL Query String (?version=1)? Not often used.
c. Use custom version headers ("accepts-version: 1.0"). Means testing with a browser is extra work.
d. Use content negotiation (“Accept: application/vnd.xm.device+json; version=1” ). Elegant but much harder to test APIs with a browser.
For instance, see https://restfulapi.net/versioning/
The text was updated successfully, but these errors were encountered: