In episode 43 of JAMstack Radio, Brian speaks with Jason Lengstorf of Gatsby. They discuss the new spin Gatsby’s putting on theme templates, and the inherent balancing act of catering to the open source community while operating a profitable business.
About the Guests
Jason Lengstorf is the Head of Developer Relations at Gatsby, an open source framework for turning content into feature-rich, visually engaging apps and websites. He is a writer and consultant, and was previously a senior software developer at IBM.
Brian Douglas: Welcome to another installment of JAMstack Radio. On the line we've got Jason Lengstorf. You're here, and you're from Gatsby. Do you want to introduce yourself?
Jason Lengstorf: Yeah. My name's Jason. I am part of the DevRel team at Gatsby, I've been doing that for a while now.
Prior to that I worked as a front end architect at IBM, and I've been all over the industry. I've worked as an engineer and designer, I've worked in admin sales management.
Now I'm out doing the community-building thing.
Brian: Excellent. We've had an entire episode about Gatsby, we had Kyle on. It might've been pre-1.0, or maybe just after 1.0 is when he was on.
I wanted you to come on to talk about working in open, because Gatsby is an open source project, as many people might already know or maybe not know.
We're going to talk about how that structure works and what your role plays into it, and how the team collaborates with all these other open source contributors.
Jason: Yeah, definitely.
Brian: Could we start off with what's new this year?
Jason: Yeah. We're at 2.7-something now, and we've added a ton of new features. There's a really good overview of the difference between version 1 and version 2 written up on the blog, so I won't go too deep into that.
Instead we can just dive into some of the more exciting stuff in version 2.
Specifically, we've been working on a lot of improvements to the way that GraphQL works under the hood, which gives theme developers or people who are doing lower-level stuff a whole lot of control over the Gatsby experience.
You can do things like set a specific type for your content, so that when people go to use that content even if it's an empty result, it doesn't throw errors.
Or if you want to define a generic way of accessing content, so instead of using MDX or WordPress or whatever, you could just query "All blog post" and get that data.
We've got the underlying technology there to do that now, so it's really powerful. It's really exciting.
It's mostly exciting if you're building ambitious Gatsby stuff, like on the day to day most people won't ever need or want to deal with this.
Then another thing that we've got going that's really interesting is this concept of themes.
Themes are an old concept, but Gatsby is putting a remix on them and I would say making them a little more powerful than what the standard take on themes might be.
Brian: How so? I'm familiar with WordPress Themes, etc. Picking stuff off the shelf. How is this a little more powerful? What's the selling point?
Jason: I mean the most specific selling point is that a Gatsby theme is actually just an encapsulated Gatsby site.
What that means in practice is that the person who is building a theme can run that theme standalone. You can package up website functionality, you can package up styling-- Which is the standard thing.
But you can also package up data access, you can package up other plugins, you can package up business logic if you want to.
Then the extendibility model of this is done in such a way that you're able to actually compose themes. With WordPress, you have a theme composability model where you've got a "Parent theme" and this concept of "Child themes."
If you look at that as vertical composition, "I'm going to take a theme and I'm going to extend it," Gatsby also introduces the idea of horizontal composition. Where I could install a blog theme and an e-commerce theme, and any number of additional themes to add more functionality to the site.
Then on top of those, I can vertically compose in my styling rules to make sure that the colors and typography and all those other pieces work the way that we expect them to. So it's a really powerful model, and it's something that we're extremely excited about.
We're hoping to see a lot more of what the community does when they're able to pick that up and run with it.
Brian: Excellent. That's a recent addition in Themes 2.0, is that correct?
Jason: Yeah. Themes came out probably-- They've been experimental for a few months now. We are very close to hitting stable. Everything in the API itself is stable, but the docs aren't done yet which is why we haven't announced it as a stable thing.
Brian: OK. That's pretty fair for the community, especially since you're working out in the open, which I want to talk a little bit about.
Speaking of open source communities, I know now that Gatsby-- Since the last time Gatsby was on Gatsby is now a legit company, has goals, and VC-funded too as well.
I'm curious, how do you operate as an open source company with a community that is now also building themes, and etc?
Jason: The way that we look at it is that Gatsby the company is a parallel entity with the open source project, and our goal is to build the things that are hard or expensive to do with an open source project.
Typically stuff is going to require infrastructure and management, and the things that would be really difficult to do in any open source way.
For example, the first thing that we're building is a product called Preview, which is a way for people who aren't developers to have a cloud hosted instance of their Gatsby site where when they make content changes they can see draft previews of that on the site at a secret, sharable URL with password protection and collaboration rules in place.
So that they're able to share around drafts before they publish things, which for developers that's a pretty common thing. You can get a staging environment or a branch preview in Netlify, or whatever it is you want to do.
But for CMSes, headless CMSes often don't have that functionality out of the box, so you would have to build that in-house or set up your own infrastructure to make that work.
That just gets cumbersome and expensive, so Gatsby Preview is intended to smooth that process, make it easier, and definitely be cheaper than hiring somebody to manage your own internal preview instance.
We're doing the same thing with our build system, we want people to be able to do massive Gatsby builds that run incrementally, and there's infrastructure required for that.
We need to be able to spin up multiple cores and run parallel processes, and there's a lot of computational intensity there.
Getting those up and managed would be expensive to do in-house, so we're going to offer a hosted solution for that, that people can pay for.
But what that means for the open source project is that all of those things are theoretically possible with the open source project, you would just have to stand up all that infrastructure and manage it yourself.
Our hope is that we can do things that would be a pain to do on your own and to manage on your own team, in a way that makes it less expensive than it would be to do it in-house and in a way that is officially supported so that you don't have to dedicate any time to it.
Brian: OK. I appreciate you lining up and explaining that too, the distinction. That makes a lot of sense.
If, let's say, a large enterprise or even just a company that wants to take their project seriously-- Not that if you use the open source version of Gatsby that you're not taking yourself seriously, but you want to have some confidence in the tools.
Infrastructure is going to be something that you are going to get a lot of people who are super excited about building that in the open source, and it also requires a lot of domain-specific knowledge.
Coming from a team like Netlify, I totally understand that structure, that two-tier structure.
I'm curious, how do you maintain the open source project in the open while also listening and keeping an ear to the ground for what is needed for the paid users?
Jason: It turns out there's a lot of really good-- What's the buzzword? Synergy? They feed each other, because we have full time core maintainers whose job it is specifically to watch the issues, address bugs as they come in, make sure that people feel welcome and heard in the community.
Then when we see the same issues surfacing over and over again, every time when we get an issue around this problem, people are asking for X Y and Z, which we can't solve with open source tech.
It's like, "You need to set up a server for that," or "You need to create some other solution to solve that problem."
Then that gets filtered up to our product teams and we start looking at, "Is there a way that we could solve that, that would make sense as a product? Is there a way that we can generically solve this problem?"
In the case of Preview, yeah, there was. In the case of some of the other stuff that we're working on that we're hoping to release soon, these are things that we repeatedly saw coming through open source channels where people were saying, "I don't know how to do this," or "We need to do this, and Gatsby doesn't support it."
So we want to find ways to add that support for, like I said, we want it to be cheaper than it would be to do it in-house.
Brian: That sounds pretty legitimate too, as well. I wanted to touch base on this really cool thing I've seen Gatsby do for a while, which is the open source contributions that end up getting a special consolation for their contribution.
Do you want to talk about that, and where that came from?
Jason: Yeah. We look at the community as being probably the most important part of Gatsby as a company. Nobody would care at all about Gatsby if it wasn't for the fact that the developer community is rallying around it, so we want to take it really seriously.
We consider our community to almost be the most important part of our company.
By looking at the way that the community operates and what it means to be involved in open source, we put it in our core values that taking care of the community is like thing number one.
We do that by baking it into our company values. One of our core values that we repeat over and over again is, "You belong here."
We do that in the spirit of like, no matter what your level of experience is with open source, if you're a first time contributor or an OG contributor, we want you in the Gatsby community.
We want you here whether you're doing-- Like, if you're going to label issues for us that's super helpful. Fix typos, super helpful. Add features? Yes, we'd love that.
We want people involved and we want people to do that, and to try to recognize and appreciate people who take the time to do that, we wanted something that felt like being part of the team, being an appreciated member of the community.
We do that in two ways. The first one is anybody who contributes a pull request to Gatsby, as soon as it gets merged, we give you contributor access to the Gatsby org.
That means that you have the ability to label issues, you can merge certain PRs. We have code owners in place for really critical bits of the code so that we don't-- Obviously we have to make sure that somebody can't come in and do damage to the repo.
It's git, you always have the ability to roll back and stuff. But basically you get that merge, you become a contributor and you have a lot of access, you get added to a private group on GitHub where you can talk to the other maintainers.
We do special announcements for limited edition stuff, or things that we're only sharing with a small group for testing in that private channel.
So maintainers get access to insider information, and the other side of that is we'll also send you a discount code so that you can claim free swag from our store.
And so on y our first contribution, the $10 dollar items. So a T-shirt, a hat, socks. We've got a dress and a silk scrunchie now, a lot of cool swag that we've gotten made for Gatsby. We want you as a contributor to be able to get something to show, "Hey, I'm part of the Gatsby community."
Then if you contribute a lot, at the fifth contribution we'll send you another discount code that gives you access to the higher dollar amount stuff. Hoodies and vacuum sealed travel mugs, and some other stuff along those lines.
It's a way of saying "We see you. We noticed, and we really deeply appreciate that you're taking your time to contribute to the open source community."
Brian: No, that's super valid. Not to put a limitation on what you guys are doing, but it's definitely like the Subway card thing back in the day.
Where you'd come back every week or whatever it was to get your card punched, and it sounds like it's that sort of thing. That loyalty branding building up with the Gatsby community.
Because once you've called in the repo and once you've done your first contribution, then maybe you're working towards your fifth or your tenth, or whatever it is, to get that next tier.
As you're working there you're becoming another integral part of a community, you have that domain-specific knowledge or you own this-- You don't own it, but you basically know this portion of the code base so that way when you're in the Slack group--
The strategy is, it seems weird. I don't know if Kyle or somebody else on the team used to work at Subway, but I think the approach to what you are doing is pretty unique and I think it's pretty awesome that you put the value and you put money into that.
Jason: Yeah. We look at it as-- I was the architect of this setup, and when I was putting it together the goal was to say, "We appreciate everyone," and then make sure that people who are really putting the time in also get appreciated for putting that time in.
Because I know that-- This is where it starts to get weird, because you don't necessarily want to say "We put a dollar amount on your contributions," because that makes it weird and mercenary, and that's not right.
But at the same time, somebody who spends a ton of time contributing to open source, we want to call that out in a specific way. The only metric that we have at the moment is to say, "You've done five pull requests, you're clearly invested in this community."
It's not going to be like one, and then five, and then 10, and things like that. What we're actually working toward is more of a--
We want to create visibility in the community, so it would be closer to scout badges. Like when kids go to the scouts and they can get their knot tying badge and their canoeing badge, and that kind of stuff.
We want to create something similar in the Gatsby community where we'll recognize people who are Docs experts, and someone who has a specific understanding of GraphQL, or who is an educator, and find ways to let them share what they're doing in those particular avenues and show their expertise in some way.
Then recognize them with-- Maybe we have a profile that they can share that shows what they've contributed to the community, access to limited edition stuff.
One of the things that I would love to do, and I don't know if we're going to do exactly this, but a hat or an enamel pin or a Letterman jacket that you can only get by doing certain things in the community.
If you run a workshop for Gatsby, I would love to send you something that the only way you can get it is that, so it's very clearly "You belong inside of this very elite group of people who go out and teach the community, and are sharing what you've learned."
I love that idea, because it means a lot to me. I have this mug that I got that it's a really silly mug, but it's got a picture of my face on it. I got this from a conference and they got one done for every speaker.
I'm sure that the material cost of that mug was very low, but the value of it to me knowing that somebody took the time to notice and care that I showed up, and create something that was like, I had to do the work to get the thing, it has a lot of emotional and sentimental value for me.
I love that idea of building communities, not necessarily based on the material value, but on the community value of doing it. It's a manner of prestige and belonging and exclusivity, like "I did the work and it's an achievement." It's not like you're punching a card, you're ratcheting up in your own skill and ability in public contributions.
Brian: Yeah. I'm curious as to your onboarding, it sounds like you're onboarding quite a few different contributors on a regular basis, or on a consistent basis. What's the onboarding path for new contributors? Is there a welcome email, or onboarding experience? Or is it that they just show up?
Jason: We have a limited onboarding experience. We just crossed 2,000 contributors, which we're super excited about.
Jason: The way that we've been doing this is we have a page on a Gatsby site for contributors, which is an overview of how to contribute to the Gatsby project.
That goes into what different types of contributions are, how to set up the repo, how to open pull requests, and our writing style guide if you're touching our docs or writing a blog post. All sorts of things that you would need to know if you were doing certain types of contributions.
We have an email that you'll get after you join that will send you a link to open issues and different ways to get involved.
We have open source pair programming hours where you can sign up for an hour with somebody on the Gatsby team and we'll walk through getting you up and running, or working on your first contribution, or building a Gatsby project.
Brian: That's really nice.
Jason: We draw the line at consulting, but you can get an hour of our time to get up and running in open source.
It's not a really elaborate onboarding, but we tried to make a clear portal that "If you're interested in contributing, this is where you should go," and that'll give you threads to tug at in a lot of different directions.
Brian: That's a big deal, because I just came off a weekend where we did a hackathon. Essentially it wasn't a hackathon, it was a hack day on open source contributions. I think the biggest thing we realized--
Basically the historically black colleges in Atlanta, they have a specific fraternity that goes across all of them. We met at one of their spaces and we had all the students come in and then we taught about how to contribute to open source.
Then we had some maintainers actually talk about the projects there, and then we basically kicked it off with "Here are some issues. Try these first, but you're not limited to these."
We ended up having a good amount of PRs open up, but I think the biggest hurdle was contexts. Though we could provide for at least four projects, we could provide this onsite help and context from those projects. It was challenging for any project outside of those four projects to provide that context.
I think what you do, even if it's limited onboarding, the fact that you talk to somebody and you coach them on the "Where's what, and what this is,"outside of just reading a contributing MD doc.
Because I think that's great, but sometimes the context doesn't always transfer over, especially if it's old and outdated. But I think if more projects did this, I think open source would be way more accessible to a lot of other demographics and engineers.
I think we wouldn't have this ability to own open source specifically, only certain people can do open source really well and other people can never have the time or the bandwidth to even attempt. So, I appreciate you sharing your insight to that.
Jason: To add on to what you were just saying there, one of the things that's really hard about getting started is always context.
Even with all the docs that you would read for Gatsby in the onboarding, understanding a big piece of code that's been iterated on for months or years, you're never going to be able to just step in and go.
I love it when people label things with a good first issue, because that implies that all the relevant context is available and the issue is small enough that you don't necessarily need a lot of context or history.
But a lot of times too, what I find is the best way to get involved in open source is as you're working on a thing, every time you get stuck, just submit a pull request to the docs that adds the extra context that would have helped you not get stuck. That's where you build the context.
Not everybody's going to have time to really go deep, but if I'm doing something for work and I see a thing in the docs that would help me, that 15 minutes that I'll spend opening that pull request may be the only 15 minutes I ever spend on that project, but it's helpful and it means a lot.
Brian: Excellent. Jason, I appreciate you providing some insight to the open source community, in how it's managed and how you interact with it. Anything else you maybe want to cover, that maybe we didn't touch base on?
Jason: I mentioned that we are trying to be more welcoming to our new contributors.
So if you are thinking about open source, and you want to try to find the time or how to get started, I would really urge you to go and take advantage of that open source pairing or to reach out to us on Twitter.
Because we really do want to get people involved. We're trying to improve representation in open source, we're trying to take it away from being this thing that only a very specific demographic has the time or ability to really get involved in.
We want everyone to see themselves in open source, so please reach out to us. Let us be the springboard to get you going.
Brian: Excellent. With that being said, I'm going to transition us to picks. These are jam picks, stuff that gets us going. Could be music, food, technology, all of the above. Nothing's off limits.
If you don't mind Jason, I thought of my picks as we were talking earlier. Because I remember we had chatted before booking this call that I was going to Berlin for GitHub Satellite, which was a great event.
You should definitely check out the keynote and all that stuff, and check all those boxes.
But the best thing I think about Berlin was the amount of Turkish food that I had, and the kebabs. They had this thing called a doner kebab, which it's a European thing, comes from the Turkish family of foods.
I'm very familiar and fond of Greek food, because the neighborhood I grew up in had a strong Greek population. I saw a lot of familiarities with that, but going to a kebab shop or just a restaurant and sitting down was amazing.
My second pick is actually, it's going to be real weird. It's going to be German raves. Mainly because we had an event-- Part of the GitHub Satellite, there was an event that we had all the maintainers come in and we had a little happy hour, and we chatted with them.
It was the day before the Maintainerati event. We did this, and the bouncer for the venue that we were at had invited me and my co-worker to a rave that happened the next night/morning.
In Berlin-- I know you spent some time in in Europe and in Berlin, but the raves start at 1:00 AM and they go till 10:00 AM. We ended up having a flight that was 6:00 AM, so because it was so early the fear of sleeping in and missing the flight was pretty high.
We were like "OK, we'll just go to this rave thing, see what it's like, and just go to the airport after." That's exactly what we did, so we ended up going to this rave, which I've--
No judgment, but it was definitely way different than anything I've ever experienced. It was like EDM music in a room where everybody's two stepping very awkwardly to music.
I think the beginning of the night was not as good as later in night, when it got good, and that was literally the time when we had to leave. We had to leave at 4:00 AM to catch the flight.
But it was quite an experience, I do recommend anybody who is in Europe, check out the music scene.
If you're American, at least. It's going to be a little bit different than anything you've probably experienced.
Also on top of that, to tie this in, right after-- Before we hit the airport we actually stopped at a Turkish restaurant. We sat down, we were the last-- For whatever reason they were still taking customers at 4:00 AM.
We sat down, had basically breakfast, but it was kebabs in this amazing like-- What I could basically-- They called it "Red sauce," I think? I'm not sure how to translate it, but it was basically a salsa.
A nice little spicy salsa and it was amazing on top of the lamb and the chicken kebabs. So those are my picks, it was pretty intense and it was pretty deep, but I highly recommend that you enjoy yourself in Berlin if you ever get out there.
Jason: I love that. I too am a big fan of the doner kebab. That's one of my favorite, "We're walking between places and we need to eat dinner? Great. Let's stop and get a kebab."
My picks, let me start by saying probably my one pick right now that's been stuck in my head for weeks is this song called Deadass by Kimba.
Every time it comes on my shuffle, I'm always like, "What is this? It's that song, and it's really good." I would definitely recommend checking that out.
Then the other thing that I am really excited about is hosting dinner parties. Let me give you some context.
I've been living in lots of different places for a long time, and I moved to Austin in 2017, and then I moved to Portland in the beginning of 2018. I'm barely over a year now, almost a year and a half in Portland.
We made a decision to put down roots here. We wanted to actually get involved and be in the community, and have friends, and not just be in the city and then live everywhere else.
So one of the ways that we've started doing that is we've made some friends, like Joel Hooks and his wife Christina from Egghead are amazing chefs, like incredible cooks.
They put on these really good parties, and then our friends Matt and Leslie are also incredible cooks. Leslie is one of the most gifted bakers I've ever met.
My partner Marissa and I, we love to cook so we invited everybody over to our house and we were like, "We'll do the main, you do a side, you do a dessert."
Everybody descended on the house and it was like one of the best experiences I've ever had, because everybody knows how to cook, everybody loves food, we got weird.
We tried stuff that doesn't make sense. We just experimented on each other with like, "I've been wanting to try this recipe. I don't know if it's going to work, let me feed it to you because you're adventurous and let's see how this goes."
So we've been rotating between people's houses and it's just such a fun way to hang out with friends that doesn't feel like, "Let's go to a bar and get a beer," or "Let's meet for coffee."
It's like, "No. Let's like sit down and do something together that is out of our comfort zone. Like, I'm not a professional cook, but also not super high stakes, like whatever. If we screw up dinner, we just order pizza."
So that's been a really fun thing for me, and I feel like it's really helped me. Making friends as an adult is hard. I feel like when I was in Austin I made some really good friends.
But prior to that, everywhere that I lived you make a friend that you're going to see maybe twice in your entire life.
Being in a place where you can really connect with people and have a story that grows together where you've got shared history and context, and you would call them for help with things, or they become part of your life as opposed to just an acquaintance.
That's been really meaningful to me, so I would highly recommend if you are into cooking, try to find other people who are into cooking and try this out.
Because it's been really good for getting me involved in my local community, getting me out of my comfort zone, and helping me make some friends.
Brian: Sounds good. I'm very intrigued, and I love cooking, and I might copy your party planning.
Jason: Please do.
Brian: Excellent. With that being said, Jason, thanks for chatting about Gatsby, the open source community, dinner parties and listening to my story about German raves. Listeners, keep spreading the jam.