Hacker News new | ask | show | jobs
by eatwater123 1261 days ago
Cool. But god, the Shopify CLI / developer experience has degraded so much in the past few years. With the newest iteration, they want a full app re-structure just to work with the CLI properly. It is absolutely brutal.

Sure, before they had basically no tooling, but then they had some basic ones that everyone was basically happy with, and then they just decided to iterate too much.

(saying this as a ~ 8 year long Partner / Expert / App Developer)

I've spoken to some Shopify employees and they all agreed that the developer teams are a bit of a mess. It seems like nobody managing the developer products are actually using the end results, otherwise they'd realize the hoops needed to work through (unless you are starting a brand new project right now --- and hoping that they don't decide to change it all, like they have 5 times in the past 3 years)

8 comments

My read on this is they just wanted to cut out Ruby and do everything in Node. That's fine as a decision, but rest of the article feels like just trying to justify it after the fact. Like someone at the top decided, now lets pretend it's a good decision.

As you mentioned, if they're not OK with CLI, they could refactor in Ruby. The whole "embracing functional programming" and MVC architecture (i think Rails when i hear MVC) as reasons to go to Node, and not Ruby, is nuts.

If they were worried about dependencies, they'd use Rust or Go as they mentioned.

This might be the first article I've read where Node's module resolution algo is touted as a benefit.

Just how complex is your command line app if you need to have multiple transitive versions of the same library?

Coming from the same company that is so heavily invested in Ruby that they contributed to a new JIT for it (YJIT), built a static type checking layer (sorbet) for it, and built a module system that prevents you sharing code between those modules (packwerk), etc.

Unrelated but it is reminding me of my attempt to integrate with Zapier. Zapier doesn't document an API anywhere, you have to use its 'CLI app'. The CLI app of course just calls undocumented HTTP APIs behind the scenes.

Minor note, Sorbet was written at Stripe.
That’s how I read the article too. We wanted to move from ruby to node. They even admit that the most well know language is ruby in their org. Seems like a pretty serious waste of resources to me.
> Like someone at the top decided, now lets pretend it's a good decision.

It might not even be a top thing, if they migrated internal eng from Ruby to node internally I would not be surprised if this was dev-driven either

Interesting how Shopify went from the most pro-ruby company to what looks like unreasonably rapid divestment from it. Wonder what's going on.
Besides this article, what gives you that impression?
I seem to recall reading recently that Go was showing up in their org. May be mistaken or misremembering.
We’ve been using Go since 2013. We recently started using Rust, but it’s mainly eating away at Go’s usage rather than Ruby’s. Ruby continues to be our first-choice language for most problems.
Ruby is still the primary backend language at Shopify. Node is popular amongst partners.
A lot of Shopify Partners I've talked to feel the same way. The tooling and API has become harder to work with over the past couple of years.

The previous designs (which worked very well for a long time) seemed to have been all thrown out/deprecated to such a large degree it has caused a lot of long time devs to be scratching their heads.

One of the things I find fascinating is that in the days where it was Liquid templates, and Vercel etc. were barely a twinkle in people's eyes, Shopify had a huge value add - that you or an app development consultancy could iterate on customizing interfaces here and there, and deploy changes from the CLI or directly on the Shopify platform, without needing to worry about deployment, payment processing, etc.

But so much has changed now. Deploying a customized frontend has a negligible cost, and the API surface that Shopify powers could be powered by a myriad of tools, with Stripe etc. doing large amounts of heavy lifting on the administrative side.

Were contractual obligations, and not wanting to bite the hand that feeds, the only thing preventing longstanding Shopify app developers from joining together and creating an industry-standard alternative API surface that could be deployed in different ways?

My partner runs a medium sized ecommerce store on Shopify and her priority is having a system that is simple and stress-free.

And whilst she appreciates all of the Shopify Apps they are secondary to the fundamental process of taking, processing and shipping orders.

The key to the whole ecosystem are non-technical users like her not the app developers.

And people who think they will be the next big store :)
Agreed. Every year or two Shopify reinvents the wheel. Ruby => Go => Rust => Node => Wasm?

It will happen again. I believe they have terrible tech leads / managers who push/approve wrong things. They also grew exponentially during the pandemic, so that grew their manager's incompetence exponentially as well.

They sure do like to start over, huh? What's funny is that Slate was canned while still in beta: https://github.com/Shopify/slate#-slate---end-of-support-jan...
i'm a shopify partner and i agree with this sentiment. changing the cli is one thing, but making it require a full app restructure is so risky that i'm holding off on doing it until the very last minute. besides, it looks like they are pushing more towards embedded apps. that is fine, but you need to also cater to app developers with standalone applications.

finally, i do think it will change again because the structure for theme app extensions have changed and now i'm not even sure if my project will work if i update that section.

the migration documents are very bad and they remove old documents. for example, it used to be that you need to add a folder called `theme-app-extensions` and it's very different, and there is no migration docs for that. they just want you to use cli 3 out of the blue.

How does something like this happen? Shopify should be absolutely on top of its game here, seeing as user experience seems to be one of their main priorities?

Nowadays it's not that hard to get UX/DX right if you are actually committed to it.

This is where I'm at right now. We have 40000 items on the store and I'm writing an updater for it, and the entire official ecosystem is a dumpster fire.

I've found some ok golang api clients which seem to do the trick so far.