How Shopify Manages API Versioning and Breaking Changes
Hi everyone. As the founder of an API company, this article has me wondering about the semantics of versioning — so I thought I’d ask the community a question. I hope the Shopify API team doesn’t mind!<p>When you all think about API versioning, what makes the most sense to you — a semver approach (major.minor.patch) a la NPM, or a date-based approach (2020-01-07) a la AWS? Or is some combination of the two desirable?<p>At Standard Library [0] we both allow people to publish APIs but also publish API proxies on behalf of partners (Stripe, Slack + others) using a semver approach. It’s not perfect but theoretically enforceable (schema parameter additions can be forced to require a minor update, schema parameter removals can be forced to require a major update). We’ve just stuck to this semver approach based on intuition and haven’t had negative feedback about it, but I do like the idea of time-based versioning.<p>Would love thoughts! If you want to play around you can build your own APIs using <a href="https://code.stdlib.com/" rel="nofollow">https://code.stdlib.com/</a>, which uses the FunctionScript specification [1] to enforce HTTP request schemas.<p>[0] <a href="https://stdlib.com/" rel="nofollow">https://stdlib.com/</a><p>[1] <a href="https://github.com/FunctionScript/FunctionScript" rel="nofollow">https://github.com/FunctionScript/FunctionScript</a>