Come join us as we discuss everything open source with guests that are pillars in the industry. Welcome to The Secret Sauce.
Welcome back to the show. We're back to learn the secret sauce. Thank you so much for making the ride. Did you ride your bike down?
Nate:I did ride my bike down.
Brian:Are are you carless in the East Bay?
Nate:No. I have a car. I like road trips a lot, so keep a car around. But if I'm just going in between,
Brian:you
Nate:know, Berkeley and Oakland, I'll I'll bike.
Brian:It it it's a great ride. Yeah. I, I used to live off of 59th and Telegraph. Mhmm. So it's, like, right between 3 BART stations.
Brian:So you've got, like, Ashby, McArthur, and Rock Ridge. Mhmm. And depending on the weather and how I felt, I need to ride the bike down to McArthur, ride the bike in the city to get to work, to get to GitHub, really. And, Yeah. I missed that.
Brian:I live in East Oakland now, but we didn't talk about we're not here to talk about Oakland and and Berkeley. Talking about because you're one of the maintainers for the CLI. Mhmm. And do you guys just call it the CLI?
Nate:I I call it g h. G h? That's the command's name, but our official name is the GitHub CLI.
Brian:The GitHub CLI, which is open sourced. Mhmm. It launched, 2021? Yeah. Around 2021.
Brian:Yeah. Okay. So I wanna talk about that and how to do open source at a company, which is it's very unique at GitHub, as you you will share your experience, working as an outside contributor or collaborator. But I wanted to talk about your background first. So we briefly found that you went to school in Indiana.
Nate:Yeah.
Brian:What school?
Nate:Just a little Quaker College called Earlham.
Brian:Okay.
Nate:Earlham College.
Brian:Yeah. I'm gonna pull my naive card. What's a Quaker College?
Nate:So a Quaker College is a college that's just run by Quakers, and Quakers are a religious organization. They're I don't know how to describe them. They like peace and consensus and equity, social justice. That's kinda their whole thing. So I went not as a practicing Quaker, but I just I really like their code of ethics.
Nate:I like their kind of, like, you know, approach to politics and stuff. So
Brian:yeah. Wow. Okay. I've I've got a lot of Wikipedia to look
Nate:into because It's interesting then. Yeah. There it's interesting. They were, chased out of the the colonies in, early America. They they were hated by the other Puritans, excommunicated, and all that.
Nate:Yeah. They were too chill. You know, you couldn't be chill in the 1600. Like, you had to be a jerk, you know, to get by. Okay.
Brian:Yeah. I mean, cutthroat. Yeah. I mean, literally cutthroat because, literally, that's what Yeah. Absolutely.
Brian:Came through and did.
Nate:Yeah.
Brian:But, yeah, we don't need to do that all that history lesson. But yeah. So you got, CS degree. Did you study CS?
Nate:Yeah. I did. Yeah. I didn't go with that intention. Yeah.
Nate:I wanted to be a writer, and I got to college, and I said, money's gonna run out. I don't feel like having a huge pile of loans. I should probably get a job, and I like computers, so I chose CS. So
Brian:Excellent. And we I already before we started talking, you know, talk about all the places you've lived. Mhmm. But, actually, we're talking about where you worked. So after college, I know you eventually got to Venmo, but how did you get to Venmo?
Nate:So it's a long winding road. So, well, first, I actually worked for my college. So that was one of the reasons I went there was because I was gonna major, not in CS, but they had this really cool thing, called applied groups where it was like an apprenticeship program. So from my 1st year, I was apprenticing under a web developer who was employed by the school and it was huge. Like I got to learn all of these skills, and get paid.
Nate:It was like my work study, like, thing. So, it was amazing. I I really, really valued it. And so I worked on my college's course registration system, and I developed a couple new features for that. I did support for it.
Nate:Yeah, it was a huge, like, big responsibility and a huge learning opportunity. It was it was awesome.
Brian:So why'd you leave that then?
Nate:Oh, because they, okay. I was gonna swear. They, they they they canceled it. They yeah. They got rid
Brian:of it.
Nate:They bought an Oracle product for tens of 1,000 of dollars, and it was awful. And I was really mad, and I quit. Got it. I went to work for the radio station instead.
Brian:The ray okay. You can't escape by that. Did so you did you do code at the radio station?
Nate:Yeah. I did. I I did I was computer person. So IT, web development. I managed the we had, like, really crude Internet streaming because this is, like, 2008 or so.
Brian:2,008. So that would have been what's the the FM thing? Like, I remember back in the day, all the radio stations were going, like, the clear channel stations are going, and you could stream radio on the Internet, which is, like, the still the Silicon Valley thing.
Nate:We, so, like, we had this ancient desktop computer under a desk in the booth, and it had some wires running from the studio, and it was running IceCast, the open source Yes. Stream. And and on the on our website, I wrote up instructions on like how to open it in VLC and like listen to it, just the raw network stream. So we didn't have a fancy website. This is before HTML 5, you know, we didn't have an audio element and all that stuff.
Nate:So, but people used it. Yeah. People followed my instructions. They all installed VLC, open the network stream. Yeah.
Nate:It worked pretty well.
Brian:What, what type of radio stations were it that people would go to the jumping through hoops?
Nate:It was just the college radio station.
Brian:Okay.
Nate:Yeah. So like I had a, I had a noise show, called dead air that I had a lot of fun doing. I would get these like confused calls from really old people in Indiana who
Brian:were listening. Like, wait, could you explain noise shows?
Nate:Could I know? Oh, yeah. Yeah. Indiana who are listening, like, what
Brian:Could you explain noise shows? Because I
Nate:know Yeah. Yeah. Well, no. So noise music is just like it's, yeah, it's it's music that's not focused on rhythm or tonality. It's just like big walls of sound and weird experimental stuff.
Nate:So, yeah, I introduced rural Indiana to that through college radio. Our most popular show was, like, a local person came in and did, like, an old timey country show. People loved that. So it was, like, every genre, ineptly run, terrible automation. Yeah.
Nate:Classic college radio
Brian:story. That's amazing. Yeah. So you cut your teeth there Mhmm. After you you ran from the Oracle project.
Brian:Yeah. So then what was next?
Nate:So after that, I got a job, in town where my college was, doing web development, rep
Brian:Pearl. Okay. I remember Pearl.
Nate:Job out of college. Yeah. And I, we worked on adopt a pet dot com. It's a cool nonprofit for finding shelter pets.
Brian:So And that was local to Indiana? Yeah. Oh, okay. Cool.
Nate:A little, like, you know, 7, 8 person company. Yeah. It was, founded by graduates from my college who just stuck around and
Brian:Yeah. Is that still around?
Nate:No. Long gone.
Brian:Long gone. Yeah.
Nate:Adaptive Pet is still around, and I I I still highly recommend using it.
Brian:Yeah. Very cool. Yeah. I'll definitely check it out. We're we're in the market for a dog.
Nate:Sure. Yeah. It's it's perfect. You can, yeah, search search for shelter pets. I worked a lot on the search engine.
Nate:I think a bunch of my code is still in there. You can save, save searches as RSS feeds. That was, like, my my huge, like, feature that I'm super proud of. Not that anybody uses RSS anymore. But
Brian:No. I I honestly I I was thinking about it yesterday because, we have a newsletter and we have a blog for open sauce. Mhmm. And I'm like, I don't know if we even set up RSS, and no one's complained. So I guess we'll just continue to move on.
Brian:Because last time I set up a blog, there was RSS Mhmm. Long time ago.
Nate:I love RSS. I I it's I've been waiting for it to come back. I mean, great.
Brian:Well, Google Reader, rest in peace.
Nate:I know.
Brian:I I think there's been, like, quite a few new, like, try to well, there's no replacement because it's dead. But, like, I think Feedly was the thing I used for a while and then, like, Pocket was another one that I used. But, yeah, I don't think there's ever been a replacement. But I think the way startups go is if you just redo the thing that happened 10 years ago
Nate:Yeah.
Brian:Yeah. Yeah. Just do it faster and
Nate:8 years. Gonna paint on it. Yeah. Figure out how to spin it differently to a VC. Yeah.
Nate:There yeah. Just say that, and then know people just hand you money.
Brian:Yeah. Yeah. Actually, AI is the one that needs to be
Nate:Yeah. Excuse me. It's it's AI now.
Brian:RSS on AI. I don't know how that it would work, but I'm sure it's if you got rss.ai, it would work.
Nate:I'll go to my marketing material, and I'll just, like, string replace, web 3 for AI, and then the funding is just gonna roll in. It's gonna be that simple.
Brian:Yeah. Yeah. So how long did you spend your time at adopt a pet?
Nate:I I was a back end, engineer. So, no, just, figuring out, I mean, we were working with CGI application. It's a web framework built on the cgi.pm library. So a lot of just, like, figuring out how that works. And, you know, we had a lot of weird idiosyncratic things.
Nate:Like, we shared a testing database. So, like, we couldn't all run the test suite at the same time. You know, figuring out that kind of stuff, I I did a bunch of improvements around that and, yeah, worked closely with the designer on implementing new features and stuff like that.
Brian:It's it's amazing, like, you know, I I I started recording well, I started professionally coding with Git. So everything else is, like, copy and paste, put scripts, put bunch of places, never had to do, like, with a team. Mhmm. And, it's amazing when you hear stuff like could not run the test. Yeah.
Brian:Yeah. Yeah. You had to pass it around. That's like was it not Git based then back then?
Nate:No. No. It was,
Brian:Like, it's Pearl then was it, was it SVN?
Nate:I think you might never guess. It was Darkz.
Brian:Darkz? Use Darkz? No. I've heard of Darkz.
Nate:Yeah. Yeah. We use Darkz. It was, like, really cool, but there weren't branches. It turns out branches are really nice.
Nate:So, yeah, when I I found GitHub, and I found Git, and I I was really happy with it. Yeah. It I didn't really look back after that.
Brian:2008, 2009?
Nate:Around there. Yeah. Yeah.
Brian:Yeah. What's the what's the story behind your behind your GitHub handle?
Nate:It is stolen from somebody else's, cool art project. They took a bunch of, Shakespeare, and they, they scanned it, into JPEGs and allowed the compression to, like, kinda distort it. And then they OCR'd it, printed out what the OCR came up with, scanned it again, let it compress. And so you could watch all this text just degrade, you know, over time. And I thought I thought that was really funny.
Nate:And the name William Shakespeare, got mangled into Vilma Vim Shacks for peas. And I just thought that that was really funny. So I was in the market for a new handle, and I had just seen that art project, and I was like, I'll be Vilma Bim. So, yeah, that's that's me.
Brian:That's that's amazing. Because I remember one I think when we had chatted when I worked at GitHub, I think I called you Tim once because your handle kinda it looked like Tim to me. Mhmm. And I was like, oh, I just completely butcher his name. I don't know if you you didn't pick up on it.
Brian:But
Nate:There's no no, there's no official pronunciation of my handle for sure. I mean, I say Vilma Bim, but it's, you know, whatever you it could be Tim. You can make it up. I don't care. It's
Brian:Hey. I love how how Quaker you are about about this. Yeah. Sure. I don't know if I need his verbed at, but, we'll we'll make it a thing.
Nate:Mhmm. That's fine.
Brian:So, so congratulations for graduating out of darks. Mhmm. So did you how many jobs do you have between GitHub and and and
Nate:let's see. So after Adapt A Pet, I went to, this company called Cox Media Group Digital and Strategy. The name kept getting longer. But we were like because I moved to Atlanta for that job, and we were tasked with, like, creating a new CMS with Django for a whole bunch of newspapers and radio stations and TV stations to use. So, like, all these local markets throughout the country, we're gonna use our CMS to just publish their news.
Nate:Yeah. It was interesting. I did a lot of, JavaScript engineering. I ended up, like, leading JavaScript development there, doing training, best practices, introducing testing, a lot of ads optimization. I was kind of sole training, but, made some great friendships.
Nate:Yeah. Had a had a pretty good time there. And then after that was Puppet, Puppet Labs.
Brian:Okay. That I do know that company. I know Cox, but also I know Puppet as well.
Nate:Yeah. I, did Puppet. I did that remotely for a while, then I I did move to Portland, to work there for a bit. And I worked I kinda the the product that I was hired to work on got canceled in 30 days of my starting. So it was a weird it's it's a weird time.
Nate:I just kinda bounced around stuff and then, worked on enterprise for a while. And then I went to Venmo, because I Googled, you know, like, find me a remote job that'll send me to New York for free. And that and that Venmo came up, so I picked it. That was a real weird experience working at Venmo. And then Was
Brian:this pre pre PayPal?
Nate:No. It was post PayPal.
Brian:It was post PayPal. Okay.
Nate:Mhmm. Yeah.
Brian:And then you got to GitHub and worked on the Gitcoin team Yes. Yeah. Which a lot of people don't know Gitcoin is the the billing team.
Nate:Yes. Not a cryptocurrency. We, I like I like cringe when I I say my former team name. Not not not because I I I wanna speak poorly of them, but just because everyone thought we were doing a cryptocurrency.
Brian:Yes. I thought I thought that when I got there. And then they get coin project happened a little bit later after that.
Nate:Yeah. It did. Yeah. That didn't help anything. So I think that team is just called billing now or billing billing some payments or something.
Nate:So yeah.
Brian:Yeah. They deleted all the the soda panda rockets and the pizza penguins.
Nate:Yeah. Yeah. Yeah. Yeah. Yep.
Nate:Things are very clear and and, clearly named now. Yeah.
Brian:Yeah. So, I mean, I didn't realize you had such a tour through the Internet, but also to the US. But you got to Fintech Yeah. From Venmo to GitHub. And then what was your experience?
Brian:When did you join you joined GitHub? 2018?
Nate:20 18. Yeah. Yeah.
Brian:That's right. Because we're we're within a week a couple weeks of each other joining. And, so how's that experience?
Nate:It was positive. Yeah. Well, I mean, I just I really like GitHub at the time. You know, like, it it was such a formative tool for me, like the age that I was, you know, in college I learned CVS and SVN and then, you know, with darks and I don't, you know, I was trying to work with Google code at the time and, GitHub just felt awesome. It was fun to use.
Nate:It was straightforward. And I felt like, I was just really proud of like being able to fill up my list of repositories, you know, and, and kind of like, look at this weird garden that I was tending of all these side projects and weird ideas. And it just felt nice having them in one place. And it was, you know, finding, like, I made friendships over GitHub. Like people would find my weird projects and submit a patch.
Nate:Like I had a friend come into my wedding that I met because he submitted a PR to my, one of my repos.
Brian:And what project was that?
Nate:It was, this weird art project called moo REPL. It's a multiplayer closure REPL. So, it's like a remote code execution turned into a game. So yeah, a bunch of people can just shell into the same, like closure REPL and then share a namespace, so define variables and stuff. And I added, like, a thin little layer for making, like, a game in it.
Nate:So I'm making rooms and, you know, picking up items and stuff like that. So people, you know, come in, write a bunch
Brian:of closure, build out this little text based virtual world.
Nate:And yeah, just, this person, happened to live in the same city as me and came across it, submitted a patch and, yeah, been friends ever since. So, yeah, I just getting to actually work GitHub was was a pretty big deal. Yeah. It felt good.
Brian:Yeah. That that's really cool. That's a great story too as well. And, you know, it's it's everyone has a story like that where you'd I I was in not on GitHub, but I was on Reddit Mhmm. The React Reddit.
Brian:And, one of the moderators, I would interact with and, like, answer questions. Well, he was a moderator. I was actually answering questions. They were just a new React user. Mhmm.
Brian:And they had, like, saw my answer and, like, was unblocked, and then eventually became a moderator. Mhmm. And then eventually started working in my last job, before GitHub at Netlify. Mhmm. And, he mentioned that to me in passing.
Brian:I was like, oh, I don't know if we crossed paths, but, yeah, your your handle looks familiar. And, yeah. Anyway, that person was Swix. I don't know if I probably should've said Swix, but, Swix for poke pokes in the React world know who Swix is. But what I'm getting at is, okay.
Brian:So you got GitHub. Mhmm. But you you're working on the GitHub's at g h CLI or g h whatever. Mhmm. I always call it CLI because at GitHub, it's easier.
Brian:Yeah. Because the the way the the way the the full name is, it's CLI slash CLI.
Nate:Right.
Brian:Which, you know, it's it's memorable. Mhmm. But what's the story behind the CLI?
Nate:So it started with, actually with a defunct project. Yeah. So he, yeah, he made hub. And, so Hub was it was really neat. It was a wrapper around Git, and the idea was you replaced Git with Hub, and you could use these additional features that would just kind of appear, to interact with GitHub.
Nate:And so it kinda blurred the line between Git and GitHub a lot more. And the person who ended up maintaining that was, who I work with now. And so, yeah, someone floated this idea of, like, why don't we you know, people seem to like this hub project. What would it look like if we actually staffed a team around it? Because Meslav was actually doing it, in his spare time.
Nate:Yeah. He he was not getting that was not his day job. So, the team, you know, the idea, got pitched and, someone you know, my my my boss, Neha, was looking for recruits. And, I mean, I love the command line. I love text.
Nate:I love open source. So it was like, this this is real. Yeah. I was really excited to to get involved. So yeah, we all sat down in a room and just said, well, like we have staff, we have funding, what are we gonna do?
Nate:And we had to make the call of, are we going to just maintain hub and build new features there? Or are we gonna do something brand new? And that was actually a really tough decision. We, we spent like a couple weeks just going back and forth and thinking about that. We made the call to do something new and I, in retrospect, I feel it was the right decision.
Brian:What was hub written in?
Nate:Weird story. Hub was written in Ruby.
Brian:Okay.
Nate:But, it was starting to have some really serious, performance issues and people were unhappy trying to use it as this, like, daily, tool in their in their workflow. And so, and at this point, Mislav was the maintainer and someone just showed up with a pull request to just rewrite the entire thing and go, like, Hey, I, hey, I did this. And do you want it? So Mislav, I and I don't, wanna get this wrong, but I'm pretty sure he had never written Go and never read Go. And but he looked at the benchmarks, and he was like, oh, that's fast.
Nate:And so, sure, he took it. So it was written in Go, but it was, like, this, you know, like, full formed out of somebody's head to show up in a PR. And it was getting kinda hard to maintain for that reason because, like, yeah, the people maintaining it, you know, they weren't super familiar with, with this new version. So so we took a lot of the lessons from that and some of the code from that and put it into, into this new thing, which is also Go.
Brian:Yeah. That, I mean, that makes sense to sort of start fresh instead of, like, trying to fill figure out this tech debt. And then folks who maybe missed that PR and come back and, like, hey. Where'd who ruined my cheese? Mhmm.
Brian:I actually so I actually did a contribution to the CLI, a couple, like, maybe 6 months after it was launched.
Nate:Okay.
Brian:And, I had actually done Go, at my previous employer, but I got sort of pigeonholed into only doing JavaScript and and React stuff. And I was like, oh, I wanna do Go. So, like, I ended up just sort of looking for, no. Actually, I was using the CLI because as the developer advocate at GitHub, it's like, hey. We need to talk about stuff and interject it in storytelling.
Brian:So I was like, oh, I'm gonna just get comfortable with the CLI. And I use Hub quite a few jobs ago. It was like someone had recommend us use Hub commands, and it was like, oh, this is cool, but, like, forgot about it. Mhmm. So I don't remember what my contribution was, to be quite honest.
Nate:I'm sorry that I don't either. Yeah.
Brian:I think Meslav was the one who merged it.
Nate:Yeah. He probably did. Yeah. He's a lot more, I think, the face of the project. I don't know if people really know who I am usually.
Nate:But
Brian:Yeah. But I I will say that the experience was really nice of writing. Like, picking up Go, it's like the the lower levelness of Mhmm. I didn't write c ever. Like, I did a c book, maybe took a course.
Brian:Mhmm. I did the Harvard EDX course, which is starts in c or starts in Scratch then goes in c. But so I like Go because it forces me out of the place where I was with Ruby and JavaScript, and, like, I get to think about things differently Mhmm. And, like, try to think about, you know, performance and things like that. So I would say if you're interested, and I I do not sell in it very well, but, like, I would definitely check it out, but I did wanna have sorry.
Brian:Check it out to make a contribution. But I did wanna have a conversation around, like, doing open source under the umbrella of GitHub, which you said that you feel like more of an outside contributor. Talk to me about that.
Nate:Yeah. Sure. So, yeah, I mean, it was really important to us when we designed this new thing. We wanted to be fully open source and we wanted it to be, you know, because we're we're really aware. We're trying to be really aware of of vendor lock in.
Nate:Like, we're not trying to do that to you. And so, yeah, our tool is completely GitHub specific, but it was really important to us that that be fully open source. And more than that, in order to encourage contribution, we wanted to only use public APIs. So we we intentionally set up our team to only have the the kind of tools that an external contributor would have. So, you know, obviously, I can go open up, you know, the GitHub code and and figure out how an API works if I need to.
Nate:But in terms of what we put, what we ship in our final in the final product of, g h release, it's all the same stuff that any any random person out there has access to. So the what they end up doing to our team is I think increasingly, we we took on that role of external contributor and ended up being, and being advocates for that perspective. And I think that's been really healthy because. A lot of times, and this is not a good problem, but a lot of companies, you know, they making an API for something can feel perfunctory. Like, well, we gotta have an API because you gotta have an API.
Nate:And you you set it up and then you you ship it and you forget about it. You know, we're actually working with that API, teaching contributors how to work with that API, and seeing what issues there might be with it. And so that's we've ended up funneling a lot of feedback back into the company of of from that kind of work.
Brian:Yeah. I mean, the the biggest I I used to say this some stage all the time when I was doing DevRel, but, like, the biggest consumer of the GitHub API is GitHub engineers.
Nate:Mhmm.
Brian:But the GitHub engineers also have, like, the rip cord and be like, oh, yeah. This the thing that happens all the time, including an open source, is like you hit a rate limit. You know, like, oh, it'd be great if we didn't have this blocker. So, like, even with the CLI, I assume you hit the limit as well.
Nate:Oh, and I have, believe me. Yeah. I've done some stupid stuff with bash loops.
Brian:Yeah. So you just take a, you take an hour break, go get a lunch or something.
Nate:Yeah. Go make coffee and just wait. Yeah. No. I don't get any, any special privileges to the point where, like, I have a testing account, that I use a lot.
Nate:And I I tried to make another one to have, like, different properties. I'm not even not even allowed to have that. So yeah. No. I'm I I feel very external to the company.
Brian:Yeah. That's that's amazing too as well. Are there any other projects at GitHub that I know there's some other open source projects, but I don't I don't even know if they're still maintained or who like, Octakit wasn't even it wasn't technically owned by GitHub until recently.
Nate:Yeah. I don't actually know what the state of Octakit is. The other big like, our sister project is GitHub Desktop. Okay. And that's still thriving.
Nate:And they have a very different mandate. Like, they are trying to replace Git. But in you know, by doing this GUI approach, that really transforms what it's like to work with Git. So we have a very different kind of mission from GitHub desktop, but we, we operate really similarly, you know, in terms of, how we write code and interact with the company. Other than, other than us to, I'm trying to think, and those are the 2 big ones.
Brian:Yeah. There there's the the ghost one, the GH host.
Nate:The extension? Yeah. Yeah. It's very cute.
Brian:Yeah. That one I know that one is existed. I know the person who created that is actually works at PlanetScale now. But I don't know I don't know how much that's maintained. The git ignore repo is, like, one of the biggest projects, but it's all a bunch of mark what's that marked out?
Brian:It's, a bunch of git ignore files.
Nate:Yeah. Right.
Brian:Yeah. I actually was maintaining that until I left. Okay. Mainly because this is more of, like, this thing is gonna go derelict and people keep opening up PRs. Let's do something with it.
Brian:Mhmm. And I still get pinged. They're like, hey. Can you merge my thing? And I was like, no.
Brian:Sorry. I don't work there anymore.
Nate:Oh, yeah.
Brian:So there's a trend happening right now where more and more startups are starting with open source first. If you check out any of the batches of YC, you'll see more and more open source companies now submitting applications to YC and getting in. Now this is a good trend because the scale and velocity of what you can do and grow through open source is off the charts. Now at Open Sauced, we are invigorated by providing actionable insights. Insights that opensauce.pizza, it's a platform to get intelligence on your open source projects.
Brian:So if you're a company and you're up and coming to either YC or you're a series a company who's looking to get their next round of funding and grow community, we have the platform for you. If you're interested in growing your project and growing your open source community, definitely check it out and let us know what you think. But so with the so the seal eyes mandate, you are you're the voice of the external contributor.
Nate:Mhmm.
Brian:I'm curious how that sort of spins into product road map conversations. Like, you got funding that shipped this thing. Do you feel still feel like you have funding to continue the thing?
Nate:It's different. I think so, you know, we're we're kind of being put into a position more where we're building out this extensions, feature so that people can add their own commands to the CLI because we realized, like, our team is is small. We're 3 engineers. And once we did our big initial launch and got it out there and got adoption and traction, like, think, you know, our. We weren't getting pushed to do huge flashy release releases anymore.
Nate:If that makes sense. So I don't like, we're not in maintenance mode, but we're putting our effort into creating it, creating the ecosystem for people to ship their own custom commands and and, like, helping them do that. So I just wrote a big guide, to do that. I did a blog post on the GitHub blog about how to write extensions. And we're trying to make that a really stellar experience because too many people, both internally and externally, are coming to us with ideas.
Nate:Yeah. And we just, like, we can't do it. So we don't have enough time.
Brian:And I think that that for I think a lot of open source projects, if you'll get the JavaScript ecosystem, the extension play. So at Babble, which is still around, like, the extension, the plug in well, the plug in is what they call them, but that ecosystem is, like, where Babble drives. Mhmm. Webpack had that as well. And I'm, like, I'm dating myself because that's when I was sort of doing a lot more JavaScript.
Brian:But I I think that's the way to go moving forward, and to have other folks if you're, you know, working on your own tool and be like, hey. I'm gonna open an issue to get these 3 engineers to go do a thing that could help my company out or solve my problems. It makes more sense to, like, teach the man how to fish rather than hand them fish is the, I don't know if that's going back to the, the the quaker.
Nate:Yeah. It's it's I think it's working for us, you know, especially, internally because there's, teams at GitHub that wanna see their feature represented in the CLI. And, you know, they're the subject matter experts, not us. So, you know, like when I did all the actions implementation for for PHP. Yeah.
Nate:And, the actions team is busy. I mean, they're they have a lot of work to do and, like, they had zero time to to contribute to this. And so it it was an awkward situation of, like, I'm just kinda on the fringe, like, trying to learn as much as I can about about actions to do it justice in the CLI. And, like, we're trying to not keep doing that. We're trying to actually have people, write GitHub ex write write gh extensions, and then we've taken some of those and merged them into trunk.
Nate:So it's a nice, like, feeder to get new features in, internally. And it's a good pressure release valve for external people because they want stuff in and we're we don't get it in fast enough, and it's like, just ship an extension. Like, you're in charge of releases now, and people like to
Brian:call up. Yeah. And they can own their their own life cycle and Mhmm. Like you said, the releases. Have you crossed paths with, like, the the Probot folks?
Brian:Would be like, well, Gregor is one of them. I'm trying to think of anybody else who's still around.
Nate:I don't think so. Yeah.
Brian:Yeah. Oh, oh, Tommy Bird. He's the one. He still kinda sticks around there, but he's the one we're gonna get up pages now. What about the, anyway, I could probably name drop a bunch of people, but it sounds like you don't cross paths with anybody internal.
Nate:I live an isolated life. I admit that. Like, we, you know, we we hunker down in our Slack channel. We, we're really, like
Brian:Like, do you have a separate Slack channel? Or you have No. No.
Nate:No. We're we're in the the regular corporate, Slack, but, we're we don't, like we're not trying to avoid people or anything, but it's just the way that it shakes out. We're we're kind of, like, in our own world most of the time. Yeah.
Brian:Yeah. That's that's wild. You're on an island. And I think there's there are other teams in larger organizations that are very similar to yours, because I know that I I mentioned the the Probot folks because that was very similar pre Microsoft, how that team operated, where they were building a cool thing to build GitHub apps. And it was all open source.
Brian:They had their own office hours. They had their own Slack. And I actually was introduced to this group and I was like, oh, wow. I can because I was building a lot of bots and integrations and stuff like that to kinda show how to use GitHub and the API and webhooks. And, it was just, like, fascinating.
Brian:What was challenging is because, Brandon Keepers, he was there for so long. When the acquisition happened, he decided, you know, maybe I'm gonna go do something. Well, he bought a boat and sailed the world. But then Probot kinda like sorta hit like a plateau. And I think they they're the sort of the the what I'm saying is successor of Probot is GitHub Actions now.
Brian:Oh, yeah. Where Probot was that was a tool if you wanna integrate and do your own extension on top of GitHub without creating a second bot account.
Nate:Mhmm.
Brian:And then GitHub actions was like, oh, this is so much easier. And that became the ecosystem. So, like, where there still makes sense, like, open sauce when you log in, we actually use a GitHub app.
Nate:Mhmm.
Brian:And we also have, like, installations and GitHub apps onto repos because it's like it's a bit of our secret sauce. Like, our entire infrastructure was built on 1 GitHub app that was installed on repos recreated for the user. Mhmm. And then we would create issues, like, our entire database was GitHub issues, that we would run actions on to keep updated Mhmm. And populate user data.
Brian:And the thing I I did it that way because, 1, actions was free. Mhmm. But, 2, I did had a very high aptitude to use the API and just wanted to sort of bend it to my will. Mhmm. We definitely grew out of it.
Brian:We're actually moving off of the infrastructure, like, the last week. Okay. But it was like it was one of those things there. What basically I'm getting at is it was like a thing I learned from, like, this sort of, like, side room team.
Nate:Mhmm. And I
Brian:was like, hey. I have so many questions for you. That's changed a lot because now GitHub's grown up and there's, like, a whole ecosystem. So I I did wanna actually talk about stuff that you have worked on in the past, like, with the the GitHub CLI. I know there is the GH garden.
Nate:Yeah.
Brian:Yeah. You wanna explain that?
Nate:Yeah. Sure. So, I I don't know. I I'm I'm like an imposter. I don't really belong in this industry.
Nate:I just think computers are neat. I don't know. To me, they're they're just like the you can make them do funny stuff and artistic stuff and weird stuff. So I'm I'm I'm, like, constantly looking for some time to to steal and do something weird. So we have we have monthly, hack days, and I always try to do something creative, each month, with business interests at, you know, very, very far in the back of my mind.
Nate:So one of the first ones I did was, it's called Repo Garden, and it's, you you run this commit. It's in g h. You can you can run it right now. It's an Easter egg. It's not not listed anywhere, I don't think.
Nate:But if you run ghtrepo garden, it will, look at your whatever repository you're in locally, and then it will generate this kind of top down view of a garden in ASCII. And so every single, commit is represented by a flower, and the flower is is colored according to, like, a hash of the commit message or something like that. So you have a little character and you just walk around the garden and you stop over a flower, and it'll tell you, oh, this was this is some commit by this person made on this day. And the idea is is to just have, like, a little fingerprint for repository, something that's different for every single repository. And the more long lived a repository is, the more commits it has, the more it kinda fills up those flowers and gets and stuff like that.
Nate:So, yeah, it was a lot of fun to do.
Brian:Yeah. It's a it's a different take on the contributor graph.
Nate:Yeah. Yeah.
Brian:Yeah. It's a different lens. Mhmm. Any other Easter eggs you have in the, the CLI?
Nate:Yeah. Let's see. Well, so those, credits is really cute. I think that was actually the first weird thing I did.
Brian:Oh, you know, I actually run the credits after every stream on Twitch.
Nate:Oh, nice. So we
Brian:do a live stream and I'd run the credits. I actually forgot about that because I stopped streaming for, like, a summer. And then I got back into it. I stopped doing the credit sting. I gotta bring that back.
Nate:Yep. So credits is similar to garden. I was trying to think of like, how can, how can we like take people's contributions and just make them into something fun and colorful? So, so, yeah, if you run g h credits, you get a scrolling list of credits of all the people who've contributed to g h, but you can point it at any repo. And so you get this, like, credit scroll, scroll with with some mask yard.
Nate:That might be documented. I'm not sure if that's an Easter egg anymore. Since we've released extensions, I've just been putting all my goofy stuff in there. So Is
Brian:there, like, a is it is there a document or is there a doc for all the extensions that people are building or is it free form?
Nate:A doc. I'd Like,
Brian:I'm sorry. Like a directory.
Nate:Oh, so, well, actually, we'd so we just shipped a new command, called GH extension browse.
Brian:Okay.
Nate:Which opens up this like, terminal user interface, interactive view of all the extensions people have published on GitHub. So we find them based on a repo topic and a naming pattern. And then we, we introspect the repo to see like, is, you know, is this an extension? Could we, could we call this? And so, yeah, we just dynamically build up this this big directory of all the, extensions people have made.
Nate:So you can run that, and then there has a little filter at the top. Just put in my handle, and you'll see all my my road extensions. The one I'm proudest of is is a GH screensaver, which is, just a collection of ASCII animations. So it's like, fireworks display, oh, pipe like, the pipes, the classic pipes Yeah. Thing.
Nate:But in 2 d ASCII, somebody contributed, Game of Life, little thing. It was cute. My pitch was like, you're waiting for actions to run. You just wanna look at something pretty. So you run, do you have screensaver?
Nate:Get a random screensaver. My most recent thing is probably one of the most cursed things I've ever done. It's called GH chat, and it is a real time chat application in GH in your terminal, backed by the most rugged and stable of databases, gists. It's
Brian:I guess I so my original, tactic for open sauce was using gist, and that's how we're storing data. So I'm I'm right there with you.
Nate:Rules. I yeah. So, yeah. So you can, you you run g h chat and I'll give you an invite link, and then you can send that to anybody. And they run, you know, g h chat with
Brian:the Is it the comments of the gist or is it going in the actual
Nate:It's it's just comments. Yeah.
Brian:Okay.
Nate:And the best part is that, it's, you get an SMTP gateway for free because GitHub just by default will email you for every just comment. So, I would ask people to try out my stupid g h chat command, and then their inbox would just get flooded for every single chat message.
Brian:Oh, forever.
Nate:Because oh,
Brian:I guess you had to go to the gist and unsubscribe
Nate:or something. Exactly. It's maybe I shouldn't have said that out loud. It's kind of an abuse factor. Don't please don't spam people.
Nate:But, yeah, that was a lot of fun. So, yeah, all my weird experiments just end up as extensions now.
Brian:Okay. Very cool. Well, now I know how to browse and now I know how to filter that. Mhmm. I'm definitely gonna check it out.
Brian:I was gonna ask you something else, but I went blank on that. But yeah. So there's there's a future for GitHub CLI. Correct? A future?
Brian:You guys do a road map or anything like that?
Nate:Oh, that's a good question. So, yeah, we do do a road map. And, it's, we try to balance, internal requests with external requests, and the way that we do that I told somebody this last night, and they thought they looked at me like I was crazy, but it's very effective. I just have a script that, it just looks at every single issue and every issue comment in the CLI repo and then just sorts them based on emoji reacts. And that's our road map.
Nate:So if you really wanna see features in the CLI, just get emoji reacting. It can be a thumbs down. It doesn't matter because my script doesn't look. It's Wait.
Brian:Is that script open source? Because I would totally do that.
Nate:It's in my aliases config, which I have, like, an adjusts. It's online.
Brian:Yeah. I'll send you a GH chat link. Maybe you can send me the gist ID.
Nate:I'll send it to you over that. Yeah. It's crude. I mean, it's a simple, API invocation, but, yeah. So we that's that's actually how we inform our our road map.
Nate:But the big, big thing that we're working on right now is, encrypting your GitHub token at rest. I'm like I like I feel bad even saying it out loud because then you realize we don't do that. But soon
Brian:Well, we don't do it until soon. Yeah.
Nate:Yeah. Very, very soon, we will be, interfacing with key managers in different operating systems so that you don't have to just have an authentication token on your hard drive.
Brian:Yeah. Okay. Very cool. Yeah. I, yeah.
Brian:So I I do the g h auth login. Mhmm. And I love that, but I guess it's it's not encrypted for now. But I actually wrote a whole blog post on this because I'd be I had got I wiped my machine when I left GitHub. And, like, through every time I set up a new machine, I'm just like, g h auth login.
Brian:It, like, gets me my SSH key and does all the work that normally would be, like, a whole day. Not even day, but, like, couple hours to do every time you start on a new job. And I'm like, this is so nice. Like, I do give up a little bit not being able to control everything, but it puts it in the right place, and I can make sure I'm always off in GitHub. And if I'm not, g h off login.
Brian:It's my favorite feature.
Nate:I'm glad to hear that. I yeah. I'm I'm I'm a huge fan of that too. And, like, setting up Git for you is, like, sounds like such a small thing. But yeah, it's super, super nice.
Nate:I think the thing that we wanna do soon is, actually have it like configure your, your name and email address as well for you and get, because that's like the next thing you gotta commit to this new repo on a new machine, and then Git yells at you for not having a name. So, yeah, I think we we wanna help with that too. Yeah. I'm glad to hear it's been helpful.
Brian:Yeah. Yeah. I I am have been a big fan of CLI for a while or of the GH CLI. And, yeah, I look forward to continuing to use it. I had not built an extension yet.
Brian:I was it was all my road map of things to do before I left, and it never got around to it. But I think we we actually have some ideas for things to to do extensions with because we do do a lot of stuff with GitHub and GitHub API and Open Sauced. And, that I'd even like the stuff, like the filtering, the credits, I'm like, oh, I'm just gonna look at that code and, like, we'll just get started there.
Nate:Yeah. Yeah. No. I I would love to see that. Yeah.
Nate:I, I don't think I've merged it yet, but, yeah, I'm publishing my guide for running, go extension, teaches you how to you we have a helper library that, expo it it gives you a lot of the code that we use in g h. You get to use it in your go extension if you're running in go. So my guide tells you,
Brian:oh, just a general go CLI extension?
Nate:Yeah. So it's, it's a library called go GH and what we actually extracted a lot of our code out and put it in that. So it's things like, formatting output, like tabular output, sniffing your terminal to see if it's interactive or not, figuring out if there's color support. So as an extension author, if you, you know, say you wanna call an API and then, like, pretty pretty print a table of data, you can just call our library function to do that. You don't actually have to reinvent that.
Nate:And there's a bunch of other stuff. You can, it it'll, sniff your off for you. So as an extension author, you don't have to get people to log in. Like it'll just piggyback on GH's authentication. It's a, it's a bunch of stuff.
Nate:Yeah. So it it's really gets you going really quickly. If you're, if you're working in go, we don't have any libraries for other languages yet.
Brian:Yeah. So you're experiencing go so far. Like, do you think you'd ever go back to, you know, the pearls and of the world?
Nate:No. I love go. It goes great. Yeah. I was like, I had not written it before we chose it.
Nate:We chose it because, honestly, for delivery. Like, we wanted to ship a binary. We did not wanna have to think about people's local interpreter versions for Ruby or Python or whatever. And, the the, you know, the quick compile time, the general just kind of accessibility and and low learning curve and just how easy it is to cross compile and distribute was huge for us. So that's why we picked it.
Nate:And then I've come to really appreciate the language too. So, yeah, no, I, all my side stuff is in, is in go now. Yeah.
Brian:Yeah. It's, it's the language for the cloud. It's,
Nate:I guess. I don't know. It's the language for everything. I, yeah, I've replaced a bunch of batch scripts with it. Like it, I love how it can scale down to like really small tasks really well.
Nate:Yeah. Like, you know, like, Java has its merits, but I'm not gonna replace a bash script with Java code. I'm just not gonna do that,
Brian:you know, but Include the, JVM. Like, do you I guess you could bundle it together, but Go that's the other thing why I love about Go because, like, all that sort of binary stuff, like, I had not really ever been exposed to. And it's, like, shoved in your face by the fog. Like, oh, I guess this is how we do things here.
Nate:Mhmm.
Brian:And, I learned a lot about cloud development and Kubernetes and Docker through Go. Mhmm. But I was building, like, this simple Go REST APIs.
Nate:That's like
Brian:that was my intro to Go. This is like, hey. I'm gonna slurp a bunch of data from ESPN, which was I built an app that basically it was called hustlin, and I slurp data from ESPN's API or it was someone built an API on top of ESPN. And I just wanted to know when there was a baseball game, because if you don't know, GitHub's office is right near the now Oracle Park.
Nate:Mhmm.
Brian:Then it was AT and T Park, but I didn't wanna go to the office when there was a baseball game. And I just wanted to, like, get a text message or run a CLI command Yeah. And just tell me if there's baseball.
Nate:Don't go to the office.
Brian:Yeah. So I had, like, I had hustle and I had is there baseball dot com and and just wanted to know before, like, wake up, like, maybe had coffee, eat no meal. It's like, do I get on the train or just work from home?
Nate:Yeah.
Brian:And, it was it was all ready to go. Cool. Cool.
Nate:Yeah, no, I love it. I, I like to do CLI stuff and go, And, yeah, I, I actually, I run like a little artist community online. It's called Tilda town. And, it's a social Linux server. So you get an account, you get a little tilde URL, like, like in the nineties.
Nate:And you know, we just hang out on the show. We chat and, and share weird stuff with each other. I always call it people think it's a social social network, but, I call it an artist squad. I real, I really feel like we're squatting in, in the cloud. It's like, this isn't what you're supposed to use digital ocean for, you know, a 1000 people come in to hang out on a Linux server.
Nate:But I've been using go a lot there and it's, it's been, it's been so nice, because you know, the server has been around since 2014 and I used to do everything in Python and having to maintain my like body of scripts, which I use for like creating user accounts and, you know, reviewing signups and managing all sorts of stuff, got really painful, like, you know, for, for something that long running to have to constantly be tracking these Python updates, Kylie grim. And so, I do everything in go now and that's been super positive. So that's another, you know, kind of non cloud use case, that, I highly recommend go for. It's, like, little command line programs. Yeah.
Brian:So if someone wants to build an extension or join is there a community around the CLI? I
Nate:don't know. I guess, organically from our contributors. But, you
Brian:just hang out on the issues?
Nate:Yeah. We don't we don't maintain I we might have a chat on, like, Libra chat. I don't even I don't go though. I don't know. Yeah.
Nate:I'm unaware of any community, outside of our issues. Yeah.
Brian:Yeah. And how's that how's that working for you? Like, do you get a you get a lot of requests? Do you just point them to extensions and say, thanks for the feature, but take to the extension. Like, I it sounds like there's a good pathway for people to land on to.
Nate:Yeah. We do that a lot now. You know, but every single issue that comes in, we we read it. I mean, it it's a lot of our time is is is open source maintenance. I mean, we have, you know, we trade off, 1st responder role, and that person's job for 2 weeks is to just read every single issue that comes in.
Nate:Has this been asked for before? Is this part of a trend? Is this a thing that we want? Is it a thing that that we don't want? Should we write it?
Nate:Should they write it? Should be an extension? It's we do that for every issue that comes in. So, we will often say this is a great idea for an extension go forth and we'll just label it and let it sit around. Or we'll say, you know, help wanted.
Nate:Here's what to do. So it's a mix. Yeah. Depends on the the future people are asking for.
Brian:Okay. Cool. Well, I I will definitely be jumping in soon. Awesome. And, I appreciate you coming out and having this conversation.
Brian:And, folks, stay saucy. The secret sauce of the podcast produced in house by Open Sauced, the open source intelligence platform providing insights by the slice. If you're in San Francisco and interested in being a guest on the show, find us on Twitter at saucedopen. Don't forget to check out open sauce at opensaucedot pizza.