The Changelog: Software Development, Open Source - Shopify's vision for the future of commerce (Interview)

Episode Date: November 19, 2021

Today we're joined by Ilya Grigorik to talk about Shopify's developer preview release of Hydrogen and the preview release of Oxygen which is in early access preview with select merchants on Shopify. H...ydrogen is their React framework for dynamic, contextual, and personalized e-commerce. And Oxygen is Shopify's hosted V8 JavaScript worker runtime that leverages all of their platform with the hope of scaling millions of storefronts. We cover what developers can expect from the Hydrogen framework, Shopify's big bet on React Server Components, the future of Shopify at scale with Hydrogen powered by Oxygen, and a world where merchants never have to think about the complexities of scaling infrastructure.

Transcript
Discussion (0)
Starting point is 00:00:00 All right, welcome back. This is the Change Law. We feature the hackers, the leaders, and the innovators of the software world. Today, we're joined again by Ilya Gorik. We're talking about Shopify's developer preview release of Hydrogen and also Oxygen. Hydrogen is their new React framework for dynamic, contextual, and personalized e-commerce. And Oxygen is Shopify's hosted V8 JavaScript worker runtime that leverages all their platform with the hope of scaling millions of storefronts. We cover what devs can expect from the Hydrogen framework, Shopify's big
Starting point is 00:00:36 bet on React and React server components, the future of Shopify at scale with Hydrogen powered by Oxygen, and a world where merchants never have to think about scaling infrastructure again. Thank you. Feature Flags, Powered by LaunchDarkly. Get a demo at launchdarkly.com. This episode is brought to you by our friends at Fly. Fly lets you deploy your apps and databases close to your users in minutes. You can run your Ruby, Go, Node, Deno, Python, or Elixir app and databases all over the world. No ops required. Fly's vision is that all apps should run close to their users. They have generous free tiers for most services, so you can easily prove to yourself and your team
Starting point is 00:01:33 that the Fly platform has everything you need to run your app globally. Learn more at fly.io slash changelog and check out the speed run and their excellent docs. Again, fly.io slash changelog or check the show notes for links. It's good to have you back. We've been obviously acquaintances and friends over the years, having done many shows together. Talked about a lot of stuff you've done, post-rank, speedy, performance on the web, your career at Google, now at Shopify, and just excited. I reached out to you on LinkedIn when you made that move, and you said, well, we'll talk later.
Starting point is 00:02:28 And so I think now is later because there was this big release, Hydrogen is out there, Oxygen to come, a lot of fun stuff happening. And I guess you're combining a lot of the efforts, which is like performance, but also dev tool related in this release and what's going on. But one, just good to catch up with you. So welcome back to the changelog. Thank you. Yeah. Thanks for having me back. It's always fun. Yeah. And even more, we're big fans of Shopify. We have our own, I'll plug our merch store. If you don't mind, Jerry, can I plug our merch store? I don't mind. Elliot, do you mind? Please.
Starting point is 00:02:55 It's easy. It's merch.changelog.com. It is powered by Shopify. I think we use the kit. I forget what it's called. Whatever kit, it's like the basic way, the CLI version of like deploying our theme. That's how we do it. We deploy our theme to Shopify via the CLI. Super easy. We have it stored in Git, of course, on GitHub, but then we deploy it via the CLI and I love it. So it makes managing our store so much easier, but big fans of Shopify, big fans of you.
Starting point is 00:03:22 So catch us up. You moved from Google to Shopify. What made that move make sense for you? Why did you make that move? What's so big about Shopify? First, I just want to say that I spent a decade or so at Google working on a number of different projects. And it's an amazing company with lots of smart people and amazing technical playground. So there's no shortage of opportunities and really interesting projects.
Starting point is 00:03:45 But at the same time, I was always really curious about commerce. I've worked with commerce, large commerce sites, helped many improve performance, but always had this inkling towards, hey, it'd be really fun to get really hands-on and work in a capital P platform for commerce.
Starting point is 00:04:01 And Shopify is an obvious place today. It's emerged as a really big player and enabling millions of merchants to build their online presence. So it felt like a great opportunity and really interesting and familiar technology stack for me. Of course, I think one of the first shows that we did back in 2011 was a Ruby server that I was developing, my team was developing, called Goliath. So I was working on streaming and async HTTP server for Ruby. And of course, Shopify is a Ruby and Rails shop
Starting point is 00:04:35 through and through. So it's just an opportunity to come back to the Ruby tried that was also very fun. I found I rediscovered a lot of long-lost friends. It's like, hey, remember we hang out at the, or we hang out at this event back in, you know, 2008, that combination of all of those factors and the fact that commerce is only growing in relevance and importance. I think this is one of the themes that maybe we'll both touch on today. COVID was an accelerator for commerce. It shifted a lot of commerce
Starting point is 00:05:02 online. It became much more important. There are many merchants who have thought about, hey, I should get online. And then all of a sudden, they had to overnight. Shopify was there to help. I think that we did a really good job on that front. And yeah, so combination of all these factors enticed me to jump aboard the Shopify ship. And I've definitely not regretted it. I've appreciated the scope of opportunity coming in, but seeing how the factory operates from the inside only gave me more appetite
Starting point is 00:05:32 for the space because Shopify is not just a storefront builder. I think a naive view of Shopify is it's a place where you get an online store and sell stuff, but it's so much more because the superpower of Shopify is that it integrates all of the pain of doing commerce, which is very, very deep.
Starting point is 00:05:49 It's questions like, how do I do shipping? How do I do credit card billing? If I have a return, how do I handle that? How do I handle my customer database? And there's a million of these little things, as you guys know, because you're running the store, that if you don't have a system that actually works well together, you'll end up spending 80% of your time on that minutiae instead of actually doing the thing that you're supposed to be doing, which is doing your podcast or selling your merchandise.
Starting point is 00:06:14 Yeah. I mean, I love that we all have Ruby Roots, too, and that it's a Rails app. I mean, it's a Ruby app now. We've talked about the big rewrite in a past show. We'll link it up in the shows. But even the R&D around that front, like what does it take to make the application performant for all the necessary reasons?
Starting point is 00:06:33 I think you're absolutely right. I think the one thing that has been holding or in any way holding Shopify back would be the integration of developers. And I think the React framework on the storefront is a phenomenal move. ThemeKit is great, but it's got its limitations. Even how do you build locally and all these fun things. How do you give a developer a playground that is commerce related
Starting point is 00:06:56 is the question that you've solved here. And I think that once you solve that, it's just like floodgates. I'm expecting floodgates to open up because this is going to be a lot of fun. Yeah, I think we still have quite a bit of work, if we're honest, to do to really transition into a capital P platform. But I think that's where you're seeing the company head. And that's what has me really excited. And just to double click on that briefly, I think the superpower of Shopify is the fact that it actually appeals to non-developers. This is the no-code commerce.
Starting point is 00:07:29 So if you're familiar with the foundational myth, but it's not a myth of Shopify. Every tech company has this myth. And the Shopify lore is Toby, who's our founder, at the time he was also a Rails core contributor. He was working in Rails, moves to canada he's stuck in an auto winter and he has an idea for hey i'm going to open an online snowboard store and this is like early 2000s he's a developer so he starts coding and he takes a year to build this thing
Starting point is 00:07:58 and he launches his snowboard store and he does have like you know a couple of sales and all the rest and then comes to a realization that you know maybe the value prop here is not the fact that i'm selling the snowboards but in the technology that i built to power the store because unless some other merchant is also as technically proficient as i am they have no chance yeah in this space right and then that becomes the foundation of shopify and you can see this kind of woven through the product through and through where Shopify historically is optimized for you're a non-technical person who wants to start an online store.
Starting point is 00:08:37 Let's make it as simple as possible. In a couple of clicks, you type in your products, you click publish, you have a website, right? You should not have to reason through all the complexity of that. And that's the kind of no-code environment. And I think this is why Shopify has millions of merchants on the platform. Because we make it approachable and you don't have to be a technical expert.
Starting point is 00:08:56 We have a local friend we have here. I live in a small town in Texas. A small town outside of a big town. We live in Houston technically, but it's a small town outside of that called Tomball. You know about that, Jared? Tomball. Tomball. And there's a street called Main Street in Tomball, like any small town might have. And that Main Street has a store called Kids Anthem. KidsAnthem.com is powered by Shopify. It's friends of ours. We built that from a theme. We didn't build the whole store front.
Starting point is 00:09:24 We didn't do all the technical bits behind it. But this is a small next door, literally next door neighbor friend of ours. We help get online. Her store is a large percentage of her revenue. Small town shop in Tomball. Yep. So I think that's exactly right. And just to contrast that, right, like this is early 2000s.
Starting point is 00:09:40 And if you wanted to get on commerce or if you want to do commerce at the time, you would be looking at an RFP with hundreds of thousands of dollars to hire an agency to do an integration, and then you have to like navigate through banks. It's just inaccessible, right? And that's the problem that Toby wanted to solve. And I think we've done a pretty good job of it. And to your point, now, you can start with this no code experience, and then we have the ecosystem of apps and themes where you can start kind of flexing and customizing, right? So you can bring in a custom look, you can hire a developer and pay them
Starting point is 00:10:14 for a couple of hours of work to really make it your own without having to build this whole thing from ground up. And I think this is where Shopify's really scaled and succeeded over the last, I guess, 15 years. And now we've built all this technology. We've built this platform. We run millions of merchants. And we're looking at this thing and saying, look, it's kind of like magic, right? Like our merchants don't have to think about scale or like running Kubernetes clusters and CDNs and all those things. We handle that for them. But there is a subset of merchants and a subset of developers,
Starting point is 00:10:47 folks like yourself, who want to have a bit more control, right? They want to peel back the curtain and like tweak it. So it could be used Shopify hosting infrastructure to run our own custom stack. It's not a crazy question, right? Historically, the answer has been no, you had to write liquid code. You can do a lot of things in liquid, but maybe it's not the right tool for every team under the sun. So now, I think we're going through this exercise of saying, how can we bring out some of the components that power Shopify and make them accessible to developers in a composable way? So oxygen is one
Starting point is 00:11:21 of those pieces. Hydrogen is the framework that we're going to talk about, the React framework. And I think we're still at the beginning of this journey. So, you know, you said, as you said, opening the floodgates. I think that's exactly right. Absolutely. And we still have a lot of work to do. Well, should we dive right into hydrogen or you should give us some oxygen first? Where should we start?
Starting point is 00:11:40 Let's see. Maybe to start, we can talk a little bit about headless commerce. And because oftentimes when folks approach, you will likely discover hydrogen and oxygen because someone, maybe a product manager or a customer came to you as a developer and said, hey, I'm like, I keep hearing about headless. I need one of those. Can you build me one of those? So what is that, right? And it's a term that I love to beat up on
Starting point is 00:12:05 because I think it's unfortunately very much outdated and we just need to all agree to deprecate. So if you allow me a little tour down the memory lane here. Please, yeah. But where did headless come from? I think the inception and why it stuck so vividly in everyone's mind is around 2011, 2013. This is when the web is going through this transition
Starting point is 00:12:24 from desktop only to desktop and mobile. And that was very painful, as you guys remember. We all have memories of trying to browse the web on our little mobile screens and pinch zooming and trying to tap on a link that is way too small and you're missing it. And it's just frustrating. It kind of dawned on everyone that the technology of the past, you know, the WAP protocol and all the rest, like, is not suitable enough. Like, the mobile web needs to be more capable, but you can't just cram desktop web. So now, where you had this tight coupling between the back-end and the front-end, and the front-end was synonymous desktop web, you needed to separate
Starting point is 00:13:00 those out. You needed a different mobile experience. You probably also wanted to explore a different mobile app experience, and you had a desktop experience. So the whole meme of headless is about, let's chop off the head, which is the desktop web, right? And instead, focus on APIs. Like if we have a robust API that exposes all of our content, databases, what have you,
Starting point is 00:13:22 business logic, then we can build these different experiences so it's kind of an unfortunate term because as with any definition by negation right like headless i'm headless now it's like oh great you have an api you have a headless storefront the point is not to be headless the point is to have many different modalities in which you can sell right it's the desktop web it's mobile web it's a mobile app. Nowadays, it's like VR apps, AR apps. You're selling on Facebook and Instagram and TikTok. There's all of these channels that you need to be present as a merchant to really drive commerce. So it's not headless, it's API first. And Shopify, of course, has been a provider of APIs since the very beginning.
Starting point is 00:14:06 We were one of the early adopters of GraphQL, actually. A fun anecdote, I was just looking at one of our API dashboards last week, and it's always fun to see the growth up and to the right and just like how is the slope changing over time. And recently we saw a peak of 1,000 QPS. So that gives you a sense for scale that Shopify operates. And this is purely API traffic. MARK MANDELMANN- What's QPS?
Starting point is 00:14:33 JOHN MUELLER CHAMPENOIS- Queries per second. Coming into the GraphQL API. So Shopify is actually one of the largest, as far as I'm aware, public GraphQL providers. I think there are other apps like Facebook and others that operate in even larger scale in their private use case. But as a public API provider, I think Shopify is one of the largest providers, which is kind of a little known fact.
Starting point is 00:14:53 And we have a really smart set of folks working on GraphQL infrastructure at Shopify. So Shopify is headless in that sense. And I think this is one of the misconceptions in the market. It's like, oh, Shopify is the thing I go to build my online store. Not quite. We also have the GraphQL API and lots of merchants have built really amazing mobile and other
Starting point is 00:15:11 experiences on top of that. That may be like part one. The second part is and maybe a better replacement term that's now being used in the e-commerce industry is this notion of composable commerce, which is which is hey there's lots of different tools out there like there's some really good tax applications and there's some really good shipping applications and inventory management and asset management they all provide api's why don't we just use or the best of the breed for all of them stitch them together and build the best commerce experience which sounds really nice, right?
Starting point is 00:15:45 And Shopify certainly plays in that space. Like many of our more advanced merchants use Shopify for a set of workflows, but then extend their capabilities via other tools by providing integrations with APIs or just custom code integrations and all the rest. The challenge though, as anyone that has built a distributed system will know,
Starting point is 00:16:05 is just the fact that you have the best car parts or you bought the best car parts doesn't mean you have a good race car. You really need to invest into like a really solid pit crew and engineering crew to build out a system that works. This is the hard part of integration in all of these systems
Starting point is 00:16:22 and actually keeping it up and running. So this is where I think Shopify excels or historically excelled because we integrate a lot of this pain, so you don't have to think about it. But if you want to go to this composable route, now you have a set of hard choices. Let's say you wanted to pick a different front-end framework, so you don't want to use Liquid.
Starting point is 00:16:43 Sure, you can take React, a Vue, or whatever other flavor, doesn't matter because you just have GraphQL, and you can build that out. But now you're not querying data locally from the same data centers as Shopify. So now you have to think about the latency of your data requests. And maybe you can patch that with pre-building all of your pages
Starting point is 00:17:05 product pages right so this is kind of a statically generated route okay that works then your product manager comes to you and says but actually i have you know a thousand or a couple of thousand products and each one of them has n number of variants so your build tree just exploded in complexity and of course i also also want to run a b tests on top of that and did i mention that i want personalization oh and make sure that you architect in such a way that i can do really effective dynamic search and before you know it you're kind of sitting there scratching your head trying to figure out how to make sense of all of the soup and this is where we we saw a gap in the existing frameworks and tools and why we thought hey first let's open up some of the soup. And this is where we saw a gap in the existing frameworks and tools
Starting point is 00:17:45 and why we thought, hey, first, let's open up some of the technology that we built at Shopify, which is the Oxygen runtime. So Oxygen is the V8, so it's a worker runtime. Similar, if folks are familiar with Cloudflare workers or even AWS Lambda,
Starting point is 00:18:00 it's a JavaScript worker runtime, more similar to Cloudflare than others because we adopted web APIs. And it runs on Shopify infrastructure. It's powered by V8 isolates. And effectively, you just throw it. It's a HTTP function, right? It accepts an HTTP request. It runs your JavaScript code. It spits out an HTTP response. That's basically the entirety of its signature. But it allows us to run React code on the server or any framework, right? So if you want to write your kind of isomorphic JavaScript
Starting point is 00:18:32 where you're using React on the server in a client, you can do that. You can just throw it over the wall to Shopify and we'll run it. And most importantly, we can run it without you having to worry about how is it going to scale. One of the nice properties of Shopify is a fully
Starting point is 00:18:47 hosted platform. So if you run your store, you don't have to think about tomorrow, I'm going to have a big campaign on Instagram. And do I need to provision more servers to handle that spike, like we just absorb that traffic, we see enough of it. And the platform is flexible enough for for us to handle that for you. So in the same way, our hope is that you can just throw your JavaScript code over the wall, the server-side code, and we'll run it on top of our platform.
Starting point is 00:19:13 And this is a game that we've been playing already for over a decade, so we have a lot of operational knowledge. So it's not like this is an entirely new muscle for us. But what is new is the fact that we're running the V8 isolates, right? They're wrapped in kind of go processes and all the rest. So there's a set of new infrastructure being built out on that side. But otherwise, this is something we're very familiar with. And further, because we're specialized in commerce, we have commerce specific logic. So things like bot protection, like turns out if you really dig into commerce and you have flash sales,
Starting point is 00:19:47 there's an entire ecosystem of malicious actors that I didn't even know exists. Like bots that try to drain your inventory. If you have a really coveted sneaker drop, which is a big thing, believe it or not, you get tidal waves of bot traffic trying to drain your inventory the moment you launch your sale. And you have to build a lot of smarts
Starting point is 00:20:03 to figure out how do you protect your inventory from those folks, right? Such that they don't end up on a resale market somewhere else. Wow. Oh, so their MO is to buy all your inventory and resell it. Yeah, exactly. It's a very clear arbitrage play, right? It's like there's a coveted limited release, maybe a hundred or something or a
Starting point is 00:20:26 thousand and you want to buy up as much of it as possible because there's people are willing to pay big bucks for you know a pair of well-known sneakers that's right it's like a ticket master and ticket sales for a concert same concept like try getting you know tickets you got to be there yep the moment it opens up and even then you're lucky if you get the ticket. If it's like a coveted concert, for example, they sell out pretty quickly in minutes. And that's nothing a merchant should have to... I shouldn't have to operate a sneaker store.
Starting point is 00:20:58 And my focus should be on the coveted sneaker and my customer base and the loyalty of that customer base, not the bot network that's trying to attack my inventory. Exactly. But the bot network's actually purchasing your inventory, right? Yeah. Yes. So you sell out immediately at the price that you named.
Starting point is 00:21:14 I'm not seeing what the downside is for the merchant here, right? Well, your customers are upset. Yeah. No, the bot is your customer at that point. Yes, except that you actually have your fan base. Jared's the bot writer, by the way, Ilya. That's why he's the advocate for the bot, because he's the bot writer. Yeah, yeah. I think it is a good point, though, right? Like, what's the loss for the merchants? You made the sale. Okay, good. But
Starting point is 00:21:35 you have your community. And like the whole value of why does this thing have value is because you have community that believes and wants the thing that you're about to sell, right? So if they're all lining up in a queue to buy one of these things, and they'll wake up at ungodly hours to just have a chance at it, just as Adam said. They'd like to have a chance at this, right? If they lose at this game every single time, they'll lose faith in your brand, they'll lose faith in the whole thing thing and they'll move on to some other product. So it is important that it gets into the right hands. I guess maybe to make the game fair, the purchasing game,
Starting point is 00:22:11 you're making the purchasing game fair. Yeah. Right? Like if you're a bot that's trying to play a majority role in what should be an equal play, then we're going to, I assume, throttle you based upon some sort
Starting point is 00:22:25 of knowledge or signature of this is a bot network based upon its traffic type. Yeah. And that's actually another good point, which is, let's say you are a solo tech entrepreneur that is willing to roll up your sleeves and say, like, look, I got this, right? Like, I know how to write WAF rules. The problem is, this is a continuous cat and mouse game, right? As with anything security related. And you actually benefit from scale.
Starting point is 00:22:48 You actually benefit from working with thousands and millions of merchants and being able to observe the large traffic to build better signatures, continuously evolve them. And there are teams at Shopify that are dedicated full-time to do this. Shopify is not the only company, as you said. Ticketmasters and others have the same problem. And it's annoying that we have to fight it, but it would be even more annoying if you as a merchant had to now think about that next time you have your sale.
Starting point is 00:23:12 Well, what you're describing really is like this technical challenge that if we can remove, abstract away, to use a technical term that we often hear, if we can extract away the technical bits that is the hard part that you could do at scale with dedicated engineering teams, et cetera, for merchants at large is Shopify global at this point. I mean,
Starting point is 00:23:32 I know we're here in the U S is it global commerce? I know in a lot of ways it is, but I'd imagine if you take that pain away for merchants at large globally, then you make the friction to get into the game of like... Selling shoes. Transferring value to little customers, then it gets a lot easier. Yeah, so certainly the scope
Starting point is 00:23:52 for all the work that we do is global. We are globally distributed in terms of our infrastructure. We have clients and servers across the globe. So that's certainly true. I think it is also true that there's still a significant portion of our merchants that are English speaking countries, but increasingly,
Starting point is 00:24:09 it's becoming much more distributed. And I think you'll see Shopify investing into other markets as well, kind of in a big way. International selling is its own domain of complexity. And if you're a merchant that needs to work in multiple geographies like that that's its own complex world of functionality that you need some of which Shopify has there's still lots more to be done but maybe just to come back to the hydrogen and oxygen bits right so I hinted at one thing which is once you go into this world of composable commerce and as a developer there's a lot of complexity in how do I connect all the services together, one, and two, how do I take it to production? So Oxygen is our answer to how do you take it to production because hopefully we'll just give you a platform
Starting point is 00:24:50 where you just throw the code over and we just take care of a host of things that you don't have to think about, right? In the same way that you use Heroku and you don't have to worry about like, is my dyno running? In the same way, we'll take care of scaling this, putting a CDN in front,
Starting point is 00:25:05 doing all the bot protection that we talked about and all the rest. The other bit is the tools to actually build great commerce experiences. Our experience of working with merchants at scale, large merchants and merchants with sophisticated needs that are actually looking to hire developers is that they're not
Starting point is 00:25:25 building static commerce frontends. I think you can definitely build really high performance, really nice statically deployed commerce experiences assuming you're a certain size of a merchant or maybe it's like catalog size or you have a fixed set of products.
Starting point is 00:25:42 But once you move out the complexity curve into larger catalogs and you want to do things like A-B testing, personalization, contextual pricing, multiple geographies, and all of these things that a lot of the larger merchants have to battle with, the tools kind of fail you today. They don't give you all
Starting point is 00:25:57 the right batteries included things, and you have to reinvent that wheel time and time again. So our hypothesis, and all of our data backs this up, is commerce is dynamic. And if you buy that, I think you need to start with really fast server-side rendering as a core foundation on which everything else is built. So instead of starting with, I'm going to build my site and push it to the edge, and then I'm going to add layers of dynamic capabilities like A-B testing and all the rest.
Starting point is 00:26:26 Our bet is actually the opposite, which is you have to start with really fast server-side rendering. And then, of course, you add all the edge capabilities. Like there's a set of pages on your store that can be cached for a long period of time. Maybe it's the marketing pages. Like, great, serve it off the edge, right? Maybe even certain products are mostly static and you can
Starting point is 00:26:45 cashless at the edge like we have the tools for that you know cash control headers and all of these other things we can do that at scale but to really power dynamic commerce with large catalogs you need to collocate data and rendering which is one of our superpowers so when you deploy to your storefront to oxygen you get the the runtime, but you also get the Shopify database or your database, your storefront database co located right alongside, right. So when you're making those queries to resolve your GraphQL and in other requests, they should be returning within milliseconds, as opposed to having to traverse
Starting point is 00:27:22 the public cloud to get to hit the storefront API and get that response. And that really stacks up, right? So we believe that, A, yes, it is harder in many ways to deliver high performance dynamic commerce. But if you have the right infrastructure and you're running co-located data and rendering, you can go really far. And that's how Shopify is built.
Starting point is 00:27:59 What's up, friends? This episode is brought to you by our friends at Retool, the low-code platform for developers to build internal tools. Some of the best teams out there trust Retool. Brex, Coinbase, Plaid, DoorDash, LegalGenius, Amazon, Allbirds, Peloton, and so many more. The developers at these teams trust Retool as a platform to build their internal tools, and that means you can too. It's free to try, so head to retool.com slash changelog.
Starting point is 00:28:24 Again, retool.com slash changelog. Again, retool.com slash changelog. so ilia this sounds really cool how you're talking about co-locating the data and the edge functions one of the things that i keep saying over and over again i spoke with evan weaver from fauna on this generalizing that problem of we have our functions running at these edge cdns and yet our data is still is not co-located. That seems like a problem that lots of people are working on. It sounds like with Oxygen, at least in the context of your Shopify, you all are solving that for everybody. Now, generic solutions for your random web apps is not out there, but in the case of Shopify, you're co-locating that and making that server-side really fast. I think the best way to think about Oxygen
Starting point is 00:29:29 is it's a function-as-a-service runtime that allows you to bring custom JavaScript code, which will execute on Shopify platform with the benefit of having your commerce data being co-located, which just allows you to build better experiences. And that runs on top of our Shopify infrastructure, which is powered by Google Cloud.
Starting point is 00:29:50 In front of that, we also have the CDN, the Edge CDN, and that has its own set of function runtimes. You can actually think of it as onion layers. There's a set of requests that you really want to render being collocated with the data. And there may be a set of maybe routing decisions or maybe even some simple EBT testing optimizations that you can do or test, rather, that
Starting point is 00:30:16 can run directly at the edge. I think this is one of the areas that are still being actively explored by the community. We saw some really interesting work done by Next. We're thinking about it with Hydrogen as well, which is when you're building your page, or when you're building your website, like there's some set of pages that can run
Starting point is 00:30:33 at different tiers in the network. At least that's how my mental model is. And how do you designate them to run in those locations? Right, so you could say, maybe for this particular page, I don't actually need any data fetch. Or if I do, I'll cache it at the edge. I'll make that request once.
Starting point is 00:30:47 I'll pay the cost once. And I'll cache it for a long period of time and revalidate it asynchronously. For some other type of requests, like where you're actually personalizing, let's say, prices for your customer because they signed in, they have a loyalty program, and they have a stacked set of discounts, that really needs to traverse deeper
Starting point is 00:31:05 into your network path or into your topology, if you will, to hit that other endpoint, which is co-located with data and service a fast response. Pretty cool stuff. So server-side rendering, let's get into the hydrogen side. So this is a React framework. So maybe let's just start with React and we'll branch out from there because you're placing some bets on this. SSR is one of your bets you're placing. You also are selecting React, which does that lock out a
Starting point is 00:31:34 subset of developers? Of course, React is a large front-end ecosystem, but you do have people who love Vue, they love Svelte, they love other things. Are they able to use Hydrogen or is this just for React folk? Good question. So we started with React svelte they love other things are they able to use hydrogen or is this just for react folk good question so we started with react because we asked our merchants we talked to lots of merchants for what are their needs what are they hearing what are they asking and the message was pretty
Starting point is 00:31:56 loud and clear and not surprising i think to anyone listening to this podcast which is react is a very large and vibrant ecosystem, and just simple access to developers, number of components, and all the rest. So they asked us to build something that helps them be more productive with React. So that's pragmatically where we started. At the end of the day, the goal of Shopify is not to build web frameworks.
Starting point is 00:32:18 We'd like to build a really good one to empower developers to build great commerce experiences, but ultimately our goal is to help merchants sell, right? So we're certainly thinking about how do we build all of these technologies in a way that empowers developers of all flavors, regardless of what your technology choices are, to build experiences that they like.
Starting point is 00:32:38 As we're building the React components for Shopify, we're thinking about how can we abstract them as web components and make them reusable across the system? Now, is that true today? No, it's not because we took the short path, but we're already building. If you look at how the code is structured and how it's laid out, you can see how we can make it modular such that even if you wanted to use a different, for example, React framework, let's say you're using Next, could you bring some of the hydrogen components?
Starting point is 00:33:08 Hydrogen components are Shopify built, Shopify optimized commerce components. At the end of the day, we're building with a core assumption that you're building on top of Shopify and on top of Shopify data model. That allows us to specialize and offer an opinionated
Starting point is 00:33:24 set of components. If you want to use that in another React framework, you should be able to do so. I think we still have some work to do there, and we'll get there based on demand and folks willing to contribute. But all that to say, I don't think we have a strong bet on the framework. Like, what's the right choice? We're taking a pragmatic choice, which is is this is what our merchants have asked. And when we looked
Starting point is 00:33:48 at the available set of tools in the React ecosystem, we felt like the existing crop of frameworks, and particularly ones for commerce, don't solve the right problems, or maybe don't stack the right decisions to enable this dynamic commerce experience that we've been talking about. There's a host of really good tools
Starting point is 00:34:04 for statically generated pages, but if you really want to build a fast server-side rendered React-powered experience, you have to hire some really smart people to make that work. And that gets very expensive very quickly. And so most teams fail. They end up with subpar experiences, and we thought we could help. So this is why we entered into the space and said,
Starting point is 00:34:28 it's not like we've invented server-side streaming, right? Right. I think I was with you guys on this show 10 years ago talking about streaming in HTTP servers. So this is not new technology, but it's a new stack. It's a different stack. It's a different set of choices, right? So now the question is,
Starting point is 00:34:47 well, I do want to use React on the server and client. How do I do that while still delivering really fast server-side streaming solution that is not blocking on data requests, such that I can enable the clients to quickly render at least like a visual shell of the page, provide some like loading indicators and speak to that user experience aspect of speed, not just the technical metric of speed, right?
Starting point is 00:35:12 Like, did you get the fast time to first byte? Yeah. I can imagine us being two years down the road, having you back on, Ilya. So we're at the opening gates of a new thing for you. You put six months into this. You work closely with the React core team. So you've had very knowledgeable people involved with this project on how React works.
Starting point is 00:35:32 But I can just imagine like to Jared's questions, like, you know, why did you choose React over Vue, Svelte? And does it lock out other frameworks? I can imagine this at the beginning. And like any beginnings, you start from somewhere. I think that's exactly right. We took a pragmatic choice. So if you look at Oxygen, as I said, it's a thing that accepts an HTTP
Starting point is 00:35:49 request and spits out an HTTP response. It doesn't matter what JavaScript code runs inside. So any server-side JavaScript is fair game. On top of that, we have GraphQL, which is framework agnostic, of course. And now it's a question of how do you make the right decisions,
Starting point is 00:36:06 architecture decisions on the server of how you compose the response such that you don't end up blocking the response for too long, right? So let's say you need to fetch product data, query some product description data, maybe figure out card discounts. Can you do those things in parallel
Starting point is 00:36:22 as opposed to sequentially and blocking and stream that such that user has a good user experience so like that's a set of choices that you have to make and that's a problem that we're solving with with hydrogen you mentioned next js did you consider a similar approach versus all server-side rendering but kind of a hybrid where they have some pre-rendering they also have some server-side rendering. You mentioned, or is it just caching is your answer to all pre-rendered pages? It's like you've got a marketing page
Starting point is 00:36:50 or your about page, instead of pre-rendering it, just cache it. Yeah, we actually work pretty closely with the next team. They're also innovating and pushing in boundary and React server components. So React server components, it's this new hot thing
Starting point is 00:37:03 that the React core team dropped as a Christmas gift to the community last year. Right? And everyone got super excited because it's this RFC and it asks answers the perennial question of how do we actually separate client and server concerns? Can we create a convention around data loading patterns? Because right now every React framework has to figure out how do you do data loading, right? You know, get server-side props versus something else. Like you have to learn a new dialect every time you pick this up.
Starting point is 00:37:32 React Server Components tries to answer that. And further, it adds a set of new, or opens doors to a set of new possibilities. Things like, it wasn't possible to do component-level updates before. So if you've rendered the page, right, and the user is interacting with the page and you want to reload just a subtree, you can hack that via various ways. But there is no well-defined convention for how the framework itself could do that.
Starting point is 00:37:55 React Server Component answers that. It also, by separating, creating this boundary between client and server allows us to build better and more optimized bundles. One of the pitfalls, pardon the tangent here, of isomorphic client-server JavaScript is ultimately we're building these React applications to run in a browser, right? So there's a set of assumptions about browser capabilities and browser APIs being available. You bring that onto the server and you go, well, it's not quite like the browser right these apis are not available and now i need to figure out if i only run this code do i export these exports to clients as well like it becomes really muddy really quickly and maybe if you're super
Starting point is 00:38:36 judicious you can navigate through that forest but it's a very challenging problem rsc reacts our component defines those boundaries and at least on on paper it promises to solve many of those things and it's still under active development propify has been one of the early adopters we saw it we played around with it kind of tried to rebuild our own applications with that pattern and we felt like it felt nicer than what we were using before because similar to any other framework we were inventing our own data loading strategy. And then we swapped it out for our CM. It's new, so there's still friction
Starting point is 00:39:11 for most React developers because, well, it's a new shape of API. But you kind of get these second-order effects where it just feels more intuitive. It's easier to grok. So even though it takes a little bit of RAM time for someone new, they see the file name and it says.server and it kind of just clicks. It's like, oh, you know, I can infer
Starting point is 00:39:28 what that means. So we have the benefit at Shopify of starting anew. We're not a framework with an existing install base of thousands of apps. We don't have to move them over into this new world, which is one of the challenges with the React server components, suspense and all the rest. If you have an existing application, a lot of these things are not easy to adopt because they change how you have to think about data loading, different state transitions and all the rest. For better or for worse, we're starting from scratch. So we're willing to take some opinionated and future looking bets because we have the luxury of not breaking anything yet.
Starting point is 00:40:04 Yet. You have the luxury for now. Exactly. And this week, this is maybe a good transition to it. So what did we launch this week? This week, we launched the Hydrogen Developer Preview, which is, we're not claiming it as production quality code. In fact, we wouldn't encourage you to write production code. You could. Nothing stops you, of course. But we wouldn't encourage that
Starting point is 00:40:23 because we want to use the period of the next couple of months to really iterate on the APIs based on feedback from real developers and probably break things. Right now is the time to dramatically change in backwards incompatible way before we declare it to be a 1.0 that folks can build production storefronts that run on Shopify. And then we have to maintain for a while. So this is a build production storefronts that run on Shopify. And then we have to maintain for a while.
Starting point is 00:40:49 So this is a really good time if you're just curious about what is React Server components? What is suspense? How do I do server-side streaming? Like go kick the tires on this thing. Play around. And I think we made it really simple for anyone listening to this.
Starting point is 00:41:01 If you just type in hydrogen.new in your browser, it will open up a stack Blitz-powered type in hydrogen.new in your browser, it will open up a StackBlitz powered dev environment that runs completely in your browser and you can just start hacking right away. It's a really awesome experience. That's cool. Yeah, give that a try and just see how it feels
Starting point is 00:41:18 and if you find something that's really throwing you off, open an issue on GitHub or ping us on Twitter and I'd be curious to hear how folks experience it. Side note on StackBlitz, we did an excellent episode of JS Party about that
Starting point is 00:41:31 with one of the StackBlitz people. Really cool stuff they're doing over there. So we'll cross promo that episode. I learned a lot from it and it's cool to see you guys using it in this way that really just lets you
Starting point is 00:41:43 test the waters like immediately right there in your browser pretty awesome does that point at some sort of like a shopify demo or is there data available to be playing with or what yeah yeah so i love stacklets i think i've demoed it to many folks and i think it takes most like at least a few seconds to really click what happened because all they did is like they tapped the link or they typed in the URL and all of a sudden they're looking at an editor. Right. So it's like it's a VS Code environment. Everything's virtualized, including your server runtime. And under the hood, what it does is it basically clones the Hydrogen repo.
Starting point is 00:42:19 And Hydrogen comes with a starter template, which is hooked up to a demo Shopify store. So right from the get-go, you have a preview pane on the right, which is the actual live website, with some example data, like product data and components. So you can just start fiddling with it, right? And change the product description or something else and get a feel for how it, A,
Starting point is 00:42:41 feels to work with this technology stack, but also for how's the shape of the data laid out at Shopify and what are the hooks that we provide? We talked about components, right? So we provide a set of components optimized for Shopify. So they know how to intake Shopify GraphQL and render out common things like variant pickers, product carousels, carts, and all the rest.
Starting point is 00:43:06 But we also provide data loading hooks and a set of cache APIs and fetch primitives such that if you want to integrate with, let's say, a third party CMS because you're storing your marketing content in, I don't know, Strapi or Contentful, you can do that too. And we provide a set of built-in hooks for caching. So we try to build in smart caching strategies by default so you don't have to add it after the fact. We do it for you in an opinionated way,
Starting point is 00:43:33 but give you the power to override them. So we'll make choices like we will cache all third-party responses for up to 10 or 60 seconds. We will do async revalidation in the background. So stay a while to revalidate. So you don't have to block in every response. But if that doesn't fit your particular use case, you can just drop into the config and
Starting point is 00:43:53 change that to suit your particular needs. I love the Easter egg. You mentioned Toby earlier and the launch of Shopify being a snowboard store. I love the Easter egg here. I'm not sure this is intentional. I assume it is based on that. But like it's the store that launches in here is called Snow Devil and it's a collection of snowboards.
Starting point is 00:44:15 Yeah. So just to bring it back, Snow Devil was the original name for Toby's store. And one of the internal missions, if you will, was imagine you were toby and you were starting snow devil today what would you pick you know back in the day he was a rails contributor he knew rails so he started built like he was working on active merchant so he started building on rails but today if toby was starting to build a store and he was a developer what would he pick right and our hope is that you would consider hydrogen because there's a platform it's optimized for
Starting point is 00:44:51 commerce it has the right hooks and all the rest so yeah it's a little bit of a homage to uh like rebirth of shopify even the art's very nice too obviously i mean this is uh you got hydrogen is one of the arts on here you got've got the full stack, actually. Not full stack, but the full stack. And it's a stack of just servers or something like that. Squares in 3D. Liquid. The liquid is on there.
Starting point is 00:45:17 And then the first one, which is the toggle. I love it. Attention to detail. Yeah, we definitely went all 90s retro on the website as well. So if you go to hydrogen.shopify.dev, that's the landing page which talks about the high-level value prop and features. I recommend checking that out. It also links out to some example repos for, for example, Shopify Supply.
Starting point is 00:45:42 Shopify Supply is a Shopify store with like various merchandise and we're rebuilding it on hydrogen. So you can poke around that and just see how the team is progressing there. I mean, I want to go buy one of these snowboards. You got morning, evening and night for the hydrogen board. I mean, you've even themed the variants,
Starting point is 00:45:59 you know, speaking to the complexity of what happens in commerce as you've got the variants issues with different products out there, I mean, I'm going to buy the nightboard right now. A brief detour. So yes, we offer Shopify components, but I think one of the superpowers that we can do here is
Starting point is 00:46:17 it turns out that humble things like a product carousel turn out to be incredibly complex. You start with a very simple like i just need to show an image for my snowboard before you know it it turns into well actually i have multiple images okay fine i also have a video i'd like to play maybe you want to inject a 3d model in there by the way it needs to be swipable then i mentioned it needs to be zoomable because i really want to see that artwork on this damn thing. And of course, it has to work on desktop and mobile. So it has to be touch friendly. Obviously, it has to be accessible. And don't forget about SEO for all of these things. And on top of that, it has to be
Starting point is 00:46:53 performant too. So don't just like blindly load all these images, you have to have a really smart loading strategy for how to do all these things, right? And before you know it, you're looking at a product spec for something that started simple, but it turns out to be incredibly complex. And when you audit most stores, you'll find that they fail across many of these dimensions. And one thing that we can do as Shopify is we can amortize that cost, right? We be working with millions of merchants. We can do the research. We can figure out what is actually a good variant picker experience
Starting point is 00:47:26 based on qualitative research, based on data that we gather from our merchants, and transfer that knowledge as defaults into your variant picker. Does that mean that every storefront needs to use the same variant picker? No, of course not. But it's probably the right starting point for most. And if nothing else, it's a good reference point. So you can take that code and make it your own and you don't have to reinvent that wheel. This episode is brought to you by Sourcegraph. Sourcegraph is universal code search that lets you move fast, even in big code bases. Here's CTO and co-founder Byung-Loo explaining the problems that Sourcegraph solves
Starting point is 00:48:09 for software teams. Yeah, so at a high level, the problems that Sourcegraph solves, it's this problem of, for any given developer, there's kind of two types of code in the world, roughly speaking. There's the code that you wrote and understand, like the back of your hand, and then there's the code that you wrote and understand like the back of your hand. And then there's the code that some idiot out there wrote. Or, you know, alternatively, if you don't like the term idiot, it's the code that some inscrutable genius wrote and that you're trying to understand. And oftentimes that inscrutable genius is like you from, you know, a year ago. And you're going back and trying to make heads or tails of what's going on. And really, Sourcegraph is about making that code that some idiot or inscrutable genius wrote feel more like the code that you wrote and understand kind of intuitively. It's all about helping you grok all the code that's out there, all the code that's in your organization, all the code that is relevant to you in open source, all the code that you need to understand in order to do your job, which is to build the feature, write the new code, fix the bug, etc.
Starting point is 00:49:08 All right, learn how Sourcegraph can help your team at info.sourcegraph.com slash changelog. Again, info.sourcegraph.com slash changelog. And by our friends at FireHydrant. FireHydrant is the reliability platform for teams of all sizes. With FireHydrant, FireHydrant is the reliability platform for teams of all sizes. With FireHydrant, teams achieve reliability at scale by enabling speed and consistency from a service deployment to an unexpected outage. Here's the thing.
Starting point is 00:49:32 When your team learns from an incident, you can codify those learnings into repeatable, automated runbooks. And these runbooks can create a Slack incident channel, notify particular team members, create tickets, schedule a Zoom meeting, execute a script, or send a webhook. Here's how it works. Your app goes down, an alert gets sent to a specific Slack channel, which can then be turned into an incident.
Starting point is 00:49:51 That will trigger a workflow you've created already in a runbook. A pinned message inside Slack will show all the details, the JIRA or Clubhouse ticket, the Zoom meeting, and all of this is contained in your dedicated incident channel that everyone on the team pays attention to. Now you're spending less time thinking about what to do next, and you're getting to work actually resolving the issue faster. What would normally be manual tickets across the entire spectrum of responding to an incident can now be automated in every single way with FireHydrant. And here's the best part. You can try it free for 14 days. You get access to every single feature. No credit card required at all. That way you can prove to yourself and your team that this works for you. Get started at firehydrant.io. Again, firehydrant.io. We talked in the pre-show about Amazon having the commerce cornered, essentially.
Starting point is 00:51:09 And I don't think that's true. For me, when I shop at Worldwide Cyclery or KidsAnthem.com, which is the store I mentioned earlier, my neighbor's store. When I go through the checkout process and I see that Shopify checkout process, I can almost trust that merchant even more because I just know that Shopify's brand cares so deeply about this cool stuff. And this journey for developers, like you can go to any startup out there, the opportunity for a developer where they can go to make their next dent in the world, their next impact in the world is not limited now. Now you have the opportunity to build for great merchants on Shopify because you've enabled great dev tools. You said before limited by liquid.
Starting point is 00:51:54 Yeah, you had some great tech. Their theme kit was awesome, but it had its limitations. And I think now with how the stack integrates all this stuff, like it's just, I said floodgates early because I think like the future is floodgates. Developers are going to like cling to this and build the next best thing for their neighbors. You know, that person who was an entrepreneur who should be on Shark Tank that may or may not be pitching their thing. And now you're buying their stuff because they have maybe one or two developers to work with
Starting point is 00:52:22 them or whatever to make their Shopify experience amazing. Using great dev tools, not just cobbled together things that have been cargo culted from Ruby on Rails days that still work, that are amazing technology. It's not anything bad about Liquid, but it's got limitations for the next front-enders, full-stack devs making real impact. And I think that's why I'm so excited about what's happening here. Beautifully said. And it's not just Shopify either, right? I think what you said here
Starting point is 00:52:52 is about enabling more entrepreneurship and more commerce on the web broadly. And there's a lot of different teams, a lot of products making really, like building really interesting technology to enable that. I think Shopify has a key role to play here as both a one of the largest platform providers. And you're, I think you're seeing us
Starting point is 00:53:10 make that transition from kind of a fully integrated infrastructure into more composable building blocks for developers, oxygen, hydrogen, more flexibility, even things like get integration, right? It wasn't that long that you didn't have that. It's only within the last couple of years that we enabled that. So just allowing that flexibility. So if nothing else, if this is a world that is of interest,
Starting point is 00:53:32 and I think this is a world of a lot of potential as a developer, if you have React experience, I think it's a really sound investment of your time to learn a bit about commerce. Because as you said, there's lots of merchants out there that need your help right and it's a really robust ecosystem that you could make a really good living at it's an untapped market in my opinion for developers out there
Starting point is 00:53:53 listening it's an untapped market it's like walking into a room with mad skills and everybody wants them you know i mean that's what it is like there's so many merchants who trust shopify who they want to direct to consumer that's what it is is. Like they may or may not be on Amazon. This is kind of getting in the weeds of like choice and entrepreneurship and how they choose to deliver their products to wherever, I just think that's just a huge opportunity. There's so many people out there waiting for developers to make and deliver more tooling on top of this and to leverage what you've built to make their stores so much better. Yeah, yeah. I can imagine that like at some point because of Shopify and the way you all think that you may have some sort of support mechanism to train or provide docs or some sort of university or course that can help developers get to speed even more so on what React is. And this is now an entry point. We may say, I'm not a developer, I'm a Shopify developer, because it's specific to only commerce, only on Shopify, because it has that much potential. Yeah. So I'll plug a little bit about Shopify here, because we can unpack this, what you said,
Starting point is 00:55:15 into different aspects as well, right? When you think about the Shopify ecosystem, there is a huge number, millions of merchants today that are looking for some customization, right? And that could be as simple as I'm non-technical. I need someone who knows how to navigate through the admin panel all the way through. Maybe I need some CSS configuration in my theme to just kind of tweak it to my liking. You can apply your skills today to that.
Starting point is 00:55:42 Beyond that, there's also opportunity to build extensions to Shopify. So there's this whole ecosystem of Shopify applications, same thing as like iOS and Android applications, you can build applications that extend your back end capabilities, maybe have an idea for a t shirt store, right. And there's a specific logistical things that you need to do to run that sort of business, you can build an app that tailors to that use case.
Starting point is 00:56:07 And you can plug that into Shopify such that when a merchant comes and says, I have a need for that, I can just install an app and use that. And Shopify provides all the monetization primitives and all the rest. So there's the app ecosystem. There is the, I'm an indie developer,
Starting point is 00:56:22 maybe I'm an agency specializing in building this stuff. And then there's the, like, I work with a large merchant as a full-time or as a contractor, and they want a custom thing. That could be a web front-end. It could be the next AR, VR experience. Actually, we're seeing some really cool innovation with AR and VR.
Starting point is 00:56:40 And it still, I think, feels like hype for a lot of folks, but there's some really cool stuff being built. Like if you've opened the Allbirds app on your phone, It still, I think, feels like hype for a lot of folks, but there's some really cool stuff being built. Like if you've opened the Allbirds app on your phone, you can actually try on the shoes virtually, just on your foot. Is it as good as real life? No, because you don't have the tactile feel, but it's still really damn cool to be able to swap through colors and just see them right on your feet, and that's really neat.
Starting point is 00:57:02 And then there's examples like complex con so a large event for sneaker community last year but because of covid they couldn't meet in person so the whole thing happened online it was a virtual world it had commerce built in it was powered by shopify so it's a game that you venture through and you could you know walk into a room and go into a panel which would be a video stream. It's like, it's completely re-imagining the experience way beyond everything we talked about here. It's not touching React.
Starting point is 00:57:32 It's not anything else. But once you have the right primitives, once you know how to think about commerce and all the possibilities it can unlock, to your point, I think it's just such a vast playground. So do you see this? I know it's not fully formed yet. Hydrogen, like you said, developer preview. Oxygen, not even available yet. It's going to
Starting point is 00:57:48 be a 2022 thing or maybe closed preview. What's the state of Oxygen? Oxygen is in closed beta with a set of merchants right now. So there are folks running on Oxygen, but we're still hiring out some of the infrastructure to do like effective routing, some of the security bits and all the rest so our plan is to make it available in early 2022 by then we hope that hydrogen will be in robust enough shape as well so we can actually recommend folks to write and deploy production apps on top of this infrastructure i'd imagine hydrogen requires oxygen we're getting kind of maybe in the h2o world potentially with actual chemistry and considering which recipes make something.
Starting point is 00:58:28 But you can go now to hydrogen.new, and that's what you can play with. Beyond that, you would need oxygen to throw the React code over the wall, as you said, and run it on Shopify's infrastructure. It's still decoupled. It's not ready to do beyond what you're doing, right? Is that where it's at? Yeah, so the way I think about developer preview is ephemeral environments that you as a developer
Starting point is 00:58:51 can spin up quickly, play around, test, figure out if this fits, give us feedback, and all the rest. At the end of the day, it's server-side React code. And if you can run server-side React code on your platform of choice, you can run Hydrogen. There's no direct coupling to Oxygen. So in fact, if you go into our documentation,
Starting point is 00:59:11 you'll find some docs on how do I run this in a Docker container. So you could throw this on Linode if you wanted to, or even try to deploy to Cloudflare workers. Our bet is that long-term, in order to unlock the full power of dynamic commerce, you do want that rendering and data collocation and capabilities. And most merchants don't want to think about
Starting point is 00:59:33 writing Docker configs, and commerce at scale is not a Docker container, right? It is a fleet of Docker containers that you need to orchestrate, and you need to figure out the CDN and all the rest. We take care of that for you. So you don't have to use Oxygen. You can use Hydrogen, query our GraphQL API, and run it on your own infrastructure.
Starting point is 00:59:52 Totally fine. But I suspect that most folks will find a lot of value in just deferring that problem to Shopify to say, you guys know how to run commerce. Why don't you do that for me? So if this is a current bet, then what bumps do you see along the road? Like what, sure, you're in developer preview with hydrogen, you're in closed beta with oxygen. What are some of the bumps anticipated? What are some of the most technical challenges you're currently tackling as a team? What's the next few months for both these projects? I think there's still a lot of unproven technology in the react
Starting point is 01:00:27 space right so adopting suspense adopting react server components there's a promise of optimized bundles but a lot of the tech is still being built it is being experimented with right now by our teams so i think all those are solvable problems the question is how quickly right like is it a month problem is it three months problem or is it a three-month problem or is it a 12-month problem? And I suspect that it might actually be a 12-month plus problem for the React ecosystem at large, but it might be a much shorter timeframe for the needs of Hydrogen and Shopify
Starting point is 01:00:58 because, as I said earlier, we don't have to think about the existing ecosystem and how do we move them over and all the rest. So we can stack these technologies in a more opinionated way and kind of be more forward looking. At the same time, that also means that we need to spend a lot of time on education, which comes back to your earlier point of like, I'm not a React developer, where do I start? How do I learn about React Server components? I think that's a role that we will have to play. We will have to partner with the React team to figure out how to tell that story right and make sure that it actually resonates and blends right.
Starting point is 01:01:31 On the platform side, running a production platform at scale is a non-trivial undertaking, right? So there's lots of work that we need to do under the hood to provide the right security, isolation. We have some very large stores running some very large record-setting sales, right? So we need to ensure that we provide the right amount of scalability while at the same time maintaining efficiency, right?
Starting point is 01:01:56 One could imagine that you isolate every shop to provide the best performance. You know, everyone lives on their own Docker container, but that quickly gets out of hand. So how do you navigate through those waters as well? That's a lot of stuff that we have to think about to provide the best performance. You know, everyone lives on their own Docker container, but that quickly gets out of hand. So how do you navigate through those waters as well? That's a lot of stuff that we have to think about that as a merchant, you shouldn't and won't have to think of it.
Starting point is 01:02:12 But there's still lots of questions to answer there. That said, once again, we come back to, this is about server-side streaming. This is about isolation, this is security. These are all problems that have been solved by smart people before. We'll solve them here. So it's more a question of timeline than it is about, you know, is this actually technically
Starting point is 01:02:29 possible? Yeah, it's just a time problem, not a unproven concept problem. Yep. Yep. So when this is fully formed, do you imagine that developers will be able to create things that they can't currently create on Shopify? Or do you think this is more about speed to creation, developer experience, and making the hard parts easy, not having to worry about the accessibility
Starting point is 01:02:54 and the speed of the rendering? And a lot of the parts that you have to think about having that stuff taken care of as part of these components, or do you think this is going to unlock new capabilities for devs? I think it is both. I think it is going to unlock new capabilities for devs? I think it is both. I think it is possible to do the things that we described, like really high performance,
Starting point is 01:03:13 dynamic commerce with A-B testing and all the rest. But that has been the main of very few, very well-resourced engineering teams, typically at large organizations, because you can only absorb that amount of cost and pain, technical pain at that scale. And because of that, I think we're not seeing the amount of innovation that we could, you know, in the kind of medium and smaller scale merchants. Questions like A-B testing. A-B testing is still a dark art for most folks.
Starting point is 01:03:40 It is technically complicated. Large organizations typically have to have entire engineering teams dedicated to this sort of thing. So one question that would be interesting to explore is, and this is, I think, both opportunity for Shopify and developers building apps on top of Shopify, is to think about how would you deliver an A-B testing experience that a non-technical merchant could actually understand. And how do I provide that user interface that A, just allows them to create that test,
Starting point is 01:04:11 but then manages the entire deployment while not destroying the performance of the website? It's possible to do A-B testing before. Typically how that's done is you drop a JavaScript snippet on your page, which blocks rendering. Then you get a beautiful WYSIWYG editor that you tweak the strings or description or price even. You hit save, and it dynamically re-renders the page after it's loaded on the client.
Starting point is 01:04:37 It's actually a really good merchant experience, but performance-wise, it's a disaster. Why can't we have both? And I think that's like, if you just tap on that and all the related questions around localization and pricing and discounts, there's so much to be built in the space still. And I think that's an opportunity for developers, as I said, to build apps and for Shopify as well. Do you think there'll be any ripples in the water,
Starting point is 01:05:03 so to speak, with regards to the greater developer community beyond Shopify from your work on hydrogen? It seems like oxygen is clearly Shopify's side functions, but the open source side of hydrogen, is there fruit coming out of that for folks who aren't going to build on Shopify or is it all simply scoped to Shopify? I think so. I think the work that we're doing, for example, with the React core team to validate and prove out React server components will have a huge impact for the React ecosystem at large. I guess, conditional on your belief that React server components are going to become the de facto standard for React.
Starting point is 01:05:41 I am betting on that future. I think it will take time, especially if you have existing apps, but it feels right based on our experience. And we're working with a team now to figure out things like, yes, in theory, it allows more effective bundles, right?
Starting point is 01:05:58 So the idea is that you could isolate code that only lives on the server and not ever export it to the client. But in practice, like how do you actually hook that up? How do you make that work with Webpack? How do you make that work with Vite? And there's a lot of gnarly technical things
Starting point is 01:06:11 that are still being built. So we're working through that now. And once that lands, that benefits everyone in the ecosystem, not just Hydrogen. Cool. The final tweet in your thread, whenever you announced all this work and what you're doing here and whatnot, it mentions you peeking at your 2022 roadmap and saying, in quotes, much excite. So I think the first and major milestone is getting
Starting point is 01:06:46 this to production quality and getting real merchants shipping stores, right? That's the obvious next step. That's true for hydrogen. That's true for oxygen. I think there's a lot of potential for us to innovate on both. If we take them in order on oxygen side, yes, it's a worker runtime that accepts JavaScript code, but we're not just a generalized worker runtime. We're powering commerce. So what kind of specialized APIs and services that we can provide alongside that runtime,
Starting point is 01:07:18 that's supercharged commerce. Like maybe it's something related to A-B testing. Maybe it is a better set of caching primitives. Maybe it's something related to A-B testing. Maybe it is a better set of caching primitives. Maybe it's CDN. Like there's a lot of opportunity here. I like the maybes. Right, right. I like the maybes.
Starting point is 01:07:32 Maybe it's this, maybe it's that. Yeah, so if you just put on your thinking hat and say like, if I was building a hosting platform specialized for commerce, what are all the fun toys and capabilities that I could add in there that really make it more fun, more easy and more scalable to build high performance storefronts? That's a different take than I need to build a general purpose runtime that allows you to run
Starting point is 01:07:57 anything under the sun, right? Like, could you run a blog on the same infrastructure? Sure. My guess is you'll find better tools for that though yeah because we're going to specialize in commerce in the same way for hydrogen i think there's still a lot of unanswered questions on the actual technology choices as we just described really investing into the components following up on that vision of making them reusable, not just in Hydrogen, but if you want to use them in other React frameworks, let's make that work. Also going one level down and saying which of these can we hoist down into the Web Component layer, right? And just kind of bind into the React.
Starting point is 01:08:37 So if you want to use another framework entirely, you shouldn't have to reinvent the product carousel. That should just be a thing that you can just import and then customize to your needs. So expanding the options, I think, is another avenue with a lot of leverage for us. Very cool. Ilya, it's been great catching up. I'm glad to have you back on this show. It's been too many years. Hopefully we get you back with some of these realizations,
Starting point is 01:09:05 some of the maybes of this roadmap solidified that can be talked through. Anything else left unsaid? Anything else we didn't ask you about that you want to share before we go? Try hydrogen.new. Type that into your browser. If you want to read the docs, hydrogen.shop.quai.dev.
Starting point is 01:09:22 And please give us feedback. Cool. All right, Elio. It was great having you, man. feedback. Cool. All right, Leo. It was great having you, man. Thank you so much. Thanks, guys. That's it for this episode. Thanks for tuning in.
Starting point is 01:09:34 What do you think about the proverbial floodgates being open for Shopify developers? Is this something you're considering? Are you excited about their moves to support React, React Server Components, and this hosted V8 JavaScript Worker Runtime?
Starting point is 01:09:47 It's going to leverage all their platform. Is this exciting to you? Let us know in the comments. If you haven't yet, check out Changelog++. Support us directly and make the ads disappear on all our shows. Check it out at changelog.com. Up next is Jessica Lord on GitHub sponsors and the origins of Electron.
Starting point is 01:10:09 Also on deck is DevDiscuss from Dev. Right here on the changelog, Jared and I guested their launch episode for season seven, so we're bringing that here for you. Thanks again to our partners, Linode, Fastly, and LaunchDarkly. Also thanks to Breakmaster Cylinder for making all of our awesome beats. And, of course, thank you to you for listening.
Starting point is 01:10:29 If you enjoyed this show, do us a favor. Share it on Twitter, Reddit, Hacker News, anywhere that works for you. Word of mouth is by far the best way to help us grow this show. And, of course, the Galaxy brand move is to subscribe to our master feed. That will get you all of our podcasts in one single feed. Check it out at changelog.com slash master. All right, that's it. This show's done.
Starting point is 01:10:52 Thanks for tuning in. We will see you next time. Go, go, go, go, go, go. Thank you. NĂ¥ er det en av de fleste som har kastet seg i en av de fleste av de fleste. Outro Music

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.