The Standup with ThePrimeagen - is AI ruining opensource? (Lost episode)

Episode Date: March 26, 2026

Thank You! https://blacksmith.sh our #sponsor (https://www.youtube.com/hashtag/sponsor) today! Speed up your GitHub Actions AND pay less! https://x.com/terminaldotshop - Want to order coffee over SSH?... ssh terminal.shop This week on The Standup, we break down the real way to contribute to open source… and why most people get it wrong. With creators behind tools like Laravel, Tailwind, and Ghostty, we get into what actually matters: earning trust, fixing real problems, and why “drive-by” PRs (especially AI-generated ones) are doing more harm than good. We also talk about whether open source is still worth it, how it can shape your career, and the hidden realities of maintaining projects used by millions. If you’ve ever thought about contributing to open source… start here.

Transcript
Discussion (0)
Starting point is 00:00:00 All right, all right. Here, let me do a nice little intro. Yeah, yeah, yeah, yeah, yeah. Anyway, sorry. All right, today we are talking about open source, the right way to do open source we have with us. TJ, core maintainer, or used to be core maintainer of NeoVim Adam, creator of Tailwind, Taylor Otwell, creator of Leravel and Mitchell, creator of many, many things, most recently, Ghosty, a super fantastic terminal in which was featured. in an Open AI
Starting point is 00:00:30 video just recently if I'm not if I'm not mistaken yeah yeah that is that is pretty dang awesome all right and so just kind of set the stage for those that don't know
Starting point is 00:00:41 there was this video that was released two years ago in which somebody used ExpressJS as a means to give an example where they forked ExpressJS manually edited the read me and then put in their name
Starting point is 00:00:52 and from there on out approximately every six hours for the last two years ExpressJS receives a PR that it says update, read me, and then has somebody name or the name of the video as the only contribution. And so, you know, this is obviously caused quite a bit of stir in the open source world. People are not very happy about that. I can totally understand why it's even bleeding over into other projects where people are doing the exact same thing, just a different project
Starting point is 00:01:19 like no JS or just pick your favorite project. There's probably quite a few of them. And then a lot of discussion from there, again, to set the stage is like, don't, I've seen videos like I think Theo did one, don't contribute to open source was his video and his big argument is first find the thing you're really interested in. And then once you're really interested in, get involved in the community. And then from there, maybe then you can start doing fixes and all that. And so I feel like we kind of assembled a crack team of people who've been contributing to open source for quite some time.
Starting point is 00:01:48 And so I'd like to hear everybody's thoughts on what is the right way to contribute to open source. So let's start with Mitchell. Mitchell, you haven't been on here in a while. Yeah, yeah, yeah, it's good to be back. And we'll see how long I'll be able to stay on. I'm waiting for someone to come over to my house right now, so we'll see. But yeah, I think there's so many ways to answer this,
Starting point is 00:02:11 but I think in general, like the happiest, the golden path of what the right way is to contribute to open source is definitely what you just said. It's like, join the community, figure out what they're about, figure out the things they care about, figure out the vibes of how they just observe. Just sit there and observe for a little while. And then after that, make a small change. You know, it's really hard. You know, open sources, a lot of trust. You know, if someone who's contributed dozens of patches that I know they're going to always,
Starting point is 00:02:40 like, follow up if something breaks, like, if they do something big and scary, I'm more willing to merge it because I'll be like, yeah, they'll follow up if it's not perfect anyway. And they've shown that they've, they do pretty good stuff. But if you just come out swinging and do something big, then it's really hard for me to like dedicate the time to review to that. So start small and try to focus on like fixing bugs or something. I actually there was like, I don't know this is still happening, but there was this trend for like a decade where people were like, write documentation. And I'm like, please don't write.
Starting point is 00:03:12 If you're a new user to a project, you're not expert enough to be teaching every other beginner, the project. So, like, don't write docs. Don't fix typos. Don't do any of that. Like, it's kind of just noise that doesn't matter that much. Don't refactor things? Refact it. Never refactor things, almost ever.
Starting point is 00:03:32 Even if you're a really serious contributor. Yeah, I think that's my, like, the big picture, but there's just so many angles to it. Whether you're a vibe coder or a handcrafted free-range NeoVim user, you still need CI to be able to build your binaries, run your test, or make your releases. That's where Blacksmith comes in. It takes your GitHub actions, and with a one-line change, makes them faster and more cost-effective. Not only that, but you can finally get visibility into your CI pipeline right when things go wrong. We're happy to have them as our sponsor for this episode, because just like us, this one is truly a no-brainer. Sign up and enjoy faster GitHub action workflows at a much lower price.
Starting point is 00:04:10 Blacksmith, twice the speed and up to 75% reduction in costs. Check them out at blacksmith.sh. Now back to the stand-up. That's kind of interesting. I'd actually like to hear what TJ has to think on refactoring because TJ's name is literally Teage Refactor DV. Lee, he's a big, big fan of it. Well, I mean, you miss 100% of the shots you don't take. So if you, you got to shoot for a refactor if you need one.
Starting point is 00:04:31 But, I mean, my, like, serious answer is if you're new to the project, you don't know why anything is the way it is. And so, like, if you think, oh, well, I know better, I'm going to write this in a new way that wasn't the way it was before. you're likely going to end in either the same spot. I don't know how many times I've started a refactor. I could definitely do it better this time. And then you get to the end and you say, that's the same function signature. Or you just end up in a worse spot that doesn't handle the 37 edge cases that were there before.
Starting point is 00:05:06 Or like some other existing thing like for NeoVim, we have this sometimes where people like, well, just rewrite this big feature in like a new way. It was like, but we're getting free maintenance, free, very low-cost maintenance, or like applying VIM patches to this thing. Like, it should stay exactly the same because we're getting updates from VIP. But there's nothing like, there's no way to know that unless you've been, like Mitchell said, hanging out in the community, seeing that VIM patches are a thing, doing and like understanding like, oh, there's like a whole world of other contributions
Starting point is 00:05:38 like existing in the separate repo that you don't know about. So in general, yeah, a big refactor. as like an early thing of like, I'll show how good I am at programming. They'll really like me after this is a surefire way to get people not happy with the contribution. Anybody else?
Starting point is 00:06:00 Taylor, you've been running an open source project for just a couple years now, right? Yeah, a few years. A couple or 20 or something like that. I can't remember. Yeah, gosh, I mean, a lot of stuff comes to mind. Like, some of the first things that come to mind
Starting point is 00:06:13 are one thing we actually have in our Larval internal, like code guide is read the room where like a lot of times we'll get a PR that just seems like disconnected from the rest of the projects even just in terms of the way the code is structured or the where the method is even put you know in the code base sometimes just like at the bottom of some file because someone stuck it there so like reading the room and like the context of what you're contributing to I think another thing is like I'm always looking for my my favorite kind of poor requests are things that like maybe add five lines of code, but unlock, like,
Starting point is 00:06:48 really, like, tons of developer power or, like, a really great new feature of flexibility with very minimal, like, code changes to the framework itself. In contrast to, like, huge PRs that modify dozens and dozens of files to unlock one niche, like, edge case for one particular user, that's, like, the worst kind of PR for me. Also, I prefer, like, all PRs ideally, come out of real world need.
Starting point is 00:07:18 A surprising amount of PRs to Larravel come from just like people watching other people make PRs and they see one feature come in and they're like, oh, that caused me to have this idea of, wouldn't it be neat if this had this feature? And like it wasn't driven from any real world like use case. It was just because they were watching other PRs come in. They're like made them think maybe this would be helpful too.
Starting point is 00:07:39 And it's just sort of made up in a vacuum. So don't do that. You know, I try to drive most PRs. of real world stuff and that's how like all the features even i myself add to laravel are usually driven out of real world stuff we're building here at laravel very similar to like rails and base camp and all of that um yeah so that's a couple quick things that come to mind i i would assume you get a lot more PRs for laravel uh this is just me completely assuming in a vacuum here uh just because the framework itself and also the code people write with the framework are very highly aligned
Starting point is 00:08:12 and so that they could probably start slunk, you know, spulunking through and try to figure it out, whereas Adam Watham, I assume Tailwind's code base versus the people with whom they serve are very, very far away camps. Yeah. Meaning that,
Starting point is 00:08:24 you know, basically, yeah, we don't get a lot of contributions, really because of that. You're looking for more read-me updates then? Is that the call that we're hearing right now? Yes,
Starting point is 00:08:34 more read-me updates. No, I mean, like, I think like Taylor Mitchell said, my favorite PRs to get are things that fix bugs, because that's actually like saving me time, you know? Or if someone unlocks like some nice performance improvement, you know, things like that,
Starting point is 00:08:51 that's always nice, especially if it doesn't require some crazy reimagining of how some entire subsystem works. But new features, I generally feel like a chore, you know, to receive, especially from someone you don't know. I think it's fine when it comes from someone who you talk to, like frequently who's been in the community for a long time and gets it. But not a good first PR, I don't think. Kind of earn the maintainer's trust with like bug fixes or even just like honestly like responding to other people's issues and explaining why it's like their fault instead of me responding to people and telling them why it's their fault is another good way to sort of like earn trust because it shows. to like oh i actually like understand how this stuff works and why things work this way and um
Starting point is 00:09:44 whatever so in general i think like if i'm not mistaken is you want to recreate the stack overflow feeling where you get a you get like a base level and you can only comment and then through enough comments and umboats you can then gain more and more power so we just want to recreate that but with github a geth social credit score i see where this is going yeah but it would be a per repo social credit score. The thing too, Adam, with what you're saying, I feel like if people are like in the community and they're going to do a new feature, they've already talked to you about it. Like, that's sort of, I feel like kind of implicit in this like discussion here is like it's not the first time you're hearing about it when the pull request gets submitted. They've probably like
Starting point is 00:10:29 been hanging out in Discord or element or whatever like on an issue track or discussions kind of like, oh, I feel like we really need like XYZ. What do you? you think and then you discuss wrong and say okay cool I'll submit a PR not like out of the blue nowhere I feel like that's one of the other things that really like people miss about this is like if you're hanging out in the community you get chances to talk about the feature that you're really missing and then get a lot of feedback like before any code gets submitted yeah and if you don't do it that way you'll end up opening a PR that'll basically get ignored for weeks then you'll get resentful and frustrated because you feel like this person's like being a dick when in actuality it's just
Starting point is 00:11:11 like they didn't have anything on their calendar saying like review the feature that this person invented you know like they had their time was pre-allocated to other things you know so one thing i've got to think about these PRs is like someone someone asked me like hey wouldn't this be a cool feature in Laravel and maybe it would but it's like entirely dependent on the PR itself and the amount of code it takes to build the feature, right? Like, yeah, that sounds great, but like, it's hard to actually know if I would click merge or not until I see the code and like how complex it is. I'm, I pretty much have to assume I'm going to be maintaining it forever, to be honest, because anything can happen. And, um, you know, like, what does it look like? Yeah, we, uh, that's why we,
Starting point is 00:11:56 we have this policy like in, and ghosty and it's in our contributors doc where like, a PR has to be, has to close an issue. Um, if you make a PR, um, if you make a PR, with no associated issue, and our issues, only maintainers can open issues. Users can't open issues. Users can only open discussions. Discussions are where maintainers could do feature design. We could bike shed, we could assess whether something's worth it. And then only a maintainer, or if a maintainer blesses you, which is actually pretty rare, but a maintainer can then convert that to an issue. And then it explicitly says, like, if there isn't no associated issue, you're still welcome to open a PR, but exactly what Adam said. There's a sentence in there. It says, like, I might review it,
Starting point is 00:12:36 in a week, a month, 10 years, I might close it without commenting. Like, there's no warranty whatsoever. I don't need to justify anything. That just might get closed, even though it's perfect. And it's to try to avoid this drive-by, fix a bug, which isn't a real bug, or, you know, it's just a feature or introduce a feature we didn't want. Or, like, I think what Taylor was getting at was, like, a lot of features, it, the actual, like, business logic isn't hard.
Starting point is 00:13:03 What's hard is, like, the last mile taste of how that feature. get exposed, gets exposed to users. And I don't trust a lot of people with taste. And so you end up like getting this PR that's mostly there. And then you're just like arguing about taste. And so I want to do all that bike chitting in the discussion. And a lot of the bike chitting in the discussion is literally about, I don't care how you're going to implement.
Starting point is 00:13:23 It's not about how. It's about what is the config syntax? What is the config name? What does the UI look like with little drawings? It's just that stuff because then you could get the rest working. And you could like iterate on that. you have like a, isn't it like an famous like Amazon thing or something where like every like new projects that was like write the press release first, you know? But yeah.
Starting point is 00:13:47 So with the way that you guys do things, Mitchell, if you are the only ones who can open issues, do you monitor discussions like pretty diligently then to like notice when like a bug is reported from the community that should be escalated to an issue? Or do you just kind of trust that if there's a real bug you, I will know about it, you know? it will get to me somehow. If it's bad enough, I'm going to hear about it. But yeah, for the most part, it's part of my daily morning routine where I sort discussions by date created. And for the most part, we only get like three to five per day. But there's also like we have maintainers.
Starting point is 00:14:19 And we also have like another group of people in the community that we call helpers. There's probably two dozen of those people like significantly more. And they just have triage permissions on the GitHub repo and Discord communities and stuff. And they're awesome. and they tag stuff, label stuff for us. They answer a lot of Q&A and close it. Yeah, it's a cool role. So that's sort of how we look at that stuff.
Starting point is 00:14:46 How do you... I'm thinking that. Yeah. How do you convince people? Sorry, yeah. How do you convince or bring people on for, like, the triage role? Because for some people, I feel like, it's like a specific person that'd be really interested in doing that. Like, are you guys doing anything to find them?
Starting point is 00:15:02 or like how does that work for you guys? It's like, I think it's open source and it's pure sense. These people just appear. They start by not having that role, but they're answering questions and contributing really well to these discussions. And usually it's other helpers and maintainers that recognize these people.
Starting point is 00:15:21 I'm the only person that I could actually like assign people roles. So eventually just gets bubbled up. And now there's enough trust where like if another helper says, hey, I think this person should be a helper. Like I don't even, I didn't just like, sure tagged it. Like I don't look at what they've said. Like I trust that you get the vibes.
Starting point is 00:15:36 And yeah. And yeah. Okay. So then follow up. There's a lot of people that would want to contribute to open source and kind of reciting back that video where the idea was don't contribute to open source. If there's somebody whose goal is to contribute to open source and find a community. And they just want to do that because whether we like it or not, we, you know,
Starting point is 00:15:57 there's especially in many videos and many discussions about this saying, hey, don't, you that shouldn't be your primary goal. There is a ton of, let's say, inverse advertising on Twitter where people are like, oh, I did open source and now I have this super cool job. And there's a bunch of people who want to have really cool jobs. They want to be able to work on these things they really love. And so they see open source as a mean. So there's kind of like this competing conflict of don't do it, but also dream jobs over here with people doing it.
Starting point is 00:16:24 So they, you know, there's definitely a preserve, oh my gosh. I think there's two different ways. to approach it. Like, I think the one thing that we haven't discussed at all that I think is the most obvious path there is just like make something yourself that's yours instead of getting permission from anybody to do anything, you know? I think that's like the easiest way to get started. You know, also learn a lot about the perspective of an open source maintainer if you built your own thing and that's going to help you be a better contributor to other projects as well. And then the other side of it is, again, just like really be hyper-focused on making contributions that the maintainers
Starting point is 00:17:08 are going to be grateful for, which, again, is like bug fixes, answering questions and discussions, like anything that just feels like, man, I'm glad this person is around. Like, they are helping me out. That's going to be how you get your foot in the door to start getting your ideas, I think, heard and listened to and create those opportunities to actually submit people. PRs for more substantial features or things that people are going to benefit from other than like fixes and performance improvements and stuff like that. Yeah, I was thinking the same thing, you know, especially when it comes to like hiring or
Starting point is 00:17:43 getting jobs is like if you can create your own open source project, that I think is ideal. And related to what Mitchell said, like if I see someone apply and they've created some open source projects, I'm going to go out there and look at everything, like how the read me set up, what the config options look like, all the taste type stuff that Mitchell mentioned, I'm going to look at like super close. And that's actually a lot more valuable if I can look at an entire project that you've created versus like a couple PRs that are like sort of an isolation where I might not get like a full read on how you really think about like presenting what you build, which to me is like the most important thing I'm interested in basically if I'm hiring someone on Lareval's open source team is just like
Starting point is 00:18:22 these intangible taste type things of like how you package things. Yeah, the rebate is almost always like more high stakes than the code. When I'm like reviewing open source Yeah, can you write well? Can you explain this well? You know, I mean, that is valuable too. I'll come out from another angle. I think that if you the way I got involved with open source,
Starting point is 00:18:42 because I was one of those people that really looked up to open source. Like I like really, really wanted to be like a Rails contributor. That was like my big thing I wanted to do. And I don't think I ever was. But I was like hunting for something to fix in there. But I
Starting point is 00:18:58 think the best way that to go about it is to become a user of something, find an issue that you really want fixed and then you be the change to fix that issue and then join that community. And like if someone comes into any open source community I've been a part of has a really specific issue they want to fix and they seem genuine about it. There's usually somebody else in that community that will coach you through it. It may not be like the creator of the project, but I've seen this happen and go see a lot. where we've had maintainers be like it's a subsystem expert that could fix that in 30 minutes but because this new person comes they're being kind they're obviously research the problem educated they're
Starting point is 00:19:39 like you know what i'm going to help you through this look at this file um so it's somewhere around there if you have questions let me know and you go off and work on it come back and and that's usually a pretty high bar and then by the time you make it a PR that other maintainer could come in and like vouch for you basically um like it's your work but it was you know coached and apprentice to have whatever you want to call it. And that is pretty common, like pretty old school open source, and it works really well still in the right projects. That's literally what happened to me for my, like, I was the person that got help
Starting point is 00:20:11 on my first open source contribution for NeoVim. I was like playing around with some stuff. You could put a separator to put stuff on the left side or the right side of the status line. I was like, well, I kind of want to put something in the middle. Like, what the heck? Search the issues. and I didn't even know anything about Git or GetUp at the time.
Starting point is 00:20:30 But I found one. And I was like, hey, I'd like to work on this. I don't know what to do, basically, like, you know, sort of in a much longer way and nicer. And someone, like, said, hey, you can go check out this file. You can go do this stuff. So I was like, okay, I opened up a PR. That same person came in and helped me in the PR. And then eventually we had, you know, some back and forth from a few other people.
Starting point is 00:20:53 But, like, trying to write tests, trying to explain what I was doing, trying to make sure that like, hey, I don't know how to do the code style things for this. Like, what do you guys do? And then, like, that was my, you know, eventually got merged, like, into NeoVim, and that was my first contribution that I had, which then, like, jump started me doing a bunch of other stuff. But it was literally like, I had a, I didn't even understand what open source was. You know, I was just literally a really dumb college kid who was, like, playing with my
Starting point is 00:21:23 NeoVim config and I wanted my status line to look different. I was like, I don't know. just be nice and try and figure out what can happen. And then like that that worked out really well. And I mean, a lot of ways changed the trajectory of my career as well. Yeah. I had this really, I had this really similar experience in high school where I couldn't get into Rails, but I found this like rail CMS. And I wanted to, they had, they needed, they were asking for help. So I was like, I will do this. And so I came in, guns blazing, made massive, uh, it wasn't, I'd didn't exist yet. So I made match. It was like patch sets. I was emailing around. And this guy
Starting point is 00:22:02 came out and basically like a dad, really felt like a dad, like scold to me. And it was like, whoa, slow down. Like slow down. You're doing too much. We need tests. I had never heard of unit tests. So I remember I wrote a response, probably on the internet anymore. I wrote a response being like, no, I tested it. I opened my browser and it works. I clicked around. It works. And I didn't know a unit test work. That's more than a lot of contributors do. Yeah And I remember him scolding me again And I remember going to school
Starting point is 00:22:32 Because I was still in high school And I was like seething Because I was like, who's this Old man He's getting in the way of stuff that works And I was so mad It's like such a classic teenager Egotistical angst thing
Starting point is 00:22:45 And he ended up teaching me so much I like somehow came around To like calming down And listening to him And breaking it down and he taught me so much and I think I see that a lot too there's so many really talented
Starting point is 00:23:01 now as me being the old man like there's so many talented young people that come into open source guns blazing implementing the most impressive shit but like leaving a path of destruction along the way and not interacting with the community and blah and yeah there's a lot of like soft skills
Starting point is 00:23:18 to mature on and learn about this process all right so a lot of you or I mean everyone here has been in charge of at least for some period of time of a large open source project. And Taylor, you said that you, that you should just create one yourself. Now that you've kind of gone through the process of creating one yourself, have had a lot of success, you know, creating your scene, the troubles and the upsides of it.
Starting point is 00:23:45 Is it even worth it to create these open source things? And I mean that in a genuine sense I'm not trying to meme because like my time running an open source project, 2015, 2016, the amount of, of just like vitriol and annoyance and just made my life demonstrably worse is the reason why I've largely never gone back to open open source I'll do source available but I just don't really want to ever deal with that again and so I've had like a very opposite I guess experience and so I'm just curious like is it really actually something people should all strive for is to create open source projects you know I mean I can only speak from like my experience over the long term there's
Starting point is 00:24:25 definitely been very dark days in open source, right? Where it like literally distracts from like my personal life or like my family life because of negative things people have said about the project, especially in its like nascent years when it was still like growing and it, um, things like that. And it like really got me down. But I think over the long term, you know, like over a period of years, like the people I've met and the things I've gotten to do because of open source, like far outweigh not doing it. At least, you know, for me. Um, And, you know, there's definitely ups and downs, as you said. And sometimes it feels like there's more downs than ups in the short term.
Starting point is 00:25:03 But in the long term, like the places I've gotten to go or the people I've met online and built things together. To me, I think I'll look back on those times with like a lot of fond memories and like gratitude is really some of the best years of my life. So it's been a very positive thing. But yeah, I mean, that being said, it can definitely be a slog and you kind of have to be mentally prepared to like grow some calluses you know like be willing to just like let some mean stuff fall off of you and people say it but overall i think it's it's been a positive thing
Starting point is 00:25:35 Mitchell you're like a chronic open sorcerer you must enjoy this process and obviously by considering everybody here has been doing it for like a decade and you you've just given tips where people are like oh my gosh i've never thought about it this way you've obviously solved some of these problems in your experience? It's probably just a kick. I'm just like the monk that like is just like whipping himself in the mirror. Like it's probably just that. It's not it's not healthy probably. But no, I mean, I like it. I like it. There's a bunch of, there's a bunch of negativity associated with it. But I think I've, you know, I was on the
Starting point is 00:26:13 the commercial close source side like founder CEO thing. And I think Adam and Taylor, I mean, you're all on that side too now. But, you know, it's the pasture is always greener on the other side like you get the same thing on that side sort of like different different ways but um yeah at least like with open source i feel like um you could you could walk away from a lot of things that you can't in the same way when you're on the the corporate side and also uh you are like kind of doing much more i mean you're giving away a lot and that's really cool so yeah yeah i i think depending on what your goals are it can definitely be a good thing to explore, like getting back to, okay, if you want to create better opportunities for finding cool jobs, I think creating open source projects is good for that, especially if you work somewhere where it's hard to sort of show the code that you write or show what you're capable of because everything's closed source and under NDA or whatever, you know, an open source project is something you totally control where you can just like show people exactly how you would do
Starting point is 00:27:17 things if it were up to you, which is really cool in that sense. And then echoing with Taylor said, I think it is a really good way to just sort of like meet new people who are excited and interested in the same things in the sort of sphere of programming. I don't really know any other ways to do it within that sort of hobby. If I compare it to other things I used to be interested in, like open source is almost like replaced what like niche message boards used to be for me for other things that I used to be into where you would meet people and talk about music or whatever, you know? Um, so I think that's just kind of like where you do it now with with programming stuff. Um, I think, I think, I think another, go ahead. No, I, I was just going to say, I think another thing
Starting point is 00:28:06 for me, you know, I think Mitchell and Adam and I and, you know, teach with NeoVim, we've all been lucky that our open source projects are like very widely used and, you know, And tons of people around the world are using them. And I like find it very satisfying and like a big privilege to like, we get to work on tools that people use every day, right? Like I use ghosty every day. I use tailwind every day. I don't use Neof-M every day.
Starting point is 00:28:30 Sorry, teach. Wait, what? Lots of people do. Taylor, you've been lying in our taxes? And it's like this big privilege, you know, to provide these tools that can make people's professional life a little bit more enjoyable. And I find that like a really satisfying, like, thing and something I take like really serious as a privilege like look not many people get to impact
Starting point is 00:28:52 this many people around the world you know in in small ways and like it's really cool that we get to do that and I find that satisfying and fun to work on and like that's why I like still enjoy improving the framework because if I improve Larval it's like this cool way I get to improve people's lives around the world in small ways yeah I feel I felt the same way like when I was making telescope initially for NeoVim and like people were using it and I was really surprised because that one was much more like me versus like I did contributions to NeoVim but that was like in a system that was already there like making telescope was like kind of me by myself and getting messages from people like oh I'm in Japan and I'm using this I'm like what the heck that's
Starting point is 00:29:38 crazy um that's a like very fun part of it and like one difficulty I think is like a caution for people is like allowing yourself to have those like good experiences but then still not like associating yourself so personally with the thing that when someone doesn't like it you're like oh they hate me i'm a bad person right because like when you let it get when you let yourself get like wrapped up emotionally in the project which is fine you got to like still kind of like put up that wall of like yeah i'm not going to please everybody in my project's not for everyone Some people are just going to think, I'm really annoying. Okay, that's okay.
Starting point is 00:30:19 That's just like, it's just life. So that would be one caution I would give to people, like, who are in the open source world or, like, starting their own stuff. It's good to allow some of those nice things that happen, but don't take it too much to heart because there was an angry person at the keyboard on a Wednesday afternoon or something. I mean, we all probably deal with angry people every day. I think a big part of, like, open,
Starting point is 00:30:44 source maturity from a maintainer side is learning how to how to not let that get to you and yeah and there's various strategies but yeah and the you know the bigger you get the the the the weirder also the anger gets but yeah it's it's everywhere all right so it takes a long time in my experience to be able to not let it get under your skin but I do feel like in the last couple years it really doesn't bother me at all the way that I used to so I think I would just like uh sorry you know Sorry, Prime. The other thing I'd say, too, is just like, when, like, open source is in some ways about, like, no expectations in some ways, right? Like, both, like, I'm going to make something.
Starting point is 00:31:29 I can't expect people to use it just because I worked hard on it. Like, if you do that, you're setting yourself up for a bad time. Or, like, when you contribute, that I get a comment back is a blessing from the maintainer's time. Like, they owe me nothing. so like when I send a issue or a contribution or whatever like I think a lot of people they like hear a story and they say oh that person got a job from a successful open source project I'm going to write open source and then I'm going to get one million TC this year baby six months later on one million TC and you're like first off that wasn't the story you heard
Starting point is 00:32:06 but secondly like putting those expectations like on the contributions or the contributors or the maintainers. That's like, I think, where a lot of people take a fast track to having a really bad time. All right. So, Mitchell, you have probably the most unusual group of maintainers. Because as far as I can tell, the Adam and Taylor, they're much more on the website. There's probably a little bit more of an intersection. As far as the technology goes, people who use Larravel are intimately familiar with.
Starting point is 00:32:36 Hailwind, there's going to be a lot of crossover there. But you're in a Zygland in a language that's relatively hot, relatively new. Uh, still not at 1.0 and, you know, even the recent, uh, 15 update, which you said had a really good impact on your build times also required some basic changes throughout the project as well. Uh, I'd used cursor and it actually was able to make something build by just being like, fix it, make it into the new version. And it was awesome. Uh, so what is it, because I only kind of have an idea of how things work in the, in the web world. What is it, what is, what is, I guess, what is maintaining a project on that side? Is it, is it? Is it, what is it? Is it, what is, I guess, what is maintaining a project on that side? Is it. Is it. Is it. Is it. Is it. Is it. Is it. Is it. Is it. Is it. Is it. Is it. Is it. Is it. Is Is it similar? Is there just equally amount of people that just come in hot and angry? Is there more because then everybody's a neck beard and has the ideal way everything should be done? Or I don't know how the feel is of it all. Yeah, it all feels pretty similar.
Starting point is 00:33:27 I mean, I think you get a lot more for sure. I mean, I think in particular goes to being like a Linux desktop application. You get a lot more of the highly opinionated, my blessed setup must be supported kind of ways. I've been on the website as well, and my experience with the website is there's a lot more uniformity in a way. Obviously, there's tons of edge cases you have to deal with, but it's a lot easier to reproduce things. There's generally a lot more uniformity in terms of setups. There's only, like, practically speaking, there's only a handful to a dozen sort of like browser configurations. Correct me if I'm wrong, but this was my experience that I had to really, really care about. There's a long tail of like other stuff. stuff. And I feel like Mac is fine. Mac desktop development totally fine, pretty constrained set, but Linux is a sprawling kind of nightmare. And I'm committed to supporting it because I use it myself. But we recently took a stand, for example, I tweeted some like some tongue-and-cheek version of it, but we just took a stand on input issues because we're just getting so many people
Starting point is 00:34:34 being like, I use this custom keyboard with this custom firmware with like end layer. and when I, and I, and I only speak Russian, but I live in Norway. And when I type this character, this shows up. And it just reached a point where, like, I'm sure that's a real issue. But, like, I'm so burnt out on input bugs on Linux because everything is just so heterogeneous that you need to fix it yourself. Like, the number of people experience this issue is so small. It's you.
Starting point is 00:35:05 So you need to fix it or it's just not going to get fixed. So I think stuff like that is new to me and I'm figuring it out. And then in terms of the actual maintainers themselves, you know, good maintainers don't care too much about the language. So Zig, I would say most of our maintainers have been excited to use Zig, didn't use Zig before, just picked it up to learn it. That's fine. It's more of like you're finding that like systems knowledge type stuff. You know, this is a lower level piece in the stack. And it's been a new community for me, but they've been great.
Starting point is 00:35:36 I built a small tower defense in Zieg, and it was a very enjoyable time in 013. And so I assume it's relatively the exact same language in 015. But I am actually just curious, I know this is going way off topic. You've now built what would be considered a fairly large, now run for enough time to be able to really see kind of what life's like as you make a bunch of changes, as you have to fix a bunch of bugs. How has the process of using Zig Ben on such a large project? Oh, it's been awesome.
Starting point is 00:36:06 I mean, we have to enter, we, we read and integrate with C and C plus plus code all the time as a comparison. And just from there, building and understanding and maintaining, it's just a totally different level. And there's, you know, most of the maintainers in our group are also like professional C programmers. And so these aren't amateurs. We're like, we're trying, you know, we read Chrome Firefox and WebKit source code all the time because basically, browsers solved font rendering. And so any sort of font rendering issues, we learn from browsers. And so we're reading that all the time.
Starting point is 00:36:40 And it's good code. Honestly, all of those are the highest quality C&C plus you're going to find. And it's incredible how difficult it is to read that compared to the equivalent ZIG. So I think that Zieg's been hugely successful for us. Each minor release, which is a pretty major release for Zig, 0.12, we started pre-0.10. And so we've done 0.10, 11, 12, 13, 14, 15 now. Each one is significant. 0.15 took me about three weeks.
Starting point is 00:37:10 And that was after a maintainer already spent another three weeks making it all work. But because of the seriousness of the changes, I had to redo it all myself. I trust them, but like I just have to understand it myself. So I went and redid it. And I was able to hit roadblocks and just copy from theirs and be like, oh, they figured it out for me, nice. And then learned something. And it still took me three weeks. and so that's like I think I've said this for I still think Zig is too early for like you know a company to use it reliably for a product like that would be kind of a waste of time for a startup to be doing but I think it's heading in the right direction and I love it
Starting point is 00:37:46 all right well do we have any final words on open source anybody have anything else you want to contribute to on contributing the right way to open source it's October baby I was we were talking about it before you came on from of like well this was what i was thinking to will l l lm's in the future when it's october be more likely to create read me updates because of the source training data because they have the system prompt at the time just like how it gets lazier in the summer especially if it's quad uh they will they also have this problem that forever in perpetuity october will be documentation update month for l lms they refuse to do any other work the old October surprise, I believe, is what they call that. It's a different context, actually, but yes.
Starting point is 00:38:39 Oh, okay. I mean, I think it's a whole topic, but I think it's a whole topic, but I mean, I think there's a whole new frontier. I would actually be really curious how Adam and Taylor are receiving this, but there's a whole new frontier of like contributing with LLMs in your toolkit. and that's like changing a lot of my viewpoints on on how to be a good contributor. I don't think I've seen any LLM-driven PRs to our stuff yet, honestly. Wow.
Starting point is 00:39:15 Really? You don't get like the PRs with like they all have the same basic initial comment, the same format. Maybe they do something. The header is in every single sentence. Yeah, the bullet points are all the same. If you're submitting a PR with AI and you don't, want to get caught at least tell it no emojis like I get them every day I get several a day
Starting point is 00:39:35 actually really you want a day at least I you know it's funny Taylor's you said earlier that you new contributors you look at their GitHub repos and stuff I do the same thing I like kind of like you know like Doc GitHub docs them a little bit and try figure out what they're about where they work and what they're doing why they're contributing or whatever and the quickest way that I'm like oh this is going to be some this is going to be some slop is you find mine like a ton of AI, like crap. And I'm not anti-AI. I gotta say that.
Starting point is 00:40:03 I'm not anti-A-I. I literally spend like $25 a day in AMP tokens. I love it. But yeah, there's some bad stuff out there. Yeah, if I'm not mistaken, you're the one that convinced me to re-give a in-line auto-complete another shot and using Super Maven since the end. Oh, cool.
Starting point is 00:40:20 I didn't know that. Yeah, yeah, yeah, because you said that you just do not think that any developer should ever not at least have that. You said something along the line that was exceptionally, what's it called, very, like, strong stance. Yeah, yeah, I remember that. Emphatic. That was the word I was looking for. I remember that. And I'm actually really sad because tab complete and inline complete hasn't been down in like a very long time. And it's really nice when it's down because that's when I close my laptop and don't work for the day. So, yeah,
Starting point is 00:40:50 if like co-pilot or like more of those could go down, that'd be sweet. I'm interested to hear more about like and Mitchell you too because I know you both have been talking about it like someone submits a PR it you're pretty sure it's AI or like not not and not like oh they carefully walked through an agent workflow over 10 hours and did all of it but like uh you know fix this for me big bug number seven
Starting point is 00:41:22 and then just like well I did it what like what's the workflow for that What would be like the better way for someone to try and if they're using LLMs to do that? Like, what are your thoughts there? For me, the best experiences I've had with Slop in particular is if you're honest that you have no idea what's going on. If someone throws a PR up, and this has happened like once a week probably where they say, I used whatever, codex, Claudecote Code to fix this bug. I don't know Zig. I don't know anything that it did.
Starting point is 00:41:56 but I'm just sharing it with you. That's actually helpful because I don't need to do like a deep review. I could just look at it and like get a quick like, this is heading in the right direction, interesting. Or I could be like, okay, thanks. This looks pretty bad. I'm going to close it. Glad it works for you or whatever.
Starting point is 00:42:10 The problem is when people post slop and they're like really serious about confident about that they should be merged and be fixed. And so from the slop angle, that's what I would say. And so we require AI disclosure in our project, but that's part of the reason. Do you actually get people that do AI disclosure? disclosure? Like, do they actually, does everybody do it? Or have you, like, caught somebody? And they're like, wait a second. That argument's all goofy and it's ordering. I know you,
Starting point is 00:42:34 you slop. And then like, dang it. You got me. Like, yeah, I want to hear Rick Taylor has to say, but I'll say on that point, um, it's been really successful. I would say we catch probably like one or two people a week that don't disclose. But also, I think everybody except one person, uh, it just was an accident. They're like, oh, I didn't read that. Yeah, here it is. Um, but there was one person that super tried to hide it. And I eventually got, you can find it on. I, I eventually got to the point where I'm like, I'm just going to, like, this is not productive. If you can't be honest about your AI usage, I can't trust literally anything else you're doing. So I'm just going to close this.
Starting point is 00:43:05 Yeah, we get quite a bit of noise. And I mean, I can echo what Mitchell says about, like, it's helpful if they tell me they're using AI because I want to know their confidence in what they're submitting. A lot of times it feels like they're just like shooting in the dark. And honestly, what I'm seeing a lot lately is like refactoring PRs. where it looks like what has happened is the contributor has like fired up Claude Code and been like, find a refactoring opportunity in the ORM of Larval and just let it come up with some random refactoring
Starting point is 00:43:38 and they've then submitted that PR. Like that's what it feels like is happening on a fairly regular basis. Which is, you know, I don't know. It's not super helpful and probably not how I would go about contributing to open source. Taylor, say it how you really feel. No one's even listening. It's fine. There's nobody out here.
Starting point is 00:44:00 Fuck those people. Yeah. You know what? There we go, Adam. Yeah, I don't know. I action PRs really quickly. So I have to action like 20 PRs a day or they're going to get ahead of me. And so like I just really quickly close those.
Starting point is 00:44:13 You know, like it's not even a second thought. Because I just don't have time to really mess with it. Yeah. No, there is something to that where, I mean, on the inverse side for those that are making PR is just simply making making a PR because the home person came I'm going to drop. See you, Mitchell. Thanks, dude. See ya. All right, Mitchell has to drop. He had someone coming over
Starting point is 00:44:33 to his house to do some fixing and so he pre-warned us that it was going to happen at any moment. So he's gone. All right, uh, I there is something to be said on the inverse side, which is if you're attempting to contribute to open source and you want to fix something, you don't know how to get started
Starting point is 00:44:51 and you do just simply follow whatever the LLM says. You don't actually take the time to look at like why, are the things in place. You don't debug your way through print effort, whatever you do. It is like you are wasting someone else's time. I think there's something big to that because it's going to take a big hit to your credibility.
Starting point is 00:45:06 Like if you do that enough times, it's going to be, you're going to like ruin your relationships with people. If you do it one time. That's your first impression. That is your first impression. It's like a thousand times more impactful. If it's the first thing you submit to repo is,
Starting point is 00:45:19 I don't know what this does and I'm going to pretend that I do. I will never trust you again. True. See, the thing is, that I have Began who also submits a bunch of what's it called AI Generate stuff, but I love Began and so I let it slide even though I'm like, stop it,
Starting point is 00:45:32 Biggin, stop it. Just a thought. So, Taylor, you're saying you're seeing this a lot, though? Oh, yeah, every day, for sure. And the range is like, for you, is it most of them are just like this random refactor thing, or is it
Starting point is 00:45:49 like we're associated with an issue? Like, I'm kind of interested in sort of this distribution. It's a lot of the late here. lately over the last few months, it's a lot of the random refactoring. And the PR title will literally be refactor X, you know. And there will be no like bug that is being fixed or no like performance improvement. It's just like code organization or like method extraction or just some random thing like that. That it just doesn't really have any net benefit.
Starting point is 00:46:18 And like if the code's already working, why would I merge this when this has the potential to make it not work anymore? You know, like, yeah. Yeah. That is, that is kind of a bizarre thing to do because I guess I've been around software long enough to know that drive-by refactors almost exclusively just end in sadness. And so it just seems like a weird way to try to like meet somebody for the first time and also be like, I rewrote part of your code. Oh, would you get me? Nothing. I just made it different.
Starting point is 00:46:46 You're like, I don't know if I like, like, how does that trade-off? Like, how does that trade-off even exist where you're like, this is a good idea? This is a good place to start a relationship on. I mean, my guess is people want to be able to put I refactored Laravel code into a resume and try and leverage that to get a job. Like, that would be my assumption. I think it's just kind of like a bit of sort of like a thing that people who are maybe a bit less experienced, a bit more junior care about, you know, like when you're early in your career and just this idea of writing perfect code, it just sounds so fun. or you've read some blog post that gave you some rules about how long your methods are supposed to be or whatever, you know. Three to four lines.
Starting point is 00:47:32 Yeah. Yeah. I just looked at this week, I've gotten eight refactor PRs so far. Whoa. That is so many. Any PR that has the word single responsibility principle in it is closed. That's auto close. I'll be right back.
Starting point is 00:47:45 Yeah. That's auto close. Yeah. I think that's why we have agents for that now. Yeah. just monitor. Sometimes I wonder if people like overvalue contributing a random PR to like something like Larval or Tailwind versus just creating something of your own like Adams.
Starting point is 00:48:04 So like to me that's like 10x or 20x cooler than like I got a random refactor PR merged into Larval in 2016. You know like I don't know. And it's like half the reason why people like you and I invest so much effort into making sure the things we build are like extensible. from exactly because that avoids all sorts of PRs coming our way it lets people test out ideas using our sort of integration points which we honestly usually try to make as like extremely open and flexible as possible and it's a good it's good for us because we can say you know what
Starting point is 00:48:42 I'm not ready to like merge this go build it as like package or as a plug in or whatever and people can go and do that we have these cool tools called package managers that let you like bring in other code into your project, you know, which is super cool. I'm calling Ginger Bill. Yeah, I know. Some people don't think they're good. Yeah. Yeah, that's right, Taylor.
Starting point is 00:48:58 Package managers are evil. Yeah. Mitchell doesn't like packages very much either. Oh, man. Missed. We had the same thing for NeoVim, which was like, you know, obviously lots of extensibility things.
Starting point is 00:49:12 And there's been a lot of things that basically took a lot of time to mature and iterate on a separate, you know, feedback loop as, like, external repo that eventually get merged into NeoBimcore. And I think that's a way better strategy too. If you're like, oh, there's this big thing that Larval needs or something, right? Go and build like the external version of that. iterate, iterate, iterate, iterate, iterate, not on the release schedule and with the
Starting point is 00:49:41 same requirements as Larval has, right? And then you can come back later and see it. I literally have a GitHub saved response that says exactly that, basically. you should go build this as a package and see if it gets traction and then come back you know yeah yeah and that's been super successful especially like i think the thing people don't get which is like the other message for contributors that is important to hear is like most of these like open source repos do not have like a Microsoft level triage team where they have you know like five people on staff to read issues full time, right? Where it's like, oh, we're Microsoft's budget for VS code is like
Starting point is 00:50:25 multiple millions of dollars per a year, right? And so yeah, that's fine. You can just like, oh, they want to have a built-in package manager that does all of this stuff and whatever. Cool. They can put a few engineers on that and spend several million dollars. But like your random open source repo does not have that same capability or budget to like solve those things. So, you know, like Taylor, I know you feel it all the time, I'm sure of. I cannot maintain this forever, like you said before. I cannot be the one where this is my thing for the rest of my life. I don't want to spend all of my life writing a Laravel package manager or something.
Starting point is 00:51:03 Right. We have Composer. He did build a Larval package manager. That is true. Before Composer existed. Oh. And then you got to delete it. Yeah, pretty much.
Starting point is 00:51:15 Yeah. That feels good. Better. SPR. Mm-hmm. All right. Well, thank you, everybody, for being here. I think we got to wrap this up.
Starting point is 00:51:23 We got to wrap this up. Yeah. That sounds good. We've got seven-year-olds to kill him Fortnite. Nice. Yeah, yeah. Nice. By the way, we do have to do a DHH-F Fortnite something at some point soon because it would be so funny.
Starting point is 00:51:39 Programmer Fortnite tournament. That's what it's feeling like. E-sports. I don't know about tournament. We're casual. That whole tournament word kind of hurts me. Oh, just like with. With programmers only.
Starting point is 00:51:51 With programmers with kids only. There you go. Yeah. Now we're talking. How we're talking. At least two as well. Yeah. All right.
Starting point is 00:52:02 Well, thank you everybody for joining of we had Mitchell Hashimoto, creator of ghosty and many other open source things. Taylor Otwell, creator of Larval. Taylor, is there anywhere we can find you that you want to give a shout out of it for? Larval.com, baby. I don't know.
Starting point is 00:52:17 X.com. slash Taylor Outwell. Nice. Let's go. And how about you? Adam? Adam is the creator of tailwind and also a very handsome dude.
Starting point is 00:52:28 And we'll probably, and it has the ability to beat me up. He looks, he's very fit man. Taylor, where can people find you? Besides for the gym. I mean Adam.
Starting point is 00:52:37 Sorry, Adam. Yeah, the gym. Please don't beat me up for the mistake. No, just probably on Twitter, X, whatever,
Starting point is 00:52:45 X.com slash Adam Wadden. That's where I hang out the most. Awesome. And finally, TJ, the man, the myth, the legend, I just want to be Teage, I want to code, I want to dance, I don't want to go home. Oh, yeah. Where can people find you, TJ? Teage DV, everywhere, basically, except GitHub, but I don't want you to find my GitHub anyways. So take that, chat. Got them. Boot up the day.
Starting point is 00:53:11 Vibos and errors on my screen. Terminal coffee. Inhale

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