00:00:00.299
Hello, world!
00:00:11.160
Hi everyone. Thanks for coming to office hours! I'll do a quick run-through of how this is going to work.
00:00:17.220
We have a couple of amazing Shopify engineers here today, and a bunch in the audience as well. You'll get to know them better in a second.
00:00:29.280
What we're going to do is have Rose and Ufuk come up here to introduce themselves. They'll tell you a bit about what they do at Shopify, and then we'll open it up for questions. I’ll come around with a microphone, so just raise your hand if you have a question after they're done with their intro. We also have some other Shopify folks hiding in the audience who might be able to contribute to the answers.
00:00:46.140
So yeah, let's get started! Come on up, friends.
00:00:53.280
Hi everybody! I'm Rose Wigley, and I’m a senior staff software engineer at Shopify. I’m guessing most of the people in the audience think of Shopify from the point of view of what our amazing contributors to Ruby do.
00:01:01.899
I am not one of those people. Most of the engineers at Shopify are not actually working on Ruby or Ruby on Rails. We are very excited to have teams dedicated to that, but a lot of us are working on the Shopify product. So, we come to Ruby and Rails as users who have to use Ruby and Rails every day for an amazing programming experience in our jobs.
00:01:19.680
For me, I work in what we call merchant services, specifically in the money division. If you've ever gone to a Shopify store and checked out using any form of payment, most likely that transaction has gone through code from the Money Team. My specific area is Shop Pay Installments where we provide the glue layer so that for a merchant or a buyer checking out with Shop Pay, it looks like a completely smooth checkout experience.
00:01:41.880
The goal is to make it as easy and transparent as possible for both the merchant and the buyer. As part of this, I have to use Ruby on Rails basically every day, or at least my team does. As a senior staff software engineer, if you look at my GitHub contribution bar, you will notice it's a lot less green than it used to be. But I'm still very comfortable working with Ruby and Rails and really enjoy coding in it. So, I’m here to answer any questions you have from the perspective of someone using the language.
00:02:35.040
Hello, my name is Ufuk Kayserilioglu, and I'm an engineering manager on the Ruby and Rails infrastructure team. I lead the Ruby infrastructure part of the team. We work on the Rails framework and the Ruby language. Our team specifically works on the Ruby language to improve performance and to make it function better for Shopify and the entire community overall.
00:03:48.940
A few of the projects we are currently undertaking include making improvements inside the C Ruby code base—C Ruby being the Ruby interpreter that you use at work. There are alternative implementations of Ruby as well, such as Truffle Ruby, which our team works on at Shopify. Truffle Ruby is our long-term bet as we want to see where it can take us with its peak performance metrics. We are trying to get Truffle Ruby to run in production. Additionally, we're taking some ideas from Truffle Ruby because it's a great research platform. One such idea is object shapes, which is a well-known technique implemented in various languages, including Truffle Ruby.
00:05:00.790
We took that idea and incorporated it into the C Ruby code base. Object shapes have actually been merged and will be released with Ruby 3.2. Another project we work on is YJIT, which stands for 'Yet another just-in-time compiler' for the Ruby language. It was first released with Ruby 3.1 and has now been ported to Rust this year, bringing a lot of memory and performance improvements. Like the object shapes feature, it will also be released with Ruby 3.2. We focus on developer tooling as well because our team's customers are people like Rose who work with the Ruby language inside Shopify.
00:06:28.300
We want to provide solutions to those teams to help them work more effectively, which is why we look at developer experience and tooling. We adopt gradual typing using Sorbet and work on tools like Ruby LSP to enhance development experiences. This is a high-level overview of what my team does, and if you have any questions, I can pass it off to them for better answers, or I can try to answer them as best as I can.
00:07:53.340
Okay, so with that, I think we'll just go to questions. If you have a question, just raise your hand, and I will do my best to get to everybody in somewhat the order they raise their hand. If we run out of questions, we can also float through the audience and chat.
00:08:21.660
I'm going to grab the mic and mask up. Raise your hand if you have a question, and I'll come find you.
00:08:28.700
Hello! I'm wondering, as an engineering manager, how could you make the business case for contributing to Ruby and Truffle Ruby for performance? Can you provide insights into how that happened and how the product team aligned with it?
00:09:16.320
Thank you, that's an excellent question. The framing is a bit different. What we're doing isn't necessarily working on open source or a specific technology; our team is part of the developer acceleration team. The goal is to accelerate our internal developers' capabilities at the right layer of the stack. If you solve problems at the correct layer, you address them for a broader number of people. Sometimes, that means you need to solve issues within the Ruby language or framework.
00:10:04.260
The language and framework are the foundations of our product; if they crumble, our product will crumble as well. Thankfully, we have a CEO with a technical background who appreciates this point and understands the importance of contributing back to the tools we use and the impact it can have on Shopify.
00:11:08.040
In this sense, that's the main work we do—not research or open-source work, but solving problems at the right level of abstraction, much like how product teams solve problems at their own level.
00:12:32.160
Additionally, convincing leadership to support infrastructure projects relates to the broader context of product-facing work versus infrastructure work. We have to articulate those infrastructure needs in product language, illustrating how performance enhancements can lead to increased conversion rates. This alignment with business metrics is crucial in gaining buy-in for such projects.
00:14:14.760
I'm curious if you keep your applications updated with the current versions of Ruby. Yes, we have an aggressive release cycle. I took a look at how fast it took our core monolith to get onto the latest version of Ruby historically, which has improved significantly over time. For example, moving to Ruby 3.1 took us just 18 days from release rather than many months, as it used to take.
00:15:02.100
This improvement reflects a concerted effort on our Ruby infrastructure team to ensure that updates are stable and reliable, shaving down the transition time significantly. Moreover, other teams within Shopify are being encouraged to adopt similar practices, spreading the benefits across the codebases.
00:16:51.840
Even though we’re at a Ruby conference, I want to mention that our team has a slightly different emphasis since we also manage several monoliths. For example, we have automated PRs reminding teams to keep their Rails codebases updated, with polite and then increasingly assertive reminders to upgrade.
00:17:39.060
This structured approach helps to ensure that we stay on top of upgrades, preventing the kind of drag that leads to difficulties later down the line.
00:18:47.680
Additionally, staying updated helps all developers take advantage of new features and ensures our work to enhance performance does not go to waste. This also contributes back to the Ruby community by making Ruby more stable for others.
00:19:56.520
Regarding Truffle Ruby, while we're not utilizing it in production yet, we're exploring several options to integrate it. Since it is a new implementation, we are assessing how to regain compatibility while managing the complexities of the Ruby codebase and its unique characteristics.
00:20:32.500
Oracle manages the core compiler technology while we focus on ensuring our development aligns with practical business needs. There are existing implementations of JavaScript that are further along in production settings compared to Ruby, which informs our exploration, but Ruby is progressing steadily.
00:21:25.920
Efforts are also in place to make sure we address the distinct goals of organizations utilizing Ruby, which contrasts with traditional expectations set by Oracle.
00:22:32.340
As far as professional development goes, Shopify heavily emphasizes a culture of continuous education. From my own experience, my manager encouraged me to set aside time for personal education, not just for my current role but for my overall career.
00:23:05.240
During onboarding, new employees receive training on Ruby on Rails, and we host developer summits regularly that include various classes. We also provide resources for employees to pursue their own educational paths, empowering them to grow in their careers.
00:24:19.120
Additionally, we have special interest groups within Shopify, such as one specifically for Ruby, that hold regular meetings and presentations, fostering deeper understanding and collaboration.
00:25:15.920
Having this framework of support makes navigating Ruby upgrades much easier and ensures developers can ask any questions they have about the Ruby ecosystem, thus enhancing their efficiency.
00:26:32.250
In conclusion, Shopify creates an environment where developers feel supported and connected, ensuring continuous growth and improvement. Thank you all so much for attending our office hours!
00:27:48.000
If you have any further questions, feel free to approach anyone wearing a Shopify hoodie. We're here to help, and we hope you enjoy the rest of the conference!