The ReadME Project amplifies the voices of the open source community: the maintainers, developers, and teams whose contributions move the world forward every day.
Fred Schott // @FredKSchott
Fred Schott grew up in Bethesda, Maryland, and earned his B.S. in Computer Science from Tufts University in Boston. He helped Box make the leap to a modular web application architecture, then joined Google to work on Web Components. In 2021, Fred created his own project, Astro, a static JavaScript site builder that provides developers with a modern experience and lightning-fast performance. He now lives in Oakland, often writes about his journey through the tech world, and is currently trying to adopt a dog.
OPENING QUOTE: I think I just didn't have a plan almost intentionally. Similar to, "Oh, computer science seems good. I'll try that until I have a reason not to." I think this entire story that brought me into web development and open source was just following that spark and not worrying too much about where it ended up.
Brian: That’s Fred Schott, founder of Astro, a JavaScript-based static site generator that offers a brand new way of building websites, and this is The ReadME Podcast, a GitHub podcast that takes a peek behind the curtain at some of the most impactful open source projects and the developers who make them happen. I am bdougie aka Brian Douglas…
Neha: And I’m nerdneha aka Neha Batra.
Brian: Every episode, Neha and I invite a maintainer or open source developer into our studio to explore the impact their work is making on the world around them.
Neha: In this episode, we speak with Fred, who is based in Oakland and has accomplished a remarkable amount as a programmer since he started his career under a decade ago. After working with large companies like Box and Google, Fred decided to take the plunge and start his own company, Astro, based on the success he was finding with his open source projects. His love for programming came early and he worked hard during his 20s to get to where he is now. In this conversation, we spoke about his introduction to open source, his path to Astro and the role luck plays in success.
But first, as always, what was Fred’s first experience with a computer?
Fred: Oh man. That's a great question. I used to make flash cartoons with a friend. So I had a friend in middle school who was a really talented artist and I just, "Okay, he's going to do that. I guess I'll do the programming of them." So I started playing around with some really awful code, but you know, making little games and characters move around. That was likely my first.
Brian: Did you learn ActionScript then?
Fred: Yeah. ActionScript 2.0, representing that.
Brian: Excellent.
Fred: Yeah, I didn't know what I was doing. The code was all over the place—copy, pasted. But it worked. It worked as much as a flash game works.
Brian: Neha, I don't even know, do you have background in flash or Action Script from back in the day?
Neha: No. I've only created one or two things that are interactive and that was on Visual Studio. I was more on the nerd side, so I was looking into nanotechnology and how to simulate what it could look like for nanobots to be talking to each other. And that was in Visual Studio.
Brian: Oh my God. That is so impressive. You’re making me look bad!
Neha: It sounds way more impressive than it was. It's similar to you in a way, I guess I'm trying to relate, but you find a thing that you want to do and you're just like, "All right, how do I get there?" Right? So, for me, it was, "All right. I guess I'm figuring it out." And I was printing out this code and highlighting four loops and if loops and trying to intuit what that meant and how I can modify the existing stuff. But, for you, it sounded like you were interested in a game and making a thing and then you just had to figure out how to get there, right?
Fred: Yeah. I think I liked playing them and I had a little curiosity of how to build them. I'm in middle school now, so it's like new grounds and like eBaum’s World. I think I was totally in that just teenage boy on the internet kind of phase. But definitely was like, "Oh, these games are cool. How do they build these?" And I think just went from there.
Neha: Do you remember the first game that you made?
Fred: No. I don't even know if you could call them games. Like, "Oh look, I made something go up and then down again, and you click it and it does it." It was a long process because it wasn't any real focused learning. It was just kind of like, "Oh, I wonder if I could do that and try something new." So lots of experiments. I think the games kind of came later.
Neha: I feel like that totally counts.
Fred: Yeah.
Brian: And time wise, because I was into playing Flash games and I had friends that wrote some ActionScript. We might be pretty close in age. I don't know. Rolling the dice, but probably early 2000's, probably around that time when Flash was really big before Steve Jobs told us we can't use Flash anymore.
Fred: Before Steve Jobs killed my childhood. Yeah. I remember.
Neha: Gaming is a common entry way into programming for many young people. It’s often the first time someone realizes they can change something in the real world, through code. That can be a real hook and, in some ways, it was for Fred. But he still wasn’t totally sure it’s what he wanted to pursue professionally.
Fred: I went to Tufts University and didn't know what I wanted to do, knew I liked computers, kind of fell into it. I kept looking for a reason not to do it, and I just kept enjoying it and felt like I was learning and just took it from there. So I definitely always played around with side stuff while I was there and worked on little projects—a little browser extension that tells you when your friends are in the library and just random things. And then stopped doing my schoolwork as much and got a great internship and just realized, "Oh, what a weird industry where my grades don't matter. I guess these side projects that are coming up in every interview are actually the worthwhile thing."
So I don't know. My parents weren't very proud of my grades in the last year, but I was lucky enough to get a great job that brought me out to California. I don't know if that's a lesson for the kids out there to “don't do your homework.” I guess that's the worst thing I could be saying! Do your homework. But I don't know. I found a balance that really worked.
Neha: Did tech play a role in you growing up? Did your parents use it or did you have any siblings that were programming as well?
Fred: No, I really didn't. I was definitely lucky enough to have a computer in my home, which I think just helped with basic literacy of technology. So I loved The Sims when I was growing up and the idea of, there's some cheat in The Sims-
Neha: The one where you get that unlimited money? That one?
Fred: Yes! I was just talking to a friend about that. It's like you're actually opening up the developer console and typing in a secret word. Even that little thing is like, "What's a developer console?" Definitely I think a lot of stuff like that, I was very lucky to have in my childhood that just... If you do things that make you feel good and successful and productive, then there's definitely a lot of that to set me up for success.
Brian: Like knowing how to code—not even knowing how to code, knowing the awareness of code—it's like almost having a cheat code, like going through school and going through life. I have a twin brother and I don't know if I've mentioned this on the podcast, but at the time of MySpace, I remember we were in a band and I decided to leave the band because I didn't really want to play music anymore. But they leveraged MySpace to get a bunch of votes for some local radio show. They didn't have to write code for this, but because they were just so active in the MySpace era and HTML and CSS and they had a great page, they were able to game the system to open up for Bon Jovi.
Fred: Oh my God.
Neha: What?
Brian: Yeah. And what's funny is me and my brother, we didn't grow up listening to Bon Jovi. I didn't know who Bon Jovi was. I could hum the songs kind of, but not really. But it just completely changed my worldview when I went to go see Bon Jovi up in the front.
Fred: Oh my God. I think your brother is the first growth hacker, first recorded growth hacker of all time.
Brian: Yeah, yeah, yeah. And it's on record I guess at this point.
Fred: Yeah. Right.
Neha: Although Fred wasn’t actively thinking that he wanted to study computer science, I felt like there had to be something in between him playing some games and then, in college, thinking, "I'm going to create a browser extension."
Fred: Yeah. That's a great point. There was one other thing that's kind of set between the two, which is, most people might not even remember the Second Life. Did either of you play Second Life?
Brian: Yep.
Neha: Well, I'm familiar. Yeah.
Fred: There was a scripting language in there with that same idea, “how can I create fun things in this world?” Click a button and push a person's avatar up into the sky. I played around with that again, just like, no idea what I was doing, but ended up creating a few things. And then again, this is the weirdness of Second Life. This would probably be illegal today by child protection laws. But someone reached out, I was like, "Hey, I like what you're building. I'll sell this in my Second Life store."
And I was just like, "Oh, he probably thinks I'm a 30 year old guy. I'm just going to lean into this and sell this and he's going to pay me money to make things." And I say that now, it sounds so uncomfortable. Why is this kid making money online by selling things too... I don't know. Maybe he was a kid too. Who knows? But yeah, there was definitely just a lot of playing around I think. Maybe an interest in poking around at things that I was playing with. Playing flash games and trying to build one myself. And playing Second Life and trying to build something myself. There's a lot of that.
Neha: Yeah. It sounds like there's a lot of, "Well, I know that I can do things with this and so if I just play around enough, I might hit the gold mine of something exciting that I can make." Right?
Fred: Yeah. Yeah. Definitely. And really, I think I enjoy refactoring more than most. I don't know if most people would say that, maybe they would, but something about, "This code is messy. Can I clean it up?" I get a real kind of Zen, like putting a jigsaw puzzle together, just kind of, "Okay, now these things were a mess and now they're clean. This feels right." I've always found that at least in my career, a nice sense of satisfaction after just doing meaningless clean up.
Brian: I feel like there's a great segue to talk about that and what you are doing today, but I want to find out real quick about these Chrome extensions and how that got you your first job? And also, what that job was?
Fred: Yeah. So I was very lucky. I didn't know how to do an internship search at all. I started way too late and I was just very lucky that a friend at college, basically I was just riding his coattails. He got a really cool job out in California and had felt bad because he had spent that winter, had found some place in Boston to work out of a local healthcare company with a tech department of a couple of people. And he was feeling bad about having to, "How do I say no to this person? It's a small firm. They're not going to be able to find someone." And I was just like, "You know what, I need a job. You could just put in a good word on your way out and maybe it'll help loosen the blow."
And just through that, I just totally stumbled into my first job, which was not impressive, but it was enough to put on the resume. Then when I did do a more kind of… "Okay, it's junior year, this is the summer internship that matters. It gets you your job after college." I'd at least been told that. So I took that seriously and was lucky enough to have that on my resume. So I ended up at Box, which is the Dropbox competitor. I got a summer internship there and that's what brought me out to California. I met my wife that summer—very transformative year, that summer. And then got invited back.
Brian: Excellent. So you took a permanent role at Box after that first summer. How long did you spend at Box?
Fred: I was there for almost two years. And again, there's a theme of stumbling into these things that I guess is prevalent, but they really were like, "So the team we got for you is a front-end team." And I was like, "All right, let's do it." And I just ended up working on the web app. “By chance” has really kind of defined... I haven't left at least since then. Yeah. That was a great team. That was such a great time to join a company, or at least that size I really connected with. It's just big enough that there's people to learn from, they've done this great hiring and there's really smart people there. But also not so big that everything is super structured and you're going to be put in a box. I was very lucky that just by being there and being active I ended up just really working with this great team that then ended up being the team that brought Node.js to Box. So I ended up getting really connected with it. This is like Node.js 0.6. This is like 0.4—early days. This was bringing that into Node when there was this weird small little South Bay Area. Enterprises were starting to take Node very seriously.
So there was a lot of evangelism happening at eBay, I want to say, and PayPal through that. And maybe even Yahoo had the biggest web framework in Node at the time, which is funny to look back on. All of a sudden this technology was being taken very seriously by big companies. And I, just by right place, right time, was able to be a part of those conversations and lean into it.
Brian: Being in the right place at the right time seemed to be a trend for Fred. Luck certainly plays a role in success. But it’s also important to keep an eye out for the opportunities that could be transformative.
Fred: So talking about transformative, I think right when I joined, Box had hired Nicholas Zakas, who you might know as he basically created eslint and is still the lead maintainer that has had a long history at, I think, Yahoo. He’d hate that I don't know this. I think Yahoo. Which, at that time, one of the best renowned JavaScript teams. And so just by chance I was able to work under him for that first year or two while at Box. And I'm sure he would say I bugged him all the time, but I was just like, "Oh, this person, open source seems fun. They clearly have this really incredible approach to JavaScript that isn't about ‘what cool new features?’, but really seems very thoughtful about ‘how would this impact at scale, a large team?’" and was very lucky to work under him.
And so at that moment, Node.js was new, but still not taken seriously. I feel like JavaScript still has a bad rap in some circles as being this toy language. But at that moment, at that company, there was a ton of pushback of like, "Wait, you want to run this on the server? That makes no sense." There was a ton of pushback on that. So at the moment there was a back-end team at Box that really wanted front-end developers to learn Scala and thought that was going to be this magic solution. So all of a sudden there was this warring faction, the future of the front-end, thrown into a pretty heated philosophical battle for, what would front-end development become? And at the same time, front-end developers, even as an industry going from full front-end to all of a sudden React, I think was just being talked about seriously.
And the idea even of doing SSR, I think is still a couple years away. So it was really the early idea of a front-end developer starting to touch back-end server code. And again, that was early, before there was SSR, before there was Next.js, we got to play around with what that meant for a company the size of Box and build some of that early. It wasn't back-end code, but it was the server that the user would talk to that would help template and present the page. So what has now become SSR, we were the early days of what that would look like in Node for a company of Box's size.
Neha: As you were learning that, and as you were creeping closer and closer to the server, what was piquing your curiosity the most at that point?
Fred: I was just really hungry—whatever I'm doing here, I’m just going to do it full. Looking back, I would call it very cocky. I think my first meeting with my manager, I’m like, "All right, I'm looking for a promotion." He's like, "You are six months out of college, sit down, wait your turn." I was, I think, naively cocky. But I think I was just really hungry too, I don’t know. It was around that time that I really found Open Source.
And so I tell this story a lot about when people ask, "How did you get into Open Source? What does it mean to you?" Okay so, Fred is being told, "Wait your turn," by a manager, rightfully so. But at the same time through Nicholas who had been working on eslint, I started to get exposed to more of the open source community. Again, just a lucky coincidence, we were using the package request which is still a super well-used package even though it's been deprecated for years. At the time it was already the second or third most used package on npm. We were using it. I think we ran into a bug with it because it was still so young, and made a contribution back to it. It got accepted. Realized they didn't have a linter. I was one of those people who goes into an open source project and is like, "Hey, I've linted everything. I hope that's okay."
Brian: I know your type.
Fred: I know. I know. I was just so eager to help and it was the only way I know, and luckily Mikeal was like, "Oh cool. This is great. Thank you," instead of shutting me down, which I try to keep in mind now all the time. All of a sudden I just started contributing more and more and realizing that, "Oh my God, I'm shipping code to the third most popular package on npm." If X percent of Fortune 500s in the world are using npm, there's a good chance that X percent of them are using this package.
In my day job I'm being told, "It's not really for you yet," and then I go home open my laptop and I'm pushing code to major companies, and having a real say and ownership over that code, and getting pushed up to a contributor role. I was one of three people who could actually publish the package. Mikeal Rogers was just super encouraging and that was an awesome experience that really sparked that early, I think, the joy I still have for open source.
Neha: Meeting the right people and knowing the impact they may have on your work can be a game changer. Fred saw an opportunity with Mikael Rogers as a mentor, who could help him with what he was interested in.
Fred: That was probably one of the most impactful things that happened, which was just totally a coincidence that Mikeal was such an encouraging … I don't even think I really realized at the time. He was one of the early people who helped push Node through. I can't remember, because I think it's a specific claim of “built the first version of npm,” I don't know, or maybe ran it on his servers. You might know better than I do. Like very early days of Node and just by chance got to work with him. Again, a lot of luck involved. That was a really great experience.
Brian: So you're six months in. You're getting PRs merged into requests. What did that do to your career? Like what happened as a result of this?
Fred: I think one of the biggest things I learned from that experience was just how much communication online, and written communication specifically, how valuable that is. Again, I was the person who submitted the "I linted your whole project for you with no actual input from you." I was never aggressive, but I think I look back on some of those early issues and early conversations, and my ego has definitely gotten involved way more than it should. Mikeal was always very good at it, and I think that community was very good. Just because it was so big and important, I wasn't really able to just, not that I was throwing a tantrum, but throw a tantrum.
There's enough going on there where Mikeal, I think, stepped in at the right time to encourage people who he clearly, I think, looking back saw were learning, and gave a real guiding touch, versus it would be so easy to just learn a lesson of like, "Oh, the way to do open source is to be super dominating in all the conversations, and whatever you say goes." It's so much easier that way. Luckily I just, by learning from example from him, there was a lot of guidance. I think he enjoyed the mentorship part of it.
Neha: I know. There's something really interesting about this duality. You mentioned that you were hungry and you also mentioned that you were cocky. I feel like it almost feels like in some ways two sides of the same coin, where there must be a correlation and potentially even a causation. If someone is telling you you can't have that promotion and you're interested in finding an opportunity somewhere else in order to grow and to get that opportunity, like for you, what's that value of being cocky?
Fred: I don't think of myself, maybe brazen is a better word. I was very ready to put myself out there and volunteer, or just reach out to people. I was definitely just lucky and privileged enough to be able to go home and open up my laptop and live at a time where I was just working a lot. It's tough because I don't know if I would recommend to people, "Work super hard at that point in your life," and you can't get back your 20s, but at the same time I got so much out of it. I'm still torn on where my advice would lie today on that.
I think leaning in, that classic idea of it, was just what I would do, and not do anything 10%,... Similarly, playing a Flash game to making one, and playing with Second Life to making something, I think that curiosity of working on something but then really wanting to understand it, the why behind it and the deeper reasoning behind it all, I think, is really what pushed a lot of that early conversation. So using requests to actually trying to build requests and push PRs to it.
It's something that I see now that we have a community in Astro, the project we're working on most now. We just got funding and I'm trying to find the right way to... It shouldn't just be because you feel comfortable and have the resources to work on your free time. That sets up a bad incentive for just who can actually contribute to open source. If I believe it's such a hack on your career, which it is, why are we only letting people who have those means and resources?
Now that we have funding, for the first time I'm really excited about how we can use that to, how can we break down that barrier, at least, to not just people who have the means and the time and are in their 20s? How could we let more people in?
Neha: Totally. I think something that's really relatable about what you're saying is that—because I feel this way a lot too—I feel like the best opportunities I've ever had are the ones that I've fallen into. There is something to be said about following that spark and just thinking through your two and three safety nets and being like, "That's enough. Let me try and do something." Your story, to me, what resonates with me is the fact that I can see an example of someone following that, "I think I might be onto something that's really interesting. I'd like to stick around and see what happens."
I think that for a lot of people, seeing those examples really helps them make decisions and understand that where they are right now may not necessarily lead to where they need to go. In retrospect, you can always connect the dots.
Fred: I don't know, I think I'm hard on myself. I say I stumbled, but really I think I just didn't have a plan almost intentionally. Similar to, "Oh, computer science seems good. I'll try that until I have a reason not to." I think this entire story that brought me into web development and open source was just following that spark and not worrying too much about where it ended up.
Brian: Fred started his professional journey at Box, and now he started his own company. What were the steps between those?
Fred: I left Box two years into that journey. That was just like "It's been a while. I'm still not getting promoted." Again, rightfully so, but I was like “startups seem cool.” Again, I'm like just a hungry 20 year old, and I want to go and try that out. I actually ended up joining a small startup that didn't really go anywhere.
Then had actually a really hard interview experience after that, and the one company that accepted me was Google. It's this amazing like-
Brian: That's not a normal response that people would say.
Fred: I know. Oh my God. Small companies, medium sized companies, no one accepted me. I think the luck of the draw. I think there was a chance maybe two interviewers gave me the same question and I didn't tell anyone. I don't know. It was one of those things where I was just like-
Neha: I've had that before too.
Fred: It was just, I don't know, I was lucky to have gotten one yes, and just immediately said, "Yeah. Sounds great." Had a bit more say at that point, so I knew that I wanted to work in the San Francisco office. I was living in San Francisco at the time, and didn't want to do that commute. I had done that before. The Chrome team was working out of San Francisco, so I got in with Polymer, which is the web components project that Google pushed for a while, and I think has now become lit or lit-html is the new name on that.
I met some great people on that, again, got to work on open source now full-time, which was just such an experience. Especially seeing how a company like Google’s scale does open source was pretty eye opening. Through that, got to basically see the ESM spec as it was being made, so that was the import and export of JavaScript and how you can run these module imports inside of the browser, instead of Node's require statement which is how they did module load in on the server side.
There was this real push to finally have a native module system in JavaScript, built into the language. That was being worked on and finalized and was in that weird period between it's been accepted in the standard but no browsers are supporting it yet. Tools are starting to support it. Developers are starting to write it, even though it's being compiled away by webpack. All of a sudden this technology was starting to get in front of people, and Polymer was really trying to be a force to push that out there. That was really my connection to the ESM technology, which then Pika and Snowpack and all these other projects really tried to push into the world even further.
Brian: I have a follow-up question to that. I'm curious, I'm familiar with Polymer. I've never paid too much attention to that project other than seeing if it works with Netlify, my previous employer, which a lot of that stuff did eventually. Now you're working on a project which Pika's the name of the company. You've got Snowpack, you've got Skypack.
Fred: We've bounced around so much. The quick from there to here today is Pika was essentially this open source umbrella that I had originally started some things with that name at Google, and then I left Google, and got a just much more traditional front-end role at Ripple, which is that cryptocurrency company. Again, startups, cryptocurrency, I considered myself such a little hotshot. I wanted to try that out, and there was an opportunity to lead that team technically that I was very excited about.
That was when I picked Pika back up as it was more known in the world. From an internal project to an open source project, and there was no Google to worry about, or corporate to worry about. It was just like classic open source, and it could exist on its own. Then that became this umbrella of just experiments around this ESM technology. We made a package creator, so like webpack for your packages. We made a web app installer that became what is Snowpack. We created a CDN which is what is now known as Skypack.
There was a failed code editor for a while that ran in your browser, which is somewhat like what StackBlitz and GitHub Codespaces are doing today, but built by one person in a couple of months. You can imagine, it was a rough experience. And that brought us to end of last year, which was when we realized we could bring all this together into Astro. Really all of those threads have aligned into what Astro is today, which is a really cool exploration of the technology, but actually trying to solve a user story around how they build websites and trying to challenge the status quo on what a website even means today.
Neha: Astro is transforming the way people think about and build websites. Fred was ambitious throughout the thinking and initial building of Astro, and has been pleasantly surprised with the fruits of his labor.
Fred: It's been pretty mind blowing even to us as the team of people building it. Early on we were like, "We're going to keep it small. We're going to not talk about this too much while we build it. Maybe we'll target people who are trying to build static sites with Eleventy or Hugo." Just own this little niche and see where it goes from there. Then week one people were like, "I just rewrote my Next site and this is 40 times faster. What did you do? I'm using this for everything."
All of a sudden like, "No we don't want to be pushed into this story.” Which we are excited that people are excited about using this instead of Next, but for a four-month-old project versus a five-year-old project it's been pretty humbling and just eye opening to see.
What we do differently that no one else is doing today is we are challenging the idea of what a website is. Where Next or Nuxt.js or Gatsby, a lot of these JAMstack players see a website as a JavaScript application. The popularity of React and people saying, "Well, what if I just built my whole site with this, and then, well, I don't even need HTML. It's just all JavaScript," has led the web down this path where you are building JavaScript applications.
So a request comes in, it spins up some JavaScript on your server that runs your JavaScript application that creates HTML out of that, and then sends that down to the user. You then need to do a bunch of other stuff, but that's the basic story of a Next or a Nuxt and what they're doing behind the scenes. We are taking an alternative approach which is to treat the website not as a JavaScript application but as a collection of HTML pages.
Brian: Astro has risen in popularity since it was released earlier this year. And it’s a big player in a sea of static site generators. So what is the process with Astro, what makes it special?
Fred: So, your user request comes in. They visit your site on the browser. Instead of spinning up a JavaScript app that's going to render your website, we're basically pulling out of a static build, which is the HTML of your page that has different dynamic contents sprinkled in. So, the nice thing about a Next is that okay, “Really easy, I've built my site in JavaScript. It's all going to run as JavaScript. The whole thing is dynamic.” You don't really have to think about like, "When I click this button, how does it know to run all that code?" Because you're basically just shipping the whole JavaScript application, at least for that page, down to the user. So that's really powerful but heavy, as it kind of sounds. You're rendering the site, but then you have to ship the site also so they can run it locally. And because it's all one big app, you can't really pull things apart and optimize it strongly.
So where Astro comes in is you’re building the HTML page and then you're just sprinkling in the JavaScript where you need it. So that buy button or the header or the image carousel, each of them is injected on the page almost as its own little island. And that gives you inter activity where you need it, but everything else remains static and lightweight. So the performance is just on another level where we're not saying we're going to be the best JavaScript application, we're going to actually totally flip that script and it's a page with interactive elements on it, versus an entire interactive application. Which on a mobile connection or a mobile phone, you're paying a real cost to hydrate an entire thing versus much smaller pieces. Only the things you need.
Neha: So I'm curious about, obviously there's been so much traction over the past few months around this and one of the things that really resonates with people is that it's incredibly performant and so it's just a lot easier to do and almost challenges the way that we work today. How is that doing with first-time contributors? And what are you observing about the demographics of people who are starting to use this?
Fred: Yeah so this is... And we're very lucky, I mean even Snowpack and Skypak being open source projects I feel like I’m still figuring out even with the experience of going back to that request package that I first opened source 10 years ago, that must've been. I still feel like I'm figuring out. And we made plenty of mistakes even with Snowpack, our most recent project, and not investing enough in our community and building up a set of contributors. I really feel like we could have done more there. And I wrote a post recently kind of going into some of the lessons learned.
So the great part about that is now building out Astro. I feel like now this isn't the first project at this scale, how can we handle all these users coming in and how can we build out a team of contributors, not just one or two of us. So that we don't get burnt out, so that we don't get that overwhelmed sense of, "Oh God, every issue has to be dealt with by me personally." At night or on the weekends. I definitely felt a lot of that in some of the past projects. A project that gets popular, almost takes you by surprise if you're not ready. So Astro has been great. We've been building a really strong community of not just developers. I think that's one of the things I'm most excited about is our Discord has a ton of people who maybe have come in because they're contributing to documentation or they're just writing about their experience and learning Astro as their first thing they've ever learned.
There’s a ton of knowledge sharing going on even within our community which is really cool to see and I think speaks to some of the “you don't need to build a JavaScript app, you're building a webpage and a website.” So it's HTML and CSS. We really lean into those in a way that no one else is doing. So if you're coming from a WordPress or maybe even just your first bootcamp of fundamentals, it's not like, "Okay, great. The way to build a site is you need to learn GraphQL." It's much more forgiving and much more of a welcoming learning curve into the site where you're bringing in JavaScript when you need it.
Brian: Speaking of that learning curve, we started this conversation with Fred learning to do Flash with ActionScript. And now he mentions that people’s first interaction with the web can be Astro. I wondered what sort of feeling that invoked in him, knowing that someone's introduction to building on the web could be something he created.
Fred: So there's two cynical takes about what we're doing. The first one is, "Is Fred just trying to do Web Components again? Is he just trying to make Polymer happen? It's not going to happen." That's cynical take number one, which is just kind of a joke that doesn't have too much... I don't know, there's a little bit of similarities. But the second one I'm much more proud of, which is, "Are you just recreating PHP?" Which is when I first started web development is the first language I used. It was around that time where it was so popular. And again, not knowing what I'm doing, you're just kind of like, "Okay, great. Here's my HTML, I'm going to now put a PHP tag in my code and it's going to just make a database call in the middle of my page and go load something from a database." And now I'm like, "Okay, go back to HTML so I can template this thing that comes out. Okay, back to PHP."
And it was really forgiving to someone learning, because you just don't really care about what should go anywhere. You're just like, "Great. I can switch and flip around and try all these things." And the learning best practices come later. Astro I think has that feeling for me in a way that I'm really proud of, where you can just, you have your templating like HTML, and you can also make database calls somewhere else in the page that you can then reference. All within this page you have the loading of data, you have the templating of the data, in a way where it's not like, "Okay, I need to go create the right exports or the right functions or the right hookup of these different things." It's all really connected and batteries included in a way that it reminds me of how I learned in a way that makes me really happy.
Neha: So it sounds like some of this was really intentional. What was the starting intention, like your north star that you were going for that resulted in a bunch of these decisions?
Fred: Yeah. So we were really... I mean, Snowpack I think was one of our biggest projects up to that point and we loved it. But we also realized that it's a build tool and at the end of the day it's just a faster webpack. It had some really cool technical ideas. I don't mean to sell it short or any of the work we did there. But at the end of the day there was excitement, but like, "Cool, I'm loading something faster." Or, "I'm developing faster," but it didn't feel like we moved the needle on the developer experience as much as I wanted. And at the same time Vite came out, which is Evan You of the Vue team. An incredible engineer. He built a... Around the same time and exact same idea, basically that he went after. Which is just funny how those things work around the same time we're playing around with the same ideas.
But he, again talking about the importance of a really strong community, from day one they had the Vue community, they had contributors, they had people who already were empowered. So as we were trying to build that up with Snowpack and maybe not investing in it to the degree we should, Evan and that community just took off and ran with it and did such a good job. So around the end of last year, we were looking at what we were doing, and if you can't beat them, join them. There was this real sense of like, "Could we build something on top of this now that it exists?" Where we still built Astro on top of Snowpack, but only recently moved over to Vite, where realizing we could start to actually push the developer experience and the user experience at the same time.
And I think that's that kind of DNA in the project of—it's not just another way to do things, there's a theory behind it of just, how can we actually change something really fundamental? If Snowpack was trying to get rid of bundling, how can we take another stab like that where Astro can try to challenge the status quo of heavy JavaScript applications as the only way to build websites in a modern way.
Neha: It’s clear that Astro wants to break new boundaries and change paradigms around some of the most widely used tools in web building. Fred made certain key decisions in order to make this project more contribution friendly. What were some of the key things that Fred and his team did at the start to grow their contributor community?
Fred: Yeah, there were definitely a few things that we learned from that past experience. This sounds silly, but honestly the biggest thing is using Discord. They don't pay me, this is just a plug because I love what it is. It started as a chat application for gamers. And wouldn't you know it, the things you need to moderate 12 year old gamers is actually really good for moderating an open source community. And I'd been a part of open source projects that ran Slacks, but the difference is between something that was designed for people trying to have fun and something that was designed for people trying to do work. Really the more you use them, the more you just can't get away from that fact.
So choosing Discord as our platform was awesome. It injected a lot of fun with just the silly kind of randomness of a chat room and of Discord, but also you can really customize Discord and you do it with programming. So there's that almost sense of what is the Flash game equivalent for Discord? It's "Oh, I wish a bot could do this," or, "I wish I could automate this." And just in our community, it's like, "Oh, that's great. We would love that if you can do it." And all of a sudden it's someone else who maybe has experience with the Discord API or who's just excited, and your open source community all of a sudden you're not in a position of... I mean, you're the person running the project, but I don't know how to Discord bots work. I'm going to learn from you. All of a sudden it kind of flips the dynamic there.
And a lot of our contributors started by just around the edges of Astro getting involved and having that moment of like, "Oh, I've contributed with something I know how to do or I've personally felt, or this seems fun.” We have this awesome support bot that was just built for a custom need we had, that I'm pushing the person who built it, like, "You should repackage this and sell this bot. Other communities would love this." All of a sudden there's just this really cool energy to these different projects within our community. So it's taken on a life of its own. And that was definitely intentional, but it's hard to back into. It's something that I'm so happy we started with and started with that intentionality, because it's really hard to add after the fact.
Brian: So I've got so many connections that I want to bring up, but real quick I want to also mention that Evan You was episode two of this podcast, and specifically talked about Vite. And in that conversation Snowpack came up, and we sort of unearthed some of the comparisons that are commonly being made. So I think it's absolutely fascinating that you all are leveraging Vite inside of Astro or in conjunction with it. But also early in the pandemic, there was a conference that y'all run, which was the ESNEXT Conf. And that was run inside of a Discord. And it was one of the first interactions I had with the conference that was Discord heavy. So you had all the interactions and the chat and back channels... Or I would call it hallway track in conferences, in person.
And I felt like it was a great experience because all the folks I couldn't see in San Francisco, because we all had to lockdown and not know what was going on, we all hung out in the Discord, like random channels. And it was also my first real exposure to Discord outside of gaming. So you had an impact on me, because I run a Discord now.
Fred: Nice. Oh, that's awesome.
Brian: It was from that experience that I was like, "Wow, this is something that we should probably pay attention to." And shout out to Discord. They have a really good open source community engagement opportunity, where if you have an open source project, they give you lots of Discord or free nitros or whatever they call those things.
Fred: Yeah. Oh, that's so funny. I actually forgot that connection even for us. That was my first experience with Discord as well. Or maybe I joined one or two before that, but yeah, that was early COVID of just like, "All right, I've been invited to three webinars that were trying to replace conferences. This feels really boring. Let's just do a bunch of pre-recorded talks and stream them, and then this Discord will just be where we all hang out." And totally thrown together. Drew Powers was the person who worked with me on that, I think. We tried to do a global conference, so we're like, "Oh, now that it's online, we can do it any time. So let's stream just the same day's content over a second or third time." It's like, "Oh no, we didn't think through, we're going to be up… We tried to do it for a week long, we're going to be up all night.” We did not get a lot of sleep that week. But yeah, Discord is just so great for developer communities. It's the best.
Brian: I love the idea of different open source projects building upon one another instead of seeing each other as competitors. Fred started the Astro journey using his own tool, which is Snowpack. I wanted to know more about how Fred decided to go with Vite for Astro—technically a competitor of Snowpack, and how they work together.
Fred: Vite is this thing where they can kind of unify a lot of tooling. So instead of React having their bundler and Svelte having their bundler and Vue having their bundler and all of them having their own build tools and build setups, Vite is this really cool opportunity to consolidate everyone onto the same build tool. So you can just add the React plugin or the Vue plugin, and they all get to share the same thing. Astro is weirdly doing that for the next level up in the stack. Which is because we work with any frameworks, we support React, Vue and Svelte and all the others. Because of that, you can basically think of the framework as the UI, but Astro is now taking on some of the routing, for example.
And it's easy because we're a static site, but we have these ambitions to be doing SSR and that server-side rendering and handling more dynamic routes. So today if you're building a React app, it's like, "Well, I'm going to use React router or something else and it's a React solution to routing. And Svelte let's say they'd have theirs, and Vue has theirs. Astro would say, "No, routing is the responsibility of this web framework." And the web framework is totally agnostic. So it's mostly HTML and CSS and use JavaScript when you need it. So maybe there'd be some sort of JavaScript solution, maybe not, but it wouldn't be a React solution because we want to build something that would work for everybody. So all of a sudden you're starting to pull things that over the last 10 years we've added to the frameworks and we're pulling those back out again and we're going to see if that's as good a developer experience, but now, everyone coming together on one. What does the Astro routing solution look like that any framework can use? So in the same way, we're unifying and consolidating a lot of work that we hope will be an even better experience and not one-offs for every framework, but built into this lower level of how you build a site that anyone can leverage.
Neha: It's like, if you give a mouse a cookie kind of thing, right?
Brian: Yes.
Neha: Where it's like, "Well, if you want to build a web form, first you're going to have to go choose a framework. And if you're going to choose a framework, you're going to have to make sure it has X, Y, Z, and then you're going to have to pick your…”
Fred: Yeah, I really can't imagine going through a bootcamp right now. I have so much respect for the people who do, where it's like, "Okay, to build your first website," and it's exactly that list of things. Just to see the page, right? The “Hello World” will involve React then it's connected to Babel and it's connected to webpack. And it's one of those things where we've looked at the problem of complexity over the last five, ten years, and the way we've dealt with it is we've wrapped it in layers of abstraction. Okay, so Create React app is just going to have your webpack handled for you so you don't need to worry about it and you can get started quickly. The problem with that is then you look at what's actually inside of a Create React app and it's like 2000 packages are powering it, I think. It's huge. And you want to go and customize. It's like, "Well, hold on, you can't customize it." It's like, "Wait, why? It's like because-
Neha: Yeah. You have to look at the documentation on how you can customize it for that version or something.
Fred: Right. And I mean this. It's not a house of cards in that it's built poorly, but it's a complexity house of cards where they actually can't let you customize anything without their say so because you might break one of their things they built. So that's where I see a lot of the industry has gone, which is again, you can get started quickly, but it's at the expense of, "Okay, I just saw an error somewhere in my project. I have to go spelunking into my Node modules folder, which is 2000 packages large. Oh, God, where am I? What's going on? I thought web development was supposed to be fun." You lose a lot of that.
Neha: I almost see a connection to the same person, the middle schooler who's like, "Well, why can't it just do this?" Right? It's actually one of the things that I love the most when I talk to someone who's brand new to an area that I have more experience in. I always listen to their almost naive questions because it always gives you the source of, "Oh, it should be that way. Why can't I just build a web form, right? And why can't it just post and that's it?" And we're like, "Well, this is the reason." And then I always stop myself when I'm explaining this 14 paragraph long, the reason of why the way things are, and I'm like, "Huh, wait. Can we build it so that it is that simple?” Obviously we need thousands of open source contributors who have tried to find different solutions to do that.
Fred: Yeah. It's so easy to miss when you're so deep in it, you don't realize how absurd. I think once a year, someone will post, not even a take down. I'm just going to describe an experience I had in words so you can see this. And the blog post is like, I tried to install a package. It didn't work. And here's the weird error I got. I Googled the error, it's telling me to do this, I get a different error. And the experience is just, I tried to start my web development experience and 10 things cascaded to make the experience just mortifying. Which any one of those as a web developer, who's maybe experienced it before or just who kind of lives in it, you're kind go, "Oh, well of course that's the error that shows up when you do so and so, and the way to fix it is this and that." But when you take a step back, it's exactly that. Really, there's a lot of rough edges that we ignore because there's so much to build on top of.
Neha: It sounds like Astro is really in touch with what the experience is for beginners. What is their connection to early stage developers and how do you keep that fresh?
Fred: That's a really good question, which I don't think I've actually thought about. Part of it is just like when you see someone post about a frustrating experience, it's really easy to say, "Oh, well they just didn't X, Y, Z." And it's like, there's that question below, it's like, "Why didn't they X, Y, Z? Why didn't they know?" There's this concept and if you're ever doing a retro, something went wrong at a company or even something went right, but you're trying to get to the bottom of, "How can we make sure this never happens again?" There's this concept of asking the five whys, which is, "Okay, I pushed some code that took the site down," and it would be so easy to just be like, "Fred, you're fired. Great. We solved the problem. No more Fred, no more problem."
But then there's the, "Okay, well, why did you push code that broke the site?" It's like, "Well, I was in a hurry." And it's like, "Okay, well, why were you in a hurry?" It's like, "Well, we had this feature deadline." And then you can kind of start to dig and realize, "Well, that thing wasn't tested." And like, "Well, why were you not testing this code?" It's like, "Oh, well, we are allowed to skip tests if we're in a rush." And all of a sudden you realize it wasn't Fred's fault, it was a process problem. Or at least something in a chain of process things might have caused this broken issue. And then you start to get a lot of empathy for individuals in that story.
I don't know. I love that idea because it's almost always a process problem more than it is a human problem. So, I think there are different parallels of that and anything which is an open source or in a tooling problem. It's like, "If I'm frustrated, why am I frustrated? And if I see a lot of people are frustrated, why are they frustrated?" I think you just start to see those patterns a lot more clearly when you start to think in that way. And I try really intentionally to bring that type of thinking into working on tools and working on different projects.
Neha: I think it's also, “Why did we spend so much time learning how to build software, if not to make it so that the process or the system can handle the things that are hard for humans to do,” right?
Fred: Yeah. And that was one thing, I mean, going back to what Nicholas Zakas, and just how lucky I was to work with them when I was at such a formative kind of early part of my career. He's really someone who believes engineering and programming as a craft is a human exercise and 10% of what we do is actually about the code and 90% is how we communicate it. How do we get buy-in? How do we communicate in a way that doesn't alienate or push people away? Being a jerk won't get you anywhere. At a time where I was probably my most cocky and rough, it was such a formative experience of, that's what matters most. And the code, you see that in PRs and in different projects where so much work goes into the planning and then the review and the actual coding is a much smaller part of that, at least in my experience. So I've been very lucky to learn that lesson early. It's something else I try and strive for.
Neha: So kind of piggybacking off of that—and we were kind of touching at this on the fringes before—what advice do you have for young developers who are looking into open source?
Fred: I definitely think open source is just like the... There's nothing else like it that I know of, where you can just kind of jump into something and people are looking for help and you can provide help and different projects approach how much they're able to hold your hand or welcome you in, in different ways. Some projects have no community. Some projects have really well developed… start here, go there, do this. That's something I'm most excited about building out an Astro, but even just being welcoming is kind of the first part of that journey. So find a project that's welcoming. That's looking for help. That is, as much as you can, are people who you want to learn from and you don't have to go and—please don't just add a linter and then submit that PR and then walk away. A lot of the times just starting with a conversation. We have a channel on our Discord, which is “Start Here” for contributors.
And it's just like, post, have a conversation, tell us what you’re interested in. If there's some part of this that you see and just want to work on or are interested in learning more, we will totally help you out as much as we can. Again, that comes with the assumption that it is someone who has time—on their free time, they don't have kids they need to go and drop off or pick up or other things in their life. So there's still problems with that. But as much as we can, we're trying to be at least... Trying to pay back the kindness that I was shown in my early career. So yeah, I mean, just to assume, if you can find a project with people who care about this sort of thing, and I don't know the right way to find it, this isn't a promotion for Astro. There are plenty of other projects doing this, but if you can find one with a great team that you'd like to learn from, it can be one of the best experiences. At least it was for me personally.
Brian: Excellent. So I probably could talk to you for hours. We definitely need to catch up, Fred, but I just wanted to thank you for your time and sharing your trajectory into, eventually Astro, Snowpack, Skypack, touching down at Google and Box—absolutely fascinating. I got so many gems from this conversation. I guarantee the listeners did as well.
Fred: Oh, right on. Thank you. No, this is a great platform and I love that you all are highlighting open source. It means so much. So thank you.
Neha: Yeah. I feel like what was so cool to hear your story is that no matter where we were talking about within your trajectory, you can still hear the passion and the excitement, curiosity, and kind of challenging of the norms. And so thank you for sharing that journey and helping inspire the next generation.
Fred: Oh, thank you so much. That was fun. Oh, my God. You guys are great interviewers. That's one of the best... I love that format. I don't think I have gotten that full walk down memory road in a while. Let's do part two. Keep it going!
Brian: It was great to speak with Fred Schott and have him on the ReadME Podcast. To learn more about Fred and his work, please visit astro.build.
I am Brian Douglas, aka bdougie.
Neha: And I am Neha Batra aka nerdneha. The ReadME Podcast is a GitHub podcast that dives into the challenges our guests faced and how they overcame those hurdles. In sharing these stories, we hope to provide a spotlight on what you don’t always see in the lines of code, and what it took to build the technology that inspires us all.
Brian: It’s been really great spending time with you. The ReadME Podcast is part of the ReadME Project at GitHub, a space that amplifies the voices of the developer community: The maintainers, leaders, and the teams whose contributions move the world forward every day. Visit github.com/readme to learn more.
Our theme music has been produced on GitHub by Dan Gorelick with Tidal Cycles. Additional music from Blue Dot Sessions.
The ReadME Podcast is produced by Sound Made Public for GitHub.
Please subscribe, share, and follow GitHub on Twitter for updates on this podcast and all-things GitHub. Thanks for listening!