-
Notifications
You must be signed in to change notification settings - Fork 234
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
Add semver to the HTTP-API #209
Comments
I agree with much of what you say above. The one thing I disagree with is the approach to semver -- I am strongly opposed to getting semver-major-upgrade-happy with the api. The reason the api is at When people start bumping semver majors, they get super break-happy. We don't want to end up with api As Tom Preston-Warner says in the semver spec: be responsible about versions:
I predict right now that if we just add semver into APIs without a significant and strong rejection of userland breaking changes, then we will end up with huge major version numbers in no time. My basic statement in all of this is, again: don't break user space. Just don't do it. Sometimes it is absolutely necessary, but those cases are very, very rare, and i want to hear about each of them personally and be involved in that decision. (Most of the time i will say no). |
That the API is in a very messy state now is orthogonal to the approach here. You can introduce new routes and deprecate older ways of doing things without breaking user space (bumping major). |
I'm also from the school of thought that 1.0.0 is when something is defined as 'stable', which is not the case right now (first we would have to get to go-ipfs 1.0.0). Right now, since we only have one version number (v0), we are unable to denote a sign of API change and also, let client libraries understand which path they can request that will be compatible with their implementation. I proposed semver so that we have the nice things of minor versions for breaking changes pre 1.0.0, but also be able to add new features or make small fixes that a previous api client can still work (patch versions) |
|
We've been bitten many times by http-api changes, nuances that are only caught after release and it is hard to migrate every single API client(i.e, every single time.
There are some things we should do, as we talked about it, to mitigate some of these problems, like: run every api client tests against a new version of go-ipfs in pre-release, however that is not enough, as there is currently no way for an API client to tell if a go-ipfs version has changed and to notify the user that they should also upgrade their api-client. One more thing is that the http-api is consumable by itself, so any breaking change, even if the api clients are updated, is still a breaking change in user-space.
My proposal to solve this issue comes in the form of:
Let's chat about this Monday.
The text was updated successfully, but these errors were encountered: