Earlier quoted context omitted.
Versioning is hard. Versioned APIs are very hard. I'm in an especially tricky spot because we've got customers that might refuse to upgrade our product for years and years, if ever. Two approaches I've taken, with a blogpost worth of thoughts on them: 1. Every version is a whole new database/webserver stack. You shut the oldest one down when the last customer migrates off it. The bloat is real, but it's dead simple a…
Every version is a whole new database/webserver stack. You shut the oldest one down when the last customer migrates off it. The bloat is real, but it's dead simple and it works. That means data is different between API versions?
How Shopify Manages API Versioning and Breaking Changes
81–90 of 95 posts
Re: How Shopify Manages API Versioning and Breaking Changes
#82Glad to see that Shopify has better API versioning on their mind. When I used there API a few years ago, it was one of the worst APIs to depend on. To the point, we had to architect our system to alert us for unannounced breaking API changes so we could fix and replay the JSON back. - Moving JSON fields in and out of nestings didn't seem to be counted as a breaking change. - Changes were rarely announced, and there w…
1. You can just keep adding new methods and fields as needed, but since each client asks only for the fields specific to what they want, you don't get big bloated response objects.
2. Lots of times your breaking changes only differ slightly from previous versions, and the way GraphQL resolvers are written makes it really easy to refactor things into one base method that both the old and new versions can share.
3. Proper use of the @deprecated schema directive means your doc is 'clean' by always showing the latest version that new users should adopt, but the doc is still there for users on older versions.
4. It's really easy to add logging and tracing in your resolvers to see how often fields are being accessed and who is using them. At some point you may decide to break backwards compatibility by deleting old fields, but you'll know exactly who you are breaking.
Re: How Shopify Manages API Versioning and Breaking Changes
#83It's interesting to compare and contrast this method of API management with Stripe. As far as I understand, the Stripe api would continue to work indefinitely so long as you lock your api version, whereas Shopify would eventually break the app as they essentially backport breaking changes to older api versions. Initially, I thought Stripe's method was superior, and would provide the best API experience, but realized…
>those apps continue to be updated and utilizing the latest features. while this is orthogonal to Shopify API or your post at all, since you mentioned the need of updates, I just wanted to use that opportunity to vent my frustration with the constant push to update everything all the time and judging any piece of software by using "when was the last update" as a metric. The problem I see is that not all apps or libs…
How about being able to ping TCP ports? I need this for debugging all the time. Yeah, I use tcping instead... but why is this a separate tool? Dumb.
I'm pretty sure that for every tool you think is "done", there's someone out there screaming at its inadequacy.
Re: How Shopify Manages API Versioning and Breaking Changes
#84Earlier quoted context omitted.
Shopify's business plan is offer minimum functionality for a low monthly fee and then users use the marketplace to add additional functionality which Shopify takes a 20% cut. I'm actually working on an open-source fulfillment and operations app for Shopify: https://github.com/openshiporg/openship I use it to build small apps that interact with the API directly instead of paying and relying on any apps.
But Shopify hold the transaction fee and charge 2% on top. So really in the end. Shopify is not that much cheaper. Considering bigcommerce doesnt charge this. I am bullish on the long term of bigcommerce. Or anything that goes after the small medium business. I don’t think Shopify could sustain a real entrance by Adobe with Magento, or a product in the same space from someone like Microsoft. As these companies know d…
Eh?? Maybe if they rewrite it from scratch and just recycle the brand...
Re: How Shopify Manages API Versioning and Breaking Changes
#85Earlier quoted context omitted.
But Shopify hold the transaction fee and charge 2% on top. So really in the end. Shopify is not that much cheaper. Considering bigcommerce doesnt charge this. I am bullish on the long term of bigcommerce. Or anything that goes after the small medium business. I don’t think Shopify could sustain a real entrance by Adobe with Magento, or a product in the same space from someone like Microsoft. As these companies know d…
Adobe with Magento Eh?? Maybe if they rewrite it from scratch and just recycle the brand...
Re: How Shopify Manages API Versioning and Breaking Changes
#86Earlier quoted context omitted.
>those apps continue to be updated and utilizing the latest features. while this is orthogonal to Shopify API or your post at all, since you mentioned the need of updates, I just wanted to use that opportunity to vent my frustration with the constant push to update everything all the time and judging any piece of software by using "when was the last update" as a metric. The problem I see is that not all apps or libs…
> ping...Why would anyone need to update it? How about being able to ping TCP ports? I need this for debugging all the time. Yeah, I use tcping instead... but why is this a separate tool? Dumb. I'm pretty sure that for every tool you think is "done", there's someone out there screaming at its inadequacy.
Re: How Shopify Manages API Versioning and Breaking Changes
#87Earlier quoted context omitted.
Shopify's business plan is offer minimum functionality for a low monthly fee and then users use the marketplace to add additional functionality which Shopify takes a 20% cut. I'm actually working on an open-source fulfillment and operations app for Shopify: https://github.com/openshiporg/openship I use it to build small apps that interact with the API directly instead of paying and relying on any apps.
But Shopify hold the transaction fee and charge 2% on top. So really in the end. Shopify is not that much cheaper. Considering bigcommerce doesnt charge this. I am bullish on the long term of bigcommerce. Or anything that goes after the small medium business. I don’t think Shopify could sustain a real entrance by Adobe with Magento, or a product in the same space from someone like Microsoft. As these companies know d…
Re: How Shopify Manages API Versioning and Breaking Changes
#88I want to love Shopify but Shopify doesn't want to love developers. For example when their multi-location offering [0] _in beta_ they also announced that the Inventory API is going to breakingly change in 2 months and _none_ of their own SDKs supported locations at that point. This has happened with Shopify time and time again. Shopify doesn't manage API versioning or breaking changes: it just forces developers to up…
Re: How Shopify Manages API Versioning and Breaking Changes
#89Earlier quoted context omitted.
You couldn't pay the 6,000-8,000 for like 3-4 months and keep your business afloat until you rewrote it? Kind of sounds like your business was really really in the red already, or more information is missing?
Not everyone is in the “money is no object” startup economy. Outside of tech small businesses are actually small.
Re: How Shopify Manages API Versioning and Breaking Changes
#90Earlier quoted context omitted.
>those apps continue to be updated and utilizing the latest features. while this is orthogonal to Shopify API or your post at all, since you mentioned the need of updates, I just wanted to use that opportunity to vent my frustration with the constant push to update everything all the time and judging any piece of software by using "when was the last update" as a metric. The problem I see is that not all apps or libs…
Well first of all I think it's a straw man to imply that anyone would want to send emails or share to Facebook out a ping utility. That's sort of a big thing that makes utilities different than applications . Edit: I deleted a couple sentences and realize now this might not convey exactly what I meant. Utilities are easy to call "done," applications are not. Applications interact with external forces who do change co…