A Happy Day For Rust
Is this better now?
Steve Klabnik:That one is definitely better.
Bryan Cantrill:Yeah. Good. We didn't I think Oh, wait. We did nothing. Nothing, and I think that fixed it.
Bryan Cantrill:We rearranged the Coke cans and plugged things in. Diet Coke cans for
Adam Leventhal:held hands and rebooted it.
Bryan Cantrill:We didn't hold hands in the Diet Coke cans. So there's like I mean, like, let's get some of this. Let's get the details correct at least. Okay. We have a guest.
Bryan Cantrill:Significant improvement, but there's still issues. Well, they're always still I mean, they're always always issues. Still issues. Yeah. I think that's like that's like that's like every every performance review.
Bryan Cantrill:I know pretty much.
Bryan Cantrill:Like, go ahead.
Adam Leventhal:Just leave that leave that comment on your iTunes podcast. Please. Be like,
Bryan Cantrill:you're excited and friends. Significant significant improvement, but still issues. But still issues. It's like, I see this is usually written in permanent marker. This is like, wait a
Adam Leventhal:minute. Why is that a tattoo? We have a guest.
Bryan Cantrill:We do have a guest. Where are you, guest? Yeah. What a what a circus. Alright.
Bryan Cantrill:Well, hopefully, what's going on?
Steve Klabnik:Normal day at the computer factory where the audio never works.
Adam Leventhal:Yes. I am in the office because road construction started on my street thirty five minutes ago.
Bryan Cantrill:So I busted another car. That was like a, that was not a, like you wanted to celebrate our work time recording of the podcast where I'm being at work. That was a like, Oh my God, there's construction. No, like there's construction
Adam Leventhal:right outside my window. Oh wow. Yeah. Brian had the scramble to find pants.
Bryan Cantrill:That is not true. I think it's But yeah, the you said I am coming in to the litter box and I don't want to walk in
Steve Klabnik:on you not wearing pants. Yes.
Bryan Cantrill:And I thought what I was walking in as I read that and I thought you said I'm coming to litter box and I'm not wearing pants. I'm like this is getting this is getting a little too familiar.
Steve Klabnik:Yeah.
Bryan Cantrill:I feel. I mean like, look, look, we do I mean, we do we've we've we've shared a room on the road before, but, know It's been a minute. It's been a minute. Exactly. I know.
Bryan Cantrill:Before or after the last time I had friends help me move, I feel that's another kind of I bet it was like work Shanghai. Just three. Think that is before the before the last time. But know. Twenty two years ago.
Bryan Cantrill:God. I know. That's the Back
Adam Leventhal:in the stone ages, we were so committed to saving money for the stupid company that we were like, sure, we'll just share a room.
Bryan Cantrill:That was a I don't even recall the decision process that led us to that. No. Have I have I confided how that had an enormous influence on me though? Have I told you this?
Adam Leventhal:Yes. Yes. I know that I know that rooming situation changed your life.
Bryan Cantrill:It did change my life. I'd like, how does
Adam Leventhal:it explain because otherwise Like it's actually less weird.
Bryan Cantrill:It's actually it's actually less weird. And people's minds are gonna scrape now. Little spoon only. They no. Okay.
Bryan Cantrill:No. So this is actually less weird. I know you're right. We have to at this point like we have to go all the way through to actually make it less weird. No.
Bryan Cantrill:Because we were both I I had been using for no good real reason. I'd been using an electric shaver. I barely need to shave at all. Like why am I using electric shaver?
Steve Klabnik:Well
Bryan Cantrill:You were like where am I right now?
Adam Leventhal:The good thing is was your mom got you the shaver. Right?
Bryan Cantrill:You know, actually the the the this is this is sad. Single parent household, this this had been left behind. Oh, god.
Adam Leventhal:So it was like a it
Bryan Cantrill:was it was a was a Norrellco, so now we're way too much information. It's like a Norrellco from like 1971 and in particular it's not designed to adjust itself based on the frequency of the AC current. So so it would go like twice as fast in Shanghai. So it's like losing its mind in Shanghai. And I am like having to like vacuum my face very slowly and efficiently.
Bryan Cantrill:Okay. And admittedly, it like didn't enter my mind that like, well, maybe you're using a neural co from 1971 and that's part of the problem. And we were both like had to shave before doing whatever We ordered a presentation. Which makes it sound like we were on some like black tie dinner, but which it definitely was not. The I and I think we was this before or after the extremely racist remarks from the VP that we were traveling with?
Bryan Cantrill:I was just trying to
Adam Leventhal:place those extremely racist remarks by that VP.
Bryan Cantrill:Oh, god.
Bryan Cantrill:It was so bad. It was Both
Adam Leventhal:of us trying to like disappear. Like trying to conquer ourselves into non existence.
Bryan Cantrill:Exactly. Please let me go somewhere else. But the and you were shaving with a razor Yeah. And you were just like in out done. Done.
Bryan Cantrill:I was and I'm like Efficient. Very efficient. And I never thought about I had been like here I'd been and this is, you know, like
Adam Leventhal:So you are trying to change start your gas pedal. My
Bryan Cantrill:mom didn't teach me how to shave. Okay? Are you happy now? Yeah. Are you happy?
Bryan Cantrill:You're you're a real father figure for me in a lot of ways.
Adam Leventhal:Anyway, you're welcome to the
Bryan Cantrill:podcast everybody. We don't even know what we're talking about today.
Bryan Cantrill:No. Alright.
Bryan Cantrill:Sorry. I'm like so sorry in so many different dimensions. Dirk Jan, first first of all, welcome to the podcast. Steve, thank you both for joining us. And just to give some give some oh, should
Bryan Cantrill:we give some context?
Adam Leventhal:Sure. Orient to everyone?
Bryan Cantrill:Oh, should we orient everyone? We're not here nearly to talk about too much information about the the life lessons I've learned from Adam. The so I wanted to talk about actually a pretty interesting thing in a lot of ways. We there was a an issue with with rust up that had this kind of had outsized effect and was wound back. But then we're gonna get to all of that.
Bryan Cantrill:I think there there's there's a there's a lot to talk about though. But maybe we can start, Steve, by giving it an introduction to Rust Up. Rust Up is a really important part of the ecosystem. I think it has been around as long as I've been it's since 2018 at least. I I Yeah.
Bryan Cantrill:So it was around in 2015.
Adam Leventhal:I you know, I don't remember 2015.
Steve Klabnik:It is a it is a pre one point o tool.
Adam Leventhal:Yes. Okay. Okay.
Bryan Cantrill:Got it. So Steve, can you maybe give us some history of Rust Ops? Because I think Rust Ops has been a really important kind of linchpin for the accessibility of Rust approachability of Rust.
Steve Klabnik:Yeah. So one of the things that helped Rust, like, succeed overall, not toot my own horn too much, is that, like, me and several other early people had had a lot of experience in previous language ecosystems. So we kind of had, like, a list of stuff in our head that's like, this is all the stuff that you actually need to have to make a language successful. And so one of those things that was like very obvious to us was, well, you're gonna wanna have multiple versions of Rust installed and you wanna be able to manage them. And so there's like a very clearly an existing, you know, pattern for that, which is to create some sort of tool that lets you manage language versions.
Steve Klabnik:And so kinda like knew that was important.
Bryan Cantrill:It it Steve, this is coming as like a it sounds like this is coming as a positive lesson from something that other Ruby in particular did right? Or where is this kind of language come from?
Steve Klabnik:There are other languages too, but definitely like I brought over a bunch of Rubyists. There was a long time when I was going to like just Ruby conferences and talking about Rust. So like, you know, I was trying to bring everybody over and there's actually kind of a longer tangent we may or may not get into about that a little bit later, but it's kinda interesting. But the point is is that, like, Ruby had actually several competing tools. And actually, now that I'm thinking about it, this might even be why I was, like, kinda a little stressing about the situation.
Steve Klabnik:So the deal is that, like actually, this is the commit graph says 2016. So I might actually be wrong, and it might be 2016. So there was also there was also okay. No. This is why this is like, whoo.
Steve Klabnik:Remembering history is kinda hard. So the deal is is that we did know we needed to do this. And in Ruby, particularly, there was a couple different tools that did this kind of thing. And the first one was called RVM for Ruby version manager. And it was written by a guy named Wayne Seguin, and he did a bunch of different stuff in the Ruby ecosystem, but he wrote this sort of, you know, this Ruby version manager as it says on the tin.
Steve Klabnik:And the strategy that it took technically was kind of interesting, but sort of like it became so Ruby, like Python and some other languages of that vintage essentially operated under the assumption that you only had one version of everything installed on a computer. Like, it just like, the the Ruby gems, which are the package directory is like a global directory on your computer, and it, like, kinda just assumes that things works. And so once you sort of get into this, you know, future world where it's not 1995 anymore and, you know, you have developers who have multiple projects and they need multiple versions of a language installed and they kind of want packages to be scoped per project instead of like per computer, you sort of end up trying to take this existing code base and, like, trying to retrofit, you know, all of this sort of, like, almost sandboxing onto an environment that was just not designed for it at first. And so tools like RVM were, like, honestly pretty heroic and same thing with, some of the Python equivalents that that existed because, you know, frankly, they're trying to, like, fight the language itself in some ways or, like, the implementation.
Steve Klabnik:So what this means is though, it because it's, how you install your tool chain, it's also the first point of contact for users with your tool chain. And therefore, it also is an opportunity to either succeed or fail at managing those users' expectations. And so, like, a lot of people end up getting
Bryan Cantrill:boxing experience for a for a program Yeah. Exactly. There's something to said for that. It was like, it's something that, like, wasn't taken seriously until I think Jobs is the first one to really take that seriously. Feels like from a consumer electronics perspective.
Steve Klabnik:Is that
Bryan Cantrill:that's great. I don't think that's a total misread. And
Steve Klabnik:Steve Steve Johnson wants me believe that even if it's not true.
Bryan Cantrill:Like, sure.
Steve Klabnik:Like, he probably is, but also, like, you know, he wants to take credit for that. So it's fine.
Bryan Cantrill:Yeah. Absolutely. But it's like it is a kind of unboxing experience of like, you know, and Steve, I like the way you kind of phrase that. It's like, this is your first touch point with a potentially new user. And if things go like, you might not have that much time.
Adam Leventhal:It's the most like vulnerable point, right? If they cut their toe, they're feeling like, never mind. Forget it.
Bryan Cantrill:The whole thing's broken.
Adam Leventhal:Exactly. Why would I, like, I, And and actually, I'm sure everyone has had that experience. Like, I've definitely had that experience where, like, the first program I ran in Babel or whatever, like seg faulted. I'm like, well
Bryan Cantrill:Is Babel a thing or did you just make that up?
Steve Klabnik:That's a thing. It wasn't. I was
Adam Leventhal:like, is it transpiler for JavaScript?
Steve Klabnik:Yeah. Is that a thing? Yeah.
Adam Leventhal:Everyone play a lot. It
Steve Klabnik:it was actually really important in the history of JavaScript. Like, honestly, it's like it's like kind of a big deal. And part of that is because of like being able to forward port language extension stuff. Like, it the name is appropriate because the idea is that you're taking all these different variants of JavaScript that, like, may not even be kinda, like, real and then porting them to existing JavaScript. You could, like, try out, like, a proposal for JavaScript by including the appropriate Babel plugin.
Steve Klabnik:And so, like Wait. Yeah.
Bryan Cantrill:Okay. Is this, like, Babel?
Adam Leventhal:Yes. Like, the Tower Of
Steve Klabnik:The Tower Of Babel?
Bryan Cantrill:Yes. It's
Steve Klabnik:not it's not the Tower Of well. Yeah.
Bryan Cantrill:I've been let's move right along.
Adam Leventhal:Anyway. Discussing it for five thousand years.
Steve Klabnik:Yeah yeah.
Bryan Cantrill:Well, I guess I I my bloodline has always pronounced that differently. Really? It's Yeah. You know what? I don't need to confide how I was pronouncing it.
Bryan Cantrill:The point is I know how to pronounce it.
Steve Klabnik:You got babble. You got babble or babble.
Bryan Cantrill:It may or may not be a a transpiler for JavaScript. That seems like very like I don't know. This seems like very auto generated. Dokyeon, are you here? Are we do we have
Dirkjan Ochtman:I'm here. Can you hear Hey.
Bryan Cantrill:And speaking of mispronunciation, am I butchering your name? No.
Dirkjan Ochtman:It's fine. I I pronounce it Deokyeon. Yeah. There we go. Okay.
Bryan Cantrill:Yeah. I well, although That's what you were trying. No. No. I know.
Bryan Cantrill:This is the thing. This is like I mean, because you're Dutch. Right? I mean, I think that the Dutch yeah. The the Danish are similar where they will you will attempt to pronounce it and they'll just say the thing again.
Bryan Cantrill:And then you say it and then they say it and you're like, I said it.
Adam Leventhal:Like I'm saying it right, right?
Bryan Cantrill:You're saying you're you're I can see that
Adam Leventhal:you're true. I can see you're saying
Bryan Cantrill:it the way
Steve Klabnik:you're saying it.
Dirkjan Ochtman:Close enough. Right.
Adam Leventhal:It's close enough. Exactly. The best it's going to get.
Dirkjan Ochtman:Right.
Bryan Cantrill:So okay. So sorry, Steve. We were back on Yeah. And to a bit.
Steve Klabnik:Yeah. RVM unboxing experience, first time you get to you know, in touch with the tool chain. And, like, the tool chain was kind of resisting, you know, your ability to do that. I mean, I'm not gonna say upstream is unsympathetic to this, but, know, there's just a lot of history there. You know what I mean?
Steve Klabnik:So you have to find all those edge cases and fix them. And so, like, the the technical strategy that RVM took to implement this, I don't like super wanna get into the details, but the point is it's not the only way to accomplish this task. And so other people kind of had gotten a little bit fed up with some of the, like, what they perceived as like bugs in RVM, which were really about bugs in, like, trying to wrangle this tool chain at all, plus some aspects of its technical implementation. And so then there became a second tool called RBN, e n v, that sort of was like an r b m or RVM replacement. A lot of people, like Sam Stevenson wrote RBN originally, if I remember correctly.
Steve Klabnik:And, like, Sam, there there was some there was some drama way back in the day. I don't wanna, like, get back into it because I think it's all, you know, dead and buried at this point in time, but I I don't wanna say this is Sam's fault. But let's just say that in general, the community, some RBN users got very shitty about RBN or RVM and kind of, like, talked about it in a very, this obsoletes this piece of shit tool, and, like, we have a great thing instead. And so there was, like, some degree of, like, bad blood. And then eventually, Wayne ended up, like, quitting open source entirely, and I don't think I've talked to him for, like, fifteen years or something at this point.
Steve Klabnik:I hope he's doing well. But, like, because essentially people were just trash talking this thing that he was, like, selflessly working on for free in his spare time that was holding up every Ruby install ever, essentially.
Bryan Cantrill:Oh, interesting. I guess it it predicts to have bad blood between things that are, like, have very close pronunciations.
Steve Klabnik:It's like, wait
Bryan Cantrill:a minute. Did you say r b I don't know we friended friend or foe. Are you did say r b m for r b I mean, we're what this is the RBM? No. No.
Bryan Cantrill:Wait a minute. This is the the Judaea people. Just find exactly who's from Judaea.
Steve Klabnik:Yeah. So anyway, not not placing the blame on that drama on any specific person, but just like that's my recollection was that it got a little heated somehow over things, and then and then Wayne quit. And so that was, like, pretty frustrating and and a little upsetting, but, you know, life goes on and things happen. So so that's probably honestly, part of this drama is that situation is probably in the back of my head. I literally didn't think about it until I started, like, explaining this history, actually.
Steve Klabnik:And so that's maybe why I got a little worried when this happened because I'm, like, remembering how that happened.
Dirkjan Ochtman:So Yeah. The the Anyway
Bryan Cantrill:that this this can be a very this is an aspect of an ecosystem that can become divisive.
Steve Klabnik:Yes. And, like Yeah. You know, I I definitely was involved in a lot of various Ruby drama over the years, and, you know, I had complicated feelings about all that. But just like, you know, community expectations and making everybody get along reasonably well and all that stuff was like very well on my mind. And like, it also was a big part of like me getting into Rust, but I'm not gonna get on a tangent right now.
Steve Klabnik:Maybe that's a fun thing to talk about later. But the important part is, like, we knew that you needed some kind of tool like this. And a lot of a lot of scripting languages have a tool that's very similar and, you know, do various things. And so we're like, okay. We we need to have some way of managing the tool chain.
Steve Klabnik:And so RustUp.SH was born, which I believe was what it was called. Now that I'm looking at the repo, it might have been something else that I don't remember. But there was sort of like an initial version of RustUp that was, like, written in shell, if I remember correctly. Like, it was a bash script. Right.
Steve Klabnik:And I believe that was Brian Anderson.
Dirkjan Ochtman:I think Yeah. I think the first commit is from 2016 something February.
Steve Klabnik:Yeah. Yeah. Well, that's so, like, I was looking at the history on GitHub and, like, Rust Up Rust Up is 2016. But also, I feel like, well, October 2015, there was like an initial 150 commits apparently it says. But I thought that we did it before one point o because I thought it was like really important that we had something going on.
Steve Klabnik:And so I was also looking at RustUp.SH, and it also has April 2015. So I think that that's sort of what happened was like the and and there is, like, a couple commits at the October. So I think there was sort of, like, a six or nine month period where rustup.sh existed, but then it was very clear that, like, a pile of bash scripts is not a good way to go. And so rewriting rust up in Rust was became a thing that Brian did as well. And so I think that there was, like, a pretty short history there overall, but I probably should have looked that up before the episode.
Steve Klabnik:Oh, well. But that's, like, my my recollection was, like, we knew we needed this thing. Brian made it happen. And so then, you know, that that became the thing.
Bryan Cantrill:And then and then Rust up, I mean, unlike, I guess, the Ruby community where there ended up being two of these things, Rust up is really the way to do this and became a really important part of the ecosystem.
Steve Klabnik:A significant difference about Rust's mentality versus a lot of other language ecosystems is that like the Rust project understands that it is producing a product and has like a very like startup y kind of like mentality for better and for worse. And so like it, the Rust project has under its purview a lot of things that other language ecosystems don't consider to be part of the language development itself. Like, these tools in Ruby are not managed by the Ruby core team or, you know, even the Ruby language team at all. Like, they are totally separate projects. And, like, NVM in Node is, like, last I checked, not under, you know, the the Node Foundation or whatever.
Steve Klabnik:And, like, you know, they're sort of made by additional people. And so Rust Rust tends to have less, like, ecosystem diversity in tooling because it tends to, like, absorb the most popular thing and therefore consolidate development effort on a single thing instead for good and for worse.
Bryan Cantrill:Right. Yeah. Right. So you see this with, like, I mean, Cargo Clippy or Rust format or this kind of like aren't, like, six different ways of doing things. There's actually kind of there's there's there's one way where with that there's consensus on.
Steve Klabnik:Yeah. It's also interesting because that's true in tools, but not true in packages. Like, you know, Rust refuses to sort of bless an error handling package, but also gives you a version manager. You know what I mean? So, like, it's not always like, you know, the same exact thing.
Steve Klabnik:Yeah. Think that docs.rs is kind of an interesting version of this too where so Rust doc is made by the Rust project, but then the idea of, like, hosting a Rust doc for every single package on Crace.i0 was a third person's a third party person's, like, idea, and then he made it and then eventually donated it back to the Rust project, and so it kinda became official. And so sometimes those sort of things happen, you know, as well. You know? Because, like, Brian was on the Rust core team employed by Mozilla working on Rust, but, like, it was like, Rustup.sh was originally under his GitHub handle personally, if I remember correctly, and then, you know, it became adopted into the project.
Steve Klabnik:So that does, like, happen sometimes too. And same thing with, like, Manish and Clippy and etcetera, blah blah blah.
Dirkjan Ochtman:It seems like We're early from Digari Blake. And then at some point, it looks like Brian takes over.
Bryan Cantrill:Yeah. Interesting. And the I mean, this is kind of like I mean, this is overly reductive, but this is called kind of batteries included by, you know, this is the kind of way people think of it. But which but in reality, like, there are batteries everywhere on this thing. So it's like actually which batteries do you some batteries you include and or one person's battery is another person's accessory.
Bryan Cantrill:I mean, I think there's a, I think that as you say, Steve, it's like the line that Rust has drawn is not always completely consistent, but there is a there is does feel like there's a line there around the kind of the the the more of the meta stuff versus the the like the crate ecosystem for example.
Steve Klabnik:Yeah. I feel like the difference is like for tool chain stuff, like you really gotta nail that experience to have things work well. And so there's advantages to consolidating, but in the package ecosystem, there's like a more significant variety of things you need. Like, you know, a way to manage Rust versions is a pretty narrow kinda like scope, but like Yeah. Here are all the packages you're gonna want to write your program is like pretty freaking huge actually.
Steve Klabnik:And, you know, different things approach this differently. So for example, like, sort of it's gonna be controversially, C plus plus twenty sixteen twenty twenty six is gonna include linear algebra in the standard. And, like, there's a whole bunch of good good reasons why that's true and bad reasons why people are mad that that's true and, like, you know, etcetera, blah blah blah. There was a movement for a minute to, like, include a GUI toolkit in the standard, and, like, that was a whole like, lot of people Wow. Back into that and, like, yada yada.
Steve Klabnik:There's there's interesting good reasons why that would be a good idea, but also a lot of bad reasons why it's not about you know? So anyway, every every sort of language has to confront how they organize socially and then how they, like, produced the products that people end up actually using. And I think Rust understands and cares about that a lot more, or like I should say the Rust project cares about that a lot more and understands that explicitly, or least we used to in the old days. I don't and so I haven't really been involved lately. You know, I I I see some signs of that mentality still being the case, but, you know, I can't really speak to the way discussions happen since I'm not, like, involved anymore.
Bryan Cantrill:Yeah. Interesting. And and then, Dirkja, when did you get involved with with Rust Up?
Dirkjan Ochtman:I was looking at that. I think it was in 2023 sometime. I think there was call for help in Zulip, I think. So there was, like, basically one maintainer left, and he wasn't very active and still isn't. And so we had two sort of people come on board and join the project.
Dirkjan Ochtman:And then more recently, we I invited a third, so there's now three active maintainers.
Bryan Cantrill:And then when did you is kinda your own history with Rust Ops? That's how long you've been kinda contributing to it. Like, what's kinda your own history with respect to Rust and I
Dirkjan Ochtman:started writing Rust in 2016, I think. I initially wrote it, so I wrote some sort of OIDC IDP. So OpenID Connect thing. Then I wrote a Scala, which is this template engine that people might be familiar with. And then I started on Quinn, the quick implementation, and did a whole bunch of other stuff.
Bryan Cantrill:And then there's a I mean, that is so a call goes out that this is an under maintained part of the ecosystem. And I feel like when those calls go out, like, most people are like, oh, that's that's too bad.
Adam Leventhal:Oh, Especially for something like that where, you know, for a crate, like if we were using a crate in anger like I'll give you an example just off the top of my mind. Like there's this crate that we use, lot of people use for open API stuff. And the owner of it just sort of wandered off and was like, look, this is not my day job. And it was extremely generous in just saying like, come on in. Right.
Adam Leventhal:If you're using it, go ahead and own it. But for something like Rust Up that sort of falls between the couch cushions where it's like everyone uses it.
Bryan Cantrill:Everyone uses it.
Steve Klabnik:It's not
Adam Leventhal:like Yeah. It's not your bed not betting your business on Rust Up. It's the time you used for that moment and you don't think about until until it doesn't work.
Bryan Cantrill:So Durkan, what what kind of went into you heeding the call to to jump in on that? Because it is, I mean, as Adam says, it's like I mean, I I I can't imagine that you got a RustUp based business, but maybe you do.
Dirkjan Ochtman:No. I well, I do not. I have some GitHub GitHub sponsoring first stuff, I guess. So I this is not the first time this happened to me. So I now maintain Chrono, which I didn't start up start out maintaining.
Dirkjan Ochtman:I now maintain FlameGraph. I now maintain Indicative, the progress bar library. So there's a bunch of projects that sort of got orphaned and I was using them, and I was like, well, someone do I have to do it? And so I just started doing it. And so for Rustup, I think someone was like, it needs more maintainers.
Dirkjan Ochtman:And I started just looking at the repository and doing like little you know, dependency upgrades, little clippy, little formatting, stuff like that. Yeah. And then stuff got merged, I did some more refactoring, and that sort of spiraled out of control.
Bryan Cantrill:And people are asking, Idikatief is the is the progress bar library. That actually we neglected to mention, I think, on crates that that we love, but I love that. I do love it.
Steve Klabnik:And we I love it. I use it a lot.
Bryan Cantrill:I I use it a lot. I use it all over the place. Yeah. I think it's great.
Dirkjan Ochtman:Yeah. It's pretty nice. And so at some point, I did did, like, a hundred x speed up by doing, like, better atomics or something. So that's fun for me. Yeah.
Dirkjan Ochtman:And I guess good for the ecosystem.
Bryan Cantrill:So Use that for a process that takes, like,
Steve Klabnik:over an hour to happen, and it's, like, the only thing that makes it seem like it's doing anything. It just sits there and just slowly fills up the bar. So yeah.
Bryan Cantrill:Yeah. So you're getting involved in the Rust shop and starting to fix bugs. Something is getting getting integrated and so on. And then the Yeah.
Dirkjan Ochtman:The other, like, beef. So I also became a Russell's maintainer at some point, right, the TLS library. And so one of my long standing beefs with Rustup was that it was not using request and Russell's, but it was using, like, curl.
Bryan Cantrill:Oh, I see.
Dirkjan Ochtman:And so obviously, that was an angle for me where I was like, oh, no. There's there's people that need to maintain it. I'm gonna splice in some Rustles and request.
Bryan Cantrill:Maybe revealing some of its Bash origins there with the use of curl. It looks like some of the Bash roots. Alright. So you that's so you did have, like, an angle on this of, hey. I got some things that I wanna improve in this thing.
Dirkjan Ochtman:Well, I think that was, like, the one thing. And then I just Right. Like, at this point, I'm pretty, like, efficient at refactoring Rust to be cleaner. So I was just looked at last night. I I've done, like, 230 commits, and I have net net negative lines contribution.
Bryan Cantrill:Oh, what what a hero. Absolute legend. Yeah. Yeah. Oh, it's like It is
Dirkjan Ochtman:a bit of a better have some two other projects where I do, like, a a whole bunch of change, but I end up with less codes than I started with.
Bryan Cantrill:That is outstanding. We you know, we actually we should do we honestly should do an episode just on the on Rust based refactoring.
Steve Klabnik:Mhmm.
Bryan Cantrill:Because I do think it's it's I I mean, I feel I have, Rust has changed my view of refactoring. So think refactoring can introduce a lot of risk and a lot it enters a lot of problems. And Rust is like way safer for refactoring, I feel.
Dirkjan Ochtman:Totally agree.
Steve Klabnik:Also, I would just lots of things about. Sorry. Go ahead.
Adam Leventhal:I would just say to fans that Brian is saying that as a non Rust analyzer user, which is insane.
Dirkjan Ochtman:Wow. That's yeah.
Bryan Cantrill:Like you use Rust analyzer, Brian, it and it will it will make you feel all the more that way. Is this an intervention?
Steve Klabnik:Wasn't.
Bryan Cantrill:I I think exactly. I know. I I I know. I know. I I don't unlike syntax highlighting, it's not a point of principle for me.
Bryan Cantrill:Syntax highlighting is not a point of principle either just everyone settled down. I just Yeah.
Dirkjan Ochtman:I mean, that's for the first like three or four years with Nano. And then at some point, I figured, oh, maybe this IDE stuff is actually good. And so now I use Versus Code like everyone else.
Bryan Cantrill:Like most other people anyway. Like almost everybody else. Sure. I'm with you,
Adam Leventhal:Dirk Jan. But but yeah, I'm I'm with you, Brian. I don't know. Bounce I don't do that much stuff in our Lumos code base, I do every once in a while. And I do feel like I'm operating without a net.
Adam Leventhal:Know, like I feel Absolutely. I'm I'm kind of that that guy with a lunch pail on the girder, 30 stories up or whatever.
Bryan Cantrill:I think I'm performing surgery on myself.
Adam Leventhal:Yeah. And just like when you're refactoring in in particular in code, in Rust code that is that is decently well tested. It's like, I'm I'm not gonna screw this up.
Steve Klabnik:Yeah. Yeah.
Bryan Cantrill:Or I will screw this up many times, but it'll be the compiler that hits me in the
Adam Leventhal:I I won't screw this up in a way where everyone else on the team
Bryan Cantrill:can see. That's right. I'll screw this up in private.
Steve Klabnik:This would also make a good episode because there are a lot of people who think refactoring and rust is terrible, and so getting a little little cage fight situation going on would be interesting, I think, as an episode.
Bryan Cantrill:Yeah. Wow. Alright. Yeah. Enter the octagon.
Bryan Cantrill:The the the refactoring octagon. Okay. So, Durkin, so you are so for the last, you know, year and change, two years, you've been really active in Rust Ops. It's not a very big team, it sounds like.
Dirkjan Ochtman:Yeah. I I I also should say I've been very active. Like, it's among one of the projects that I help out with, and I do code review and some changes here and there, and it's like not a big part of my experience or something, but
Bryan Cantrill:Sure. Yeah.
Dirkjan Ochtman:Right. Yeah. Whenever there's stuff that needs to be done, I help out. And so we were working towards this release for quite a while, and finally we thought now is about time that we start pushing it out.
Bryan Cantrill:Okay. So now maybe we can we can start kinda, yeah, talking about the specific change or maybe let's talk about the behavior prior to this change. Do wanna kind of elaborate on the prior behavior, Dracon?
Dirkjan Ochtman:Yes. So a bit of a caveat, I didn't work on this change myself. So I reviewed the code, but I don't have a deep understanding of it, at least for my feeling. But so basically tool chain or Rust up will install tool change implicitly whenever you call a command that needs it. And that's even like if you do a cargo version or something, it will go and install a tool chain if the tool chain is not there.
Bryan Cantrill:And so when you say it was called tool chain, so this will, it will look at the the the Rust tool chain dot toml file.
Dirkjan Ochtman:If it's there, yeah. Even if it's not there, right, it will go and fetch maybe the stable tool chain or something.
Bryan Cantrill:Yeah. Interesting. And so but but and so this is kind of an interesting behavior because on the one hand, this makes rust easier to use at some level. Yes, definitely. It's also implicit behavior.
Bryan Cantrill:And it is a little surprising that I do like a cargo version or what I the I I I run a command that doesn't feel like it should be talking to the Internet for a while.
Adam Leventhal:And it like go goes and downloads two gigabytes.
Bryan Cantrill:Yeah. Right. Exactly. Like I wanna be on my Zoom call, and apparently I can't
Dirkjan Ochtman:do that because we're gonna update
Steve Klabnik:the app.
Dirkjan Ochtman:And that's when you're running it from this from the command line. Right? And it could also be running in the back end somewhere in your Rust Analyzer install, and it will do the same thing implicitly Right. Without you noticing or even, like, triggering it consciously.
Bryan Cantrill:And I do think that this is, a a a very common tension between making something approachable and making something rigorous. And I mean, just take the the I I think a comical extreme of this is and it was definitely a an early, I would say, reflection of a values divide between node and joint at back in the day was so NPM, if you do NPM isn't all, I I s n t a l l. Okay. It will treat that as NPM install. Okay.
Adam Leventhal:Because it's like close enough. Get what you're talking about.
Bryan Cantrill:Close enough. I get
Steve Klabnik:what you're talking about. Yeah.
Bryan Cantrill:And the and this was It
Adam Leventhal:doesn't mean your bash scripts are just like riddled with Exactly. I guess.
Bryan Cantrill:That's right. And that's exact I mean, you can kind of see the whole like one act play in front of you.
Adam Leventhal:Right. And then when you add a new sub command, it's like, oh, now I'm not sure what your typo means.
Bryan Cantrill:Exactly. And I mean, I think and then also like you can never take it away. And, you know, I think that the I understand how we got there, but I think that from if you were on the rigor side of the rigor, the approachability divide in node, it was ridiculous to to have a have a command that is clearly not the command to do something else. I feel like it shows like kind of a lack
Adam Leventhal:of respect for users. Like we needed the bar to be so low.
Bryan Cantrill:So low. Because if you type
Adam Leventhal:ASDF ASDF. I'm gonna type isn't all and it doesn't work and we tell them you should have written install, like they're just not gonna do it.
Bryan Cantrill:They're gonna it. They're not gonna do it. Level of patience
Adam Leventhal:that we cannot assume in our users.
Bryan Cantrill:Right. They're all just big babies.
Dirkjan Ochtman:So as someone who never has written any note, I would feel like kinda lonely probably on the rigor side of the NPM debates. Oh.
Steve Klabnik:Oh. That was that was praised wonderfully, honestly.
Bryan Cantrill:That was praised very wonderfully. It was and I would say you're it was the only thing that the reason it wasn't completely lonely is that there
Adam Leventhal:was a group of us
Bryan Cantrill:that were marooned on Rigor Island together. And we we all had one another, to like, but it was, yeah, there's a platform is a reflection of values is a talk I gave on on
Dirkjan Ochtman:the whole with it. Yes.
Bryan Cantrill:Yeah. On the whole divide that yeah. It it was lovely.
Steve Klabnik:Then I gave a talk based on it that then ended up, you know, being like about Russ take on Brian's take, and then eventually got worked here.
Bryan Cantrill:Well, it actually you know, in all honesty, like, that the the NPM isn't all thing. I actually became more forgiving of after having done my talk because I think the I wasn't really thinking I wasn't giving it the credit of like to me, it was like back in the day, I'm like, this is valueless and stupid.
Adam Leventhal:It's like right or wrong, but
Bryan Cantrill:it's not right or wrong. It's not right or wrong, actually. And like there's actually a reason why it was done. And like that may be extraordinary kind of an extreme example and I still don't think it was the right behavior, but I think it was it was it it gave me a lot more sympathy for that of like, okay, I get what you were trying to do. And I kinda feel like this is the RustUp implicitly installing a tool chain is an example of like, hey, like I know what the user wants to go do.
Bryan Cantrill:Like they're trying to run something that's cargo related. There's a there's a tool chain dot toml file here. Like I know the tool chain that they want. We should go install it. It just feels like it's it doesn't it like I it's implicit behavior, but it also doesn't feel unreasonable to be like, yo, why don't we go into that to the internet and when we've done a cargo version or whatever.
Adam Leventhal:Right. Hurts hurts your p 99 on the on the so you
Bryan Cantrill:tell me the p 99 cargo. Yeah. Exactly.
Dirkjan Ochtman:And I would also say, like, on the Rust side, you know, the rigor side is a lot busier. Right? I feel like I would have expected, maybe naively, but I would have expected this change to, like, be welcomed by a certain substantial size of the Rust Up audience. Like Yeah.
Bryan Cantrill:It's explained.
Dirkjan Ochtman:Not saying that it's the right thing to do or that it's not gonna be painful as a migration, but it's probably still I still think it might be the right direction, but it's tricky because, you know, it is the entry point for Rust and something that people hate a lot. And so implicit install is worth a lot of not paying.
Steve Klabnik:There's a thing related to this is isn't all thing that so Git also has this ability to like, oh, you typo'd something. We should do something else instead. But it has a setting that you can set that says like, please ask me about it. And so I'm kinda wondering if I never like said this about the Rust Up thing, but like the sort of intention is, you know, everything just works nicely for you. And so, like, you know, it just makes it happen.
Steve Klabnik:But one path forward to change this behavior would sort of be like a, hey. You don't have the tool chain currently installed. Would you like me to go install it? Yes or no? And then ask people about it that way.
Steve Klabnik:And then in scripts, you could do the dash dash yes and, like, all that kinda, like, standard pattern stuff.
Dirkjan Ochtman:But Definitely. I thought that might about option. Okay. Right? It was discussed in some of the PRs or issues.
Dirkjan Ochtman:I feel like it's it's still putting up a roadblock, right, that people are still gonna And also in all the under in all the unattended cases, it's still gonna be a flag day.
Steve Klabnik:For sure. Absolutely.
Dirkjan Ochtman:Right? So it doesn't really help from that perspective.
Bryan Cantrill:Yeah. You kinda want the computer to, like, open its eyes and see, like, is there a person and a keyboard there? I mean, whether that's that, you know, looking at the Yeah. I've been wondering about
Dirkjan Ochtman:is it TTY? Is TTY at the
Bryan Cantrill:moment. Even that's, like
Dirkjan Ochtman:I know. Trickier implicit behavior. Like, wait
Bryan Cantrill:a minute. Yes. How What is the other problem? Right?
Dirkjan Ochtman:If you're gonna have heuristics, they better be very easy to understand or Yeah. Everything is gonna suck.
Bryan Cantrill:Yeah. Yeah. Yeah. Totally. So okay.
Bryan Cantrill:So you but so I think it's really interesting. And I think, like, valid. I mean, you're just like, look, this is the Rust community. These guys this is a when we choose between like, we often choose rigor and Rust. And we're willing to and so this seems like a a choice that's very consistent with what with what the rust community want.
Bryan Cantrill:The change is rolled out into a into a rust up version. Obviously, there's some discussion about it. And but you know it's gonna be okay. This is gonna affect like the this may affect some users who are implicitly depending on the implicit behavior. And one of the challenges is, Durkan, I don't if you, like, there's no, like, how do you figure out who's depending on the implicit behavior?
Bryan Cantrill:It's really tough because it's implicit, right?
Dirkjan Ochtman:Yeah. So in my mind, like the only way to find out is to try, right? There's really, like we did, the internals blog post, which apparently no no not many people read internals. And we did a release announcement on the main Rust blog. But, of course,
Steve Klabnik:that's just
Dirkjan Ochtman:a release announcement that says it's Rust up one twenty eight, and it doesn't say pay attention here because we're gonna break all your shit. And so maybe that would have been better, like, if we had and maybe we should have done that upfront, you know, looking back Yeah. To try draw out more of the feedback or criticism of this change. But, you know, it's also again, this is like three folks who are doing this in their, like Really?
Bryan Cantrill:Bit of
Dirkjan Ochtman:spare time here and there. I personally had a challenging month with a bunch of hospital time
Bryan Cantrill:for my kids. So that was Oh, I
Dirkjan Ochtman:also personally didn't have much time while we were rolling this out. So it's a bit of a stressful situation when the feces hit the ventilator. So, yeah, at that point, then we got, like, a bunch of feedback via Blue Sky, and I was like, well, gotta do some
Bryan Cantrill:work here. Yeah. Okay. So you so the the first of all, and I I absolutely agree, by the way, with your disposition of like at some level, especially when it comes to a bliss behavior, you do kinda need to do it. You can't be because you can be and I mean because I think that when we are biased towards fear and like, no, we can't change any behavior.
Bryan Cantrill:I think that that that you become you run the risk of becoming so conservative that it creates a backlash that's much more radical. Whereas like Yeah. Actually now I don't I don't care what shit breaks because like do you I because I feel we've definitely seen this in in in Unix, in the operating system where people are like so afraid to change anything that it creates this radical movement of like I wanna break everything. Yeah. And it's like, is there a path between these two things?
Bryan Cantrill:Like, where we can where we can like be smarter about the way that we I feel like this always always would with preserving binary compatibility. Where it's like, people like, I think we should change nothing versus like, I don't think we should honor binary compatibility. It's like Like forever. Forever. It's like, can't we find a path that like tries to maximize binary compatibility and allows us to like and I so I I I think that you've gotta have a disposition towards changing things or like Yeah.
Adam Leventhal:We wanna prove them. Steve, this sounds like some of the the the struggle of c plus plus.
Steve Klabnik:Is it Yeah. So I mean, like, literally, like, the the, like, scars from changing the standard string ABI in c plus plus 11, like, eventually, you know, in that meme where you have a little person pushing a small domino, and it's a bigger domino. It's a bigger domino. It's a bigger domino. Right?
Steve Klabnik:It's like that that starts off with, like, a change to standard string ABI, and then end of it is, like, Google quitting the c plus plus committee. You know? Like, that's like that's like how that, like, went at ten years later, fifteen years later, whatever. So yeah. Totally.
Steve Klabnik:It's hard. And like, you know, you it is absolutely true that you wanna be to change stuff, but you also wanna be able to keep stuff the same and figuring out how to make something like that work. Is something we spent a lot of time, like, thinking about in the earlier days of Rust because, like, we knew, like, systems you can't build a house on sand. Right? And I I really liked Nico put out a blog post today, yesterday called, like Foundation twenty twenty five targeting foundational software.
Steve Klabnik:And, like, I I agree. I mean, me me and Nico disagree on a lot of things, but I I like this post. And it's sort of about, you know, like, Rust is really good at the foundations of computing. It's also good at higher level stuff, but, like, that's important. And so you can't build a house on sand.
Steve Klabnik:And so just like, you know, to to you know, we ragged a little bit on Node earlier, but, like, Node can change all the time because, like, that's fine for the stuff that you use Node for. But, like, Rust in, like, in, like, kernels and stuff, like, you really don't want to be, like, changing things constantly because you need a stable foundation to be able to build other stuff on top of. Right? And so the kind of the the original release cadence is sort of based on an insight from, you know, the, like, agile folks in sort of like web development, which is like, hey. Sometimes we used to have, like like, my first internship, we had, like, deploy week where it was like, okay, no one's doing their job.
Steve Klabnik:We're just deploying the next version of the app and like fixing everything that breaks. And like, that's gonna just like take a week to work out. And so Yeah. One of the things that happened is continuous integration where it's like, you know, you you basically try to deploy constantly all the time because, you know, you only get good at something if you practice it. And so by saying, like, we're gonna deploy 10 times a day, it forces you to get your deploy story real tight because, like, you can't do it if it takes a week to deploy.
Steve Klabnik:You can't do it 10 times a day. So you, gotta make sure that it works and works well. And so I had seen a lot of instances in the Ruby community and other people had seen it in other programming language communities where because they only release once a year, a proposal that is okay, but not fantastic that happens in October is more likely to land than a wonderful proposal that lands in a January. Ruby releases on Christmas. So that's why I always think about it in a yearly schedule kinda like terms.
Steve Klabnik:Because there's like if you miss that release, you're talking like another year until you have a chance for it to land again, and that's like kind of a long time. And so it creates this weird pressure. And so the initial idea of the six week release schedule was like, well, how browsers do that now? Where it's like, if we release Rust super often, totally okay if a feature slips a release because it's only gonna be six weeks until the next one. And so I think that's like a lot of people see the quick release schedule and think that that's about rapidly breaking everything, but it's actually kind of the opposite.
Steve Klabnik:It's about not putting pressure on shipping a mediocre solution because it's like totally okay to let it slide for only a small bit of time instead of a large bit of time. And, yeah, do you just see this is the chat. Like, we have a problem with additions a little bit, and that's why yesterday I learned that apparently there's a talk about doing, like, small additions every year because it's sort of running into the same problem. Right? Like, addition 2018 was a massive cluster of management issues and burned out a lot of people.
Steve Klabnik:And then, you know, this redition slipped until 2025 partially because of not wanting to burn people out because, you know, getting stuff in before it. And so, you know, it's kinda always hard when you release on sort of a longer schedule. And I don't know how I feel about the idea of a yearly edition, whatever. It's not sort of a little off topic. But, yeah, change management is hard, and turns out that, like, doing the the releases all the time can ease the burden on, you know, not wanting to stay stagnant while also being relatively stable at the same time.
Bryan Cantrill:Yeah. When then with additions too, we've got the which I've just learned about recently with Rain's demo when when Rain demoed to the the format changes in that Rust format, you can have that that different aspects of the tool chain can have different editions. So you can be on 2021 edition, but then on a 2024 edition for Rust format, which I think was or or twin I died. It's 2025, whatever the the current yeah. And which I think was actually kinda neat to to to split some of that a bit.
Bryan Cantrill:Mhmm. The because I think some of these things are like, I mean, like Rust format can be tough to move forward and Yeah.
Adam Leventhal:Or even just being able to to desynchronize those things where you're kind of speculatively moving forward on one while while not kind of changing everything at the same time. Right.
Steve Klabnik:So It also ties back into the everything being under the umbrella. Like, it would not be possible to do that kind of coordinated edition based tool releases, you know, or it'd be much harder if you were trying to coordinate with a total random third party instead of being as part of the project. You know?
Bryan Cantrill:Totally. And so so, Durkan, what has been the cadence of Rust Ops releases? Because you mentioned that this is it'd been a couple of months. Is is that fair statement?
Dirkjan Ochtman:I guess one of the problems actually is that there hasn't been a cadence and that the last release was really long time ago. So I forget exactly, but we released one twenty seven one on May. Yeah. And that was after one twenty seven zero was on March 11. Don't know, yeah, that's still '20
Steve Klabnik:April '20 fifth for twenty sixth, and then like February So
Dirkjan Ochtman:yeah, and then there was a long, long gap where we did, you know, feature development stuff Yeah. Changes that are either touching and now release those all at once. And obviously, that's harder to manage in terms of change management.
Bryan Cantrill:Totally. Okay. So this this release goes out and I I mean, I think we've all been there in our careers. Yeah, exactly. You have that first moment of like, you hit that first raindrop and you're like, that's funny.
Bryan Cantrill:And then you're like, second raindrop. It's like, oh, now that's hail.
Adam Leventhal:So I experienced this on social media, through the the I saw it like Eliza was on Blue Sky and said something like, well, I guess all of my Yeah. All of my CI and all of my GitHub projects are gonna fail. And I just closed Blue Sky and I'm like, you know what? It's Saturday. Like, I'm sure this that day will soon, and I'll I'll I'll wait for it.
Dirkjan Ochtman:It's actually interesting because I had a bit of a similar experience the week before or like two weeks ago when Ring went unmaintained.
Bryan Cantrill:Yeah.
Dirkjan Ochtman:And it was an an unmaintained advisory for like this commonly used crypto library that Russell's folks typically use or that they historically use at least. And so that was also like reaching out and trying to figure out, hey, can the Russell's team take over maintenance so it doesn't have to have an advisory and we don't have to break everyone's audit jobs. And so that that felt like sort of almost like a rehearsal for this in terms of communication, right? Say, oh, well, lots of people are gonna be worried and maybe angry. So if we just try to communicate that we understand the pain and that we're gonna address it soon, might help a bit.
Bryan Cantrill:I think it helps a lot for whatever it's worth. I mean, so Steve, you were on kind of the other side of this along with a lot of other people. And I mean, to kind of, to lead with the conclusion, I mean, title of your blog is A Happy Day for Rust. So mean, you're kind of watching all this unfold.
Steve Klabnik:Yeah. So, you know, the community aspect of Rust has always been really central to, like, the things that I care about with Rust. And and part of that is because, like, I'm a say some stuff I've said in person, but not in a recorded form before. Like, part of the reason that I came to Rust is I was incredibly dissatisfied with how the Ruby community was operating, but also specifically, like, I was hanging out with DHH, and that made me into a jerk. And there was a time where I, like, overstepped my bounds a little bit, and it became this whole thing.
Steve Klabnik:And I basically was an asshole to a random person on the Internet because I didn't really appreciate that, like, that's what I was doing. I thought I was just making jokes about a project, and it turns out that was actually wrong. And so I had a really serious sit down, come to Jesus, rethink how I act of moment. And I was like, you know what? I don't think that, like, being around these people is making me a good person.
Steve Klabnik:And so that was at the same time I learned that Rust existed, and basically, everyone there seemed wonderful. And so I was like, okay. I deliberately want to try and make Rust into a nontoxic community because, like, I have just been on the other side of that. And I my hottest take is that I think that that's why rails kind of stopped being culturally relevant, which is like a complicated phrase. But, like, you know, it's not it's not the darling it once was.
Steve Klabnik:And I think that part of that is due to missing the boat on JavaScript due to, I'll just say bigotry because it's funny, but, like, anti JavaScript bigotry from the Rails sort of, like, world. So Interesting. It's, like, important for both, like an ethical thing of like, I want to be around people who are good people instead of bad people. But there's also like sort of a, like more dispassionate belief of like, including more people means you get better ideas. And if you drive certain people out of your spaces, you have blind spots based on what those people's things are.
Steve Klabnik:And so like, this is where a lot of the like, don't compare Rust to c plus plus kinda culture came from very early because I was like, I really, really did not want us to have Rust marketing be c plus plus sucks. Rust is awesome. You shouldn't use that garbage because that would be, like, bad ultimately. And this also goes back to some Nietzsche, but now I'm on three levels of tangents, so I won't. So anyway, I look long and, like, and, like, early Rust was pretty good and healthy and happy.
Steve Klabnik:And I kinda always wondered at what point that would end. Like when, you know, you get thousands and thousands of people from all over the world together, even describing it as a community is kind of a little incoherent, you know, it's like actually a sort of constellation of a pocket of various communities instead. And so, like, I'd always wondered, like, at what point have we grown to the point where you can't really make those kinds of claims about the Rust community as a whole, and, like, when will schisms form, and, like, you know, how's all that sort of stuff happen? And so the Actics Web situation was the sort of, like, first time that I was like, okay. I think maybe maybe that's actually dead.
Steve Klabnik:And so, you know, like, basically, I wrote this blog post since back in 2020 called a sad What
Bryan Cantrill:is the Actix? Can you give us some context on the on the Actix web situation?
Steve Klabnik:So essentially, like, basically, Actix web was a web framework written for Rust that was got a lot of attention because it was very fast. It scored at the top of some very popular web benchmark stuff. And, like the person who wrote it worked at Microsoft and kind of had hinted that Microsoft is using it in production. And so that was like really interesting to people because this is still before, you know, like big companies were like super talking about all the time about using Rust for things. And so sort of the problem though is that one day somebody decided to like look at the code, and it turns out that like it was using a lot of unsafe.
Steve Klabnik:And that's not a problem on its own, just to be clear. Like sometimes you gotta use a lot of unsafe, But it was like using unsafe code for things that, like, weren't really necessary to use. Like, it wasn't like we profiled this and this is long slow, and we're using unsafe to, like, to sort of, like, replace, like, code that's bad and safe code. It was more just like, I think this is gonna be slow, so we're gonna do it for unsafe from the beginning. Right?
Steve Klabnik:And Andrew linked in chat a really good post also about contempt culture that also deeply, deeply resonated with me for various reasons, and I kinda didn't want Russ to be a contempt culture in that sense. But anyway, so the problem is is that like, okay, that's totally fine. You wrote some unsafe code that you shouldn't have maybe like and so people sort of like opened issues and sent in PRs that were like, here is a safe version of this unsafe code. And essentially the author went like, no, it's fine. I don't I don't care and they closed them.
Steve Klabnik:And that was when the, like, stuff really went wrong. It wasn't even about like, lot of people were saying like, this is about Rust people harassing people about unsafe code. It wasn't it wasn't really just that. It was like, hey, you don't need to use unsafe here. And then the, like, the total lack of, like, willingness for the author to accept that fact.
Steve Klabnik:And now, again, it's his code. He can do whatever he wants. Like, I'm not trying to cast, like, a moral judgment. I'm trying to describe sort of why people got upset and, like, for whatever reason. Like, I'm not saying they were right to get upset or they're wrong.
Steve Klabnik:I'm just trying to, like, factually describe the situation. And so that then led to, like, a whole bunch of Reddit shenanigans and a bunch of people opened issues, and then it got, you know, linked to, like, other places. And, like, I think some 4channers showed up and, like, essentially, the author at some point was like, I am just done and, yeah, and just, like, quit. And so yeah. So anyway, he he sort of quit and and in this sort of flurry, and then I wrote this post that basically described the situation, described words.
Steve Klabnik:But like, essentially, it was like, don't know what we're gonna do here, but I was like, this really like put a bad taste in my mouth because like, it just looks bad for everyone. You know? Like, I don't want to be in a community where people decide that a project is wrong and bad, and therefore they swarm with a bunch of issues. I don't wanna maintain her to, you know, feel crappy when people criticize something about their project because, like, it is also true that, like, the only way you get better is by being told that, like, hey. You didn't do you did something that's, like, not optimal, and here's, like, a better way to do it.
Steve Klabnik:Right? Criticism has to be okay. Which a difference in, like, criticism and critique versus, like, you know, saying, like, this is garbage and you suck.
Bryan Cantrill:Sorry. I mean, so when I kind of initially fell in love with Rust and had this thing that I'd reimplemented that wasn't a kind a c node hybrid that I reimplemented Rust and I was delighted with the results. And I wrote a blog post about it that that went kind of that went viral. A lot of people were reading it. And there were some p r's on the thing that I had open sourced about.
Bryan Cantrill:Like, hey, there's like like there's a slightly better way to do this. It was from David Tolne. Oh, wow. And it felt like, oh my god. Like this feels like great.
Bryan Cantrill:Because first of all, I just by the fact that you're opening like, you you you're talking about these like small things. Like you're reading the code carefully and it's not completely wrong. You know? Not not everything about this is wrong. And I loved having that feedback of like, there's a better way to do this.
Adam Leventhal:I've had my own sort of David Tolne, elf on
Bryan Cantrill:the shelf moment where like
Adam Leventhal:like, he just materialized in some repo and showed me a better way. It was it was delightful.
Bryan Cantrill:Right. And I think so you do have to, like I think, Steve, I hear what you're saying, but come like kinda like no one in in that sad day is overly sympathetic because I think, like, a maintainer like, if you're close if people are saying, like, hey. I think there's a better way to do this, and here's what it looks like. Closing that out is, go fuck yourself. It's not gonna like, that's if the objective is to, like, you know, keep Reddit at bay, that's probably not
Adam Leventhal:gonna work very well. You also don't want people showing up with their their safety pitchforks. The safety pitchforks
Bryan Cantrill:that also like, you know, Steve has like and at some point, the 4channers showed up. It's like, that is
Dirkjan Ochtman:definitely like, okay. We are
Bryan Cantrill:definitely off the rails. Yeah. Very, very, very off the rails.
Steve Klabnik:So Like, be clear, there also was one, like, actual, like, unsound implementation of something too. Like, it sometimes it was unnecessary, but then it also, you know, once you start digging, you find things, and there were some things that were, like, legitimately, like, this is not actually correct. And so, you know, that becomes a bigger issue then too also. So, like
Bryan Cantrill:Oh my god. I have been absolutely has absolutely busted me with Look at Oh my goodness. From thirty years ago. From thirty years ago. Oh, I'm struck oh my god.
Bryan Cantrill:Feel so bad. Closed will not have More to more oh, I'm having an argument first. Oh, god. Okay. I'll show myself out.
Bryan Cantrill:Came with the receipts. Came with the receipts. I am oh, man.
Adam Leventhal:But it is also true
Steve Klabnik:that, like, you know, you never know. Like like, you know, like DJ said earlier. Right? He has a situation personally that, like, made it a little tough to deal with this response. And, like, you just you never know what's going on with anybody else's life outside of the GitHub issue, and that's true, you know, both as, like, the person who says something a little spicy and the person who's receiving the spicy message too.
Steve Klabnik:You know? Right? And so there's always just like, just humans are hard. It turns out. It's not easy to get along in any context.
Bryan Cantrill:Yeah. Okay. So the so, Dirkon, let's get so let's get back to that kind of moment of like, this is like, I think this change is having we're gonna have to revisit this. I mean, you what was kinda going through your head?
Dirkjan Ochtman:I was like, first, let's do some communication, right, on Blue Sky and on Mastodon just to get the word out that we see the feedback. And then, well, were some issues in the issue tracker as well, so I responded on there, and also tried to put out sort of a roadmap of things, of changes that we should make to address basically the worst of the feedback.
Bryan Cantrill:Yeah.
Dirkjan Ochtman:Or the worst of the issues surfaced by the feedback, I should say. And that was also in part, so because the other, at least the person who had made this change was not online at the time, they're in Asia. And so I was trying to also provide a roadmap for them if they went online and were like, is there something I can do to have like a clear picture of like, where do we go next?
Adam Leventhal:Right? Got it. I can imagine waking up into this. Oh, yeah.
Dirkjan Ochtman:Yeah. That's that sucked for for them, I think. Like, he suck sunk a lot of his free time, like, all of his free time for, like, two or three days into fixing the situation.
Bryan Cantrill:So I think that the early communication, think obviously you're expressing that like, okay, we appreciate that this is, had an outsized impact. And fine and the because I I feel that, you handled it really, really well, I think, from a what was clearly a tough situation. I mean, we're what was kind of guiding you into I mean, clearly, you've got a lot of experience dealing with open source. You've dealt with a lot of things. You have obviously dealt with terrible maintainers yourself like me, on a project.
Bryan Cantrill:You had some examples of how not to handle things, I guess. But the at what point you're just like, okay. I think we actually need to to because, I mean, ultimately, the change was effectively reverted. Correct?
Dirkjan Ochtman:Yes. The change was reverted. And well, we left like an environment variable in place that you can use if you want to stick to the new behavior.
Bryan Cantrill:Right.
Dirkjan Ochtman:So people can start to adapt to it. And then I like, we haven't had we haven't really had the discussion yet of what do we go where do we go from here, basically. Right? Do we still try to get enough of the community on board if this is a good idea and provide a better migration path that we that we're gonna do it, that we're gonna make it at least not implicit install by default, and then maybe have an option where you can opt into enabling implicit installs for your environment, or if we're just gonna stay away from that because it's too big of a change. Yeah.
Dirkjan Ochtman:I really think that that still needs to happen. Right? I think we need to have a better story to explain why we need to make this change, and then see if we can convince basically the people that it's might be a good idea after all.
Bryan Cantrill:Yeah. And so and then, Steve, you're you've got kind of the the this this the Actex web kind of debacle on your mind as you're watching this. And so and then what's your take on on kind of the reaction that you're seeing?
Steve Klabnik:Well, you know, it's when I initially posted, you know, with that understanding that, like, I'm trying to not be a jerk when I criticize someone in something. Like, I thought a lot about what how I should say what I said. And so, like, what I said was like, I I wish this had been handled differently, which is like different than, you know, hey, this fucking sucks. And like, I really wanted to try to like figure out how to get across the like, this isn't great, but also I'm really not trying to make your life hell, and I'm sorry, you know, kind of like thing. And so it was like really difficult to walk that line.
Steve Klabnik:And furthermore, like, because I kinda have a complicated relationship with the project these days, I never when I'm criticizing the Rust project specifically, I like try to be careful about it because I suspect that if I push too hard on a thing, that actually does the opposite effect of what I want. And so, like, there's a little bit of, you know, stuff going on there too. But first and foremost, I'm just like not trying to make somebody's Tuesday a bad day randomly. Because, like, I have been on the other side of that. Like, there was one day that I woke up to, hey, in an hour or two, we're gonna announce RCE on every version of Rails ever that affects every Rails app that's ever been deployed.
Steve Klabnik:So good luck. And, like Yeah. That was Sunday. You know what I mean? Yeah.
Steve Klabnik:And so I'm not gonna derail this with even more of those things, but, like, the point is that I've been there, and it's terrible, and I don't wanna have that happen to other people. But at the same time, you gotta sort of communicate, like, you know, maybe this could have been done better, and how can we make this not happen in the future, and, like, that kind of stuff. And so, you know, I was I I decided I was just gonna make the blue side post, and, like, that's it. Because, like, ultimately, my CI didn't break actually, and that's because I've been a specific test dot YAML workflow that includes setting the, you know, tool chain deliberately deliberately and installing it on my own. So, like, it didn't actually break anything that I'm aware of.
Steve Klabnik:And
Dirkjan Ochtman:it also really helps that GitHub actions doesn't actually pull these in very quickly. So Yeah. We had, like, a a few days until, like, everyone would be affected.
Bryan Cantrill:Yeah. It was kinda
Dirkjan Ochtman:happy coincidence.
Steve Klabnik:Or because, like, they you have messed up on their runners is the thing. Like, you don't end up installing separate stuff. And so yeah.
Bryan Cantrill:Yeah. So so it because I I think I mean, I had assumed that we got broken by it very shortly after it integrated. We did. Yeah. But We did.
Bryan Cantrill:So we were on were we more on the leading edge of being broken
Adam Leventhal:by Mostly that's because we're doing our our build amount custom runners rather than using the GitHub runners. Got it.
Steve Klabnik:And also there's like a build script in Helix, I think, that like does stuff around this. And so like we have like we have we just we're weird in many ways. And so our weirdness caused us to be exposed to
Bryan Cantrill:This is just being told to me for the first time. I've not heard this at
Steve Klabnik:all. So
Bryan Cantrill:so we're on the leading edge of this, of of feeling this breakage. And I think that I mean, I think Ilyana and Josh may have been both active on the issue, but we're both I think expressing our pain that we were in anyway. And so Dirk, you make the do you make the decision to revert it kind of talking to the original contributor? I mean, you kind of wait for them to get up or how does that how did that work from your end?
Dirkjan Ochtman:I mean, like, I wrote this list of things that I personally think should be done. And then by the time I woke up or, like, the next morning, he had already put up a PR that basically reverted to behavior or had an atlas like this environment variable escape valve. So that was sort of implicitly agreed upon. We did not have much of an explicit conversation about it. Because it was clear.
Dirkjan Ochtman:Right? Yeah. We're not gonna break everyone new as not who are who does not have, like, the the GitHub delay, basically. So we need to revert this, and then we can assess basically how we wanna move forward with this at a more easy pace. Right?
Dirkjan Ochtman:Since we're all volunteers and doing this as a side job.
Bryan Cantrill:Totally. And deeply, deeply, deeply appreciated, by the way. I mean, I just feel that, like, I mean, you've you've picked up a bunch of things that are that don't that that are essential to the ecosystem and like, I mean, having Rust up use I'd not use curl for example, like that's a big win. I mean, there's like a bunch of like really important like to get this really foundational, that you're making a bunch of important changes here.
Dirkjan Ochtman:Yeah. And it's it's weird because I think we we hit on this earlier, but like these sort of foundational things are not easy to fund. Right? No one is asking for this. I think, Adam, you were talking about this, like, RustUp, you know, you just sort of rely on it working, and you don't think about it.
Dirkjan Ochtman:You're not gonna really fund it or whatever. It's just sort of happening, and that's true for, like, a lot of these projects. Like, people are just depending on their somewhere deep in their dependency graph or maybe not so deep, and then you hope that it continues being maintained and maybe improves a little bit over time.
Bryan Cantrill:But it's Yeah. And, well, Adam would love another excuse to run another physics simulation for for for the for the graphic. But the the the the kind of the idea of the of the the the sole maintainer on the thing that is like because I think that part of the reason that that that that graphic is memorable is because the foundation itself is rickety. Right? The thing that it's leaning on is itself like not robust.
Bryan Cantrill:Right. And we actually wanna make that thing robust. And I think and I mean across the board, I think Rust is actually much more robust than than than many other things that have come before it, in part because it's the robustness of things that have come before. But in order for those things to be robust, they need to have maintainers. They need to be able to make the kind of changes that that you all are making to give it that truly robust foundation.
Dirkjan Ochtman:Yeah, and someone has to be around to actually review and merge PRs, right? And for some projects that's enough, and it's not a very intense task, but someone has to do the job. And so sometimes first things that I use or used at some point, I'll take the job and just spend a little time on it.
Bryan Cantrill:And so, I mean, I don't know how many times you had to rewrite some of the things that on the get some of the GitHub issues to account, but you were, actually weren't sure an exemplar of like I mean, really, like, listening to everybody and and crisis p r. Like, to a total crisis p r.
Steve Klabnik:Total crisis
Bryan Cantrill:p r. And like like, not I mean, it's so tempting to get, like, it's so tempting to be the asshole that I was when Drake got open to PR. They, like Like, agree to disagree. Yeah. Defensive and everything else.
Bryan Cantrill:And, you know, you weren't any of those things. And I I which I think was a I mean, I and I think Steve to kinda your the your blog entry about the Happy Day for Ross, I mean, it's like that was kind of uplifting to see that like, this is actually this is actually reinforcing a lot of what's right about the community instead of highlighting some things that might be wrong about it.
Steve Klabnik:Right. I I also wanna say, yes, as someone who's had to do a lot of crisis PR for open source teams, I think that you did a fantastic job, Durgaon, in doing that. And and to sort of echo what you said, right, like the the thing that connected these in my mind specifically, especially was that like, right, it was the response was what mattered. It wasn't the in in the Actix web situation, it wasn't the unsafe code existed inherently. It was like the response caused a lot of the problem.
Steve Klabnik:And so, like, when somebody does something you don't like, like, was like, oh, man. Like, Rust up is gonna change in this breaking way, it's gonna break people. And, like, I'm always telling people how stable Rust is, and this is like, know, people are gonna use this as an example of how Rust is unstable and blah blah blah, and like, all that kinda like stinks. But like, then so that like feels like a lack of when when you think about the way that projects make decisions, like, for example, like, I'm like medium on the Lang team these days, because I feel like they have an appetite for change that's much larger than I personally have for the language. And so I don't, like, trust them a ton.
Steve Klabnik:And I do and don't, but, like, you know, you kind of, like, you're trying to think about, like, okay. How is this thing that represents me gonna make decisions that I like or don't like? And so when this thing happened, it, felt like a little bit of a loss of trust, but then the response was like, I have even more trust than I did at the start. Because like That's weird. It's about how you it's about how you react to situations, not necessarily even about the situation itself.
Steve Klabnik:And so like I and that's kinda why I framed it as further to the duel of, like, sad versus happy day, but, like, also, you know, like, I have way more trust in y'all than I did before this even happened because, you know, it's when you patch up a thing successfully in, like, a nice way and everybody kinda, like, does the right thing, that's that's great. Because there's always gonna be problems. Like, it's never like you're not gonna ship some sort of bug that causes issues or like, know, make a decision that people disagree with, but it's like about how it's handled after the fact. And it was handled incredibly, incredibly well in this circumstance.
Dirkjan Ochtman:Yeah. Thanks for all that kind words. I'm happy to make that work for people. And I like the You talked about the contempt stuff, right? I think like I tried to do the opposite, right?
Dirkjan Ochtman:Where you have this in feedback, you have this situation behavior impacting, right? Where you have the facts on the ground and then you have some behavior and then you have the impact of the behavior. And so if you separate those, think it's generally easier to find the right response to things.
Steve Klabnik:There's so many times where I Close wise. I write in a text box like something very angry and then I delete it. And then I write the second version, which is like, thank you for the feedback. You blah blah blah blah. Like, you know, like it's just you gotta you gotta get the get the first gut reaction out and then like, know, you're able to like actually be level headed about things.
Bryan Cantrill:Wait. Did you just skip the step
Adam Leventhal:where you screenshot it and send it
Bryan Cantrill:to all your colleagues? Yeah.
Dirkjan Ochtman:Yeah. I was gonna say, like, exactly.
Bryan Cantrill:Did that except I screenshot and send it to Adam. And then and then Adam replies back like, you're but you're not posting that. Right? That's actually not no. No.
Bryan Cantrill:I'm not that's and you know, you've also reflect mean, Durkan, what you said was so wise. I I think that like part of my own attraction to Rust from the beginning was a kind of inherited wisdom of the project of like I mean, part of what I love about Rust writ large is is a very deliberate attempt to learn from much of what has come before it. And like how and it it shows in so many different dimensions. It shows in aspects of the language and the tool chain and but also in the community. And I think that this is like also one of the things that still to this day leaves me the most frustrated about Linux as a community is the willful ignorance of history and and not wanting to actually learn anything seemingly from things that come before it is what makes it really frustrating because it feels like you can't bring your wisdom to a community like that.
Bryan Cantrill:Because like, oh, you guys, you're not actually not interested in learning. Like this is such an insular looking community. And I dare say like, I don't know, Steve, I don't wanna speak for Ruby, but I think that that was like, it it feels like there were some of that that that same kind of behavioral, at least not not for Ruby, maybe for Rails, but the and I'm probably already getting myself in the trouble here. But they I I I think that it it really says something about a community when it's like actively seeking that wisdom and try and because again, Dirkan, I think what you the way you phrase it, which just really reflects your your own I mean, like, this is not your first rodeo. Like, you're not a you know, the the the you've obviously been at this for for a number of years.
Bryan Cantrill:I kinda have that perspective.
Steve Klabnik:Yep. See, there was a moment where I was like, wait a minute. I was very frustrated because I was not be able to make changes happen in in rails that I wanted to happen. And I kinda came to this realization that like, wait. How did I delude myself into the idea that this is a democracy?
Steve Klabnik:Like, David has always been very clear that that Rails is his personal project, and he builds it for himself, and he only incidentally, like, lets the rest of us use it. And, like, that's totally fine way to run a project if you want, but it does mean that, like, learnings from other things come to the degree that he is willing to, like, care about and or learn from other things. Because it's, like, not really about us. It's just purely about him. And, like, it's weird because I think, like, the entire Rails community, like, thinks of it as, like, an example of our open source project.
Steve Klabnik:And in many ways, sort of is, but also, it's, like, barely an open source project in some ways, which may you know, maybe I'll get in trouble for that or whatever. But, like, I don't think David has ever really implied anything less than, like, I I do everything for me, and this is, the way that I want it done, and that's the thing at the end of the day, ultimately. So Yes.
Bryan Cantrill:Yeah. Yeah. And it's kinda it is interesting because it that does become, as you say, like having that kind of the BDFL model or what have you, it's like the degree that that's gonna kinda look to other communities for its wisdom kinda depends on that person. And if it's if it's kind of a BDFL model, it's like almost kind of tautologically not really looking. I mean, it's it's pretty inward looking at some level.
Steve Klabnik:The b is e l is totally fine as long as the d is b.
Bryan Cantrill:Yes. As long as the d is b. Exactly. Yeah. Well, I so it's Dirkan, how do you feel that the the all this kinda ended?
Bryan Cantrill:So we got I mean, probably, perhaps more notoriety on this than you than than you than you might or maybe this brought attention to it in a positive way. Mean, how did this kinda how do you feel this kinda netted out for for Rust Up, for the community, for for your own kind of feelings?
Dirkjan Ochtman:I'm happy that, like, Steve shown a positive light on it and, like, maybe this Ox and Friends episode will also help. I think for me it's not done yet because we still need to decide on a path forward, right? And so that's Right. Might involve some further tricky conversations and painful migrations from several people and undoubtedly some negative feedback from that. So I think ultimately we'll still have to see how it goes, how it goes down when we make more of a decision on what it's gonna look like in the end.
Dirkjan Ochtman:But I like to think that Rust up will be used more in the future. Rust up commands will be used, will be ran more often in the future than they have been run so far, and so improving things, to your point about having to change, or being open to change is important, because we can only have nice things if we're willing to change things. And so we need to be able to make changes, but we have to be careful about it and manage them well.
Bryan Cantrill:Well, and I think we also have to, like, constantly be looking for third paths where the the it's just too easy to kinda get in our bunker of, like, the of one extreme or the other.
Adam Leventhal:Change or not change. Right?
Bryan Cantrill:Like, want and change or can't change at all. It's like, how about change with constraints and then figuring out what those constraints are and like how can we be creative about minimizing where where we have to have a change that's gonna that is going to break things. How can we minimize that? How can we I you know Yeah.
Dirkjan Ochtman:Try to prevent flag days, make it opt in or like
Bryan Cantrill:Make it opt in. Right. Exactly.
Dirkjan Ochtman:Put in put up warnings first before you actually make the change, all that stuff to make it a more gradual change where you have chances to accept feedback along the way without breaking people. So Yeah. That stuff.
Steve Klabnik:One of my one of my favorite related stories of this is like how Make uses tabs because like the author like, I had I had a dozen friends who are already using it, and I didn't wanna break them. So I kept tabs in even though I wanted to switch it to spaces. And like with that very insightful, like, more commands will be run-in the future than in the past thing. You know what I mean? Like, you're like, oh, you know, it literally inflicted tabs on millions and millions of people because he says tens of millions in the post, but like because of not wanting to disrupt 12 people.
Steve Klabnik:So, you know,
Bryan Cantrill:how it goes.
Steve Klabnik:It's a balance.
Bryan Cantrill:It is a balance. I I like and like, look, I've known Stu for a long time. He and I'm gonna say that I'm gonna actually I'm gonna really make some friends here. Eric Almond does the same thing with Sendmail. You can't have it both ways.
Bryan Cantrill:You can't be like, if you because Stu is like, I am like, you may know me from bake. You're like, oh, actually good. I've been wanting to actually I've been looking for you my entire life. We need to have a white space conversation. He's like, no no no, I didn't do and it's immediately like washing his hands up and like, no no, I because that's I had a lot of people since then and I have it's like, have it one way or the other.
Bryan Cantrill:Anyway, yeah, I agree though the white space in in and make and I if you it is a is a a circle of hell that I have not found myself in for a really long time is trying to find the white space mistake in this make file. And it's so that's our lives are much better for it.
Steve Klabnik:Rust had a load bearing knob for years in the make file for building Rust, but yeah.
Bryan Cantrill:Think this is Durkan, thank you, first of all, it's been great to have you on here and and Steve, thank you for, I think, for writing the piece. I think it was a great you know, kind of put that in opposition to kind of this earlier episode with with the where where things have kind of gone off the rails. I also think, Steve, honestly, like, you know, you you talked about the things that you were kind of wanting to to come away from in the the rails community and to make the Rust community much more welcoming. And I think that, like, you definitely I you you you were a huge influence on that and on on kind of shaping the community that you wanted to live in. So I think it's you know, thank you for all your years and years and years in the Reddit and hacker news minds and everywhere else that you you find yourself because of helping to to define what the community is.
Steve Klabnik:I appreciate it. Community is made up of people. And so other people other people play just as much of a part, but I was, like, you know, deliberate about trying to do it. But, you know, obviously, it's a lot of other people doing work too. But, yeah, I'm glad I'm I'm I'm happy with where we are at.
Steve Klabnik:You know? Like, I don't know someday when Rust plus plus happens. We'll see how that shakes out. You know, maybe we can do even better next time. But, like, you know, I do think that that all of us back in the day did a as good of a job as anyone could ask for.
Bryan Cantrill:Yeah. I think we've got some good bones. I think that we that, you know, the the community you know, the part of what I I kinda like about Rust is people come from a bunch of different folkways, if you will. And at least I still remember what it's like to be new to Rust. And I think that even though it's been, you know, it's been seven years now or whatever, I I I think that the and I think that's really important that we that we kinda treat one another with empathy.
Bryan Cantrill:And, Dirkion, you definitely did on on this and I think felt everyone's pain. And definitely appreciate it, especially, you know, you got other things going on and you're you're you're this is, as you say, this is all volunteer activity. Thank you very thank you very much again for your service. Very, very deeply appreciated. And we we've all benefited from it.
Bryan Cantrill:So
Dirkjan Ochtman:Thanks.
Bryan Cantrill:All right. Well, I looking forward to the the, I would say that the next one, but I think that certainly looking forward to Jerky on anything we can do in terms of helping out on Rust Up and and the other projects that you've taken on. Really appreciate all of that. And Steve, thank you as always for deleting the first reply,
Steve Klabnik:I guess.
Dirkjan Ochtman:Yeah, yeah. It's a good time. All right. Thanks everyone.
Bryan Cantrill:Talk to you next time.
Creators and Guests
