Algorithms + Data Structures = Programs - Episode 108: Jane Losare-Lusby on Rust! (Part 3)

Episode Date: December 16, 2022

In this episode, Conor and Bryce finish their conversation with Jane Losare-Lusby about the Rust Programming Language.Link to Episode 108 on WebsiteTwitterADSP: The PodcastConor HoekstraBryce Adelstei...n LelbachAbout the Guest:Jane Losare-Lusby is currently on both the Rust Library Team and the Rust Library API Team. She is also the Error Handling Project Group Lead, the Rust Foundation Project Director of Collaboration, and a Principal Rust Open Source Engineer at Futurewei Technologies.Show NotesDate Recorded: 2022-11-02Date Released: 2022-12-16https://cheats.rs/ADSP Episode 106: Jane Losare-Lusby on Rust!ADSP Episode 107: Jane Losare-Lusby on Rust! (Part 2)Rust Evangelism Strike ForceRust Evangelism StrikeforceRust Governance TeamsA List of Companies that Use Array Languages (J, K, APL, q)A List of companies that use HaskellHoogleRoogleKotlin Programming LanguageCarbon Language: An experimental successor to C++ - Chandler Carruth - CppNorth 2022Carbon GithubAwesome Rust MentorsClojure BridgeIntro Song InfoMiss You by Sarah Jansen https://soundcloud.com/sarahjansenmusicCreative Commons — Attribution 3.0 Unported — CC BY 3.0Free Download / Stream: http://bit.ly/l-miss-youMusic promoted by Audio Library https://youtu.be/iYYxnasvfx8

Transcript
Discussion (0)
Starting point is 00:00:00 like my kind of my theory of language evolution in general is that like languages grow and then they they like innovate and then they inspire and eventually like people will like migrate from language to language and but then there are other people who will stay and i think that this is kind of like it goes down to some like aspects of human nature where there are people who tend to be more interested in change and people who tend to be more interested in change and people who tend to be more interested in staying where they currently are. Welcome to ADSP, the podcast episode 108 recorded on November 2nd, 2022. My name is Connor and today with my co-host Bryce, we finished part three of our three-part interview with
Starting point is 00:00:48 Jane Lazari-Lusby while talking about the Rust programming language. How much can you say about what's been going on in Rust? I can say that there's like some top level interpersonal breakdowns that caught and some just like structural issues that kind of exacerbated the cause those I would say, where the like the kind of central governance body, the core team became siloed from parts of the project and it caused trust breakdowns across the to be like okay this structure isn't working we need to figure out a new way to do this and solve these problems and so we're working on redesigning and like evolving that top level team and kind of like how we how we go about kind of the the most general governance of the project but like the actual like teams themselves like lang lives everything is they've been functioning very effectively kind of right now i like to say like we're working more like an archipelago than an org tree um so it's like a lot of kind of independent but like you know we work together and we like cross-pollinate
Starting point is 00:01:56 but there's not like a central place for us to easily get together and communicate very often yeah i i think um for for open projects governance models are really hard it's really hard to get things right yeah um you know there's i think often you end up between one of two extremes there's like the benevolent dictator for life model um and then there's the like sort of committee model yeah which which which we call, we termed it here. It's BDFL, Benevolent Dictator for Life. And then there's BTFN, Benevolent Team for Now. Yeah.
Starting point is 00:02:34 And it's going to catch on if I can remember it and not make the listeners wait. But it's going to catch on. BDFL versus BTFN, which sounds like Rust is closer to. So on the one extreme, you have the benevolent dictator for life. On the other extreme, you have what C++ has, which is where you have some sort of committee model where you
Starting point is 00:02:56 have a large number of stakeholders, all of whom can hold up progress if they feel that something is being done wrong. And it's hard to be nimble when you have the large set of stakeholders and when you have
Starting point is 00:03:18 a much smaller set of stakeholders, you can be more nimble, but then you have the risk of that set of stakeholders becoming alienated from the you know the community at large yeah or just having you know a small handful of people making decisions it's hard to strike a balance and i think the best the best processes are the ones that can evolve yeah absolutely like self-repairing organizations are like super important like being able to have feedback loops and like actually being able to
Starting point is 00:03:44 self-evaluate and be like is this working like is there something we should change and being able to have feedback loops and actually being able to self-evaluate and be like, is this working? Is there something we should change? And being able to address those problems and being willing to try out new things, I think, is kind of critical components to an effective organization. Yeah. Yeah. And Russ, does the core team, how do people get put onto the core team or uh like how do how do people get put onto like the core team or to like a particular team is it and is there is there like a notion of like a term limit um at you at the top echelons
Starting point is 00:04:13 historically no term limits people are just invited by the team um right now it's basically in flux right now we have an interim governance body, which is the current members of core, the project directors to the board of foundation, and all of the top level team leads, top level teams being teams that do not have a parent team. And so, and those, like all the teams right now, basically work the same way where it's like invite, like you, like if all the teams right now basically work the same way, where it's, like, invite. Like, if the teams recognize your work and think that they want to encourage it, they can invite you to the team.
Starting point is 00:04:51 Or you can ask them and be like, hey, I think I've been doing a bunch of work and I'd like to help out. And I think I'd be a good fit. And they can be like, okay, sure, yeah, we agree. But it's not really well documented at the moment. It's, like, one of the things we're working on right now. Like, I can talk about kind of the draft of the RFCc that we have in place of like what we're like looking at what we're looking at is adding a representative body where it's um a it's like a council essentially where you have the you have a representative taken from each of the top
Starting point is 00:05:20 level teams and those those top level teams become sub teams of the council and you have shared membership from those representatives they're on both teams and that acts as the link that helps with communication between the the various teams and um then there will be uh terms not necessarily term limits but there will be like after um i think a year or two um basically like reselection you can like reaffirm i think actually there might be term lines i think we might be talking about like not more than two or three consecutively but um i don't think that's like i think the general vibe is that we want to have like some fresh people coming in like like getting new people experience as well as keeping some of the institutional knowledge and so it can be a double-edged sword.
Starting point is 00:06:07 You know, the boost foundation has term limits that they rotate. Who's the chair of the, of the, the, what used to be the steering committees now the board, and then they rotate the folks who are on the board. And I think it's both good,
Starting point is 00:06:23 but also like the person who's currently the chair of the board, I think it's both good but also like the person who's currently the chair of the board I think is doing an amazing job and I'll be really sad when somebody else steps in because I think it's really high bar to meet and you know I don't it's not that I would want him to do the job forever it's just that
Starting point is 00:06:40 I would not want him to be limited to you know the one or two year period that had previously been the term. So it's tough to balance because on the other hand, you don't want to have somebody that's been doing the same thing for 10, 20 years. Then I think you start to get stagnation. Yeah, for sure. I did not know about the rust evangelism strike force i did google it and came i did see a lot of very nice images and it has me sort of confused because um
Starting point is 00:07:14 i mean i think it's hilarious that uh they've got subreddits dedicated to this stuff but it's i mean i'm curious as to like why Rust has this reputation versus every other language that like, like I personally, I don't really consider myself an APL or BQN or J evangelist. But like my, my favorite programming languages are array languages, which are not used really very widely. There are a few companies like Like there's one of those, I'm not sure if you've ever seen those GitHub repos that are like companies that use Haskell. And it's like a list of all the major companies of which there are a few.
Starting point is 00:07:53 All three companies? No, like there's like hundreds that use Haskell. Like even GitHub and Facebook. He loves array languages so much that he won't even let me troll about them. No, well, no, you were trolling about Haskell right there. Oh, yeah, fair, fair. But there's a similar repo for array languages that has, you know,
Starting point is 00:08:16 I don't know if it's 100 companies on there, but, you know, there's probably more than 100 companies out in the world that are making use of these. But I don't really consider myself an evangelist, but I've definitely given a ton of talks that it's like, basically like preaching, you know, what you can learn from going to this different paradigm that will change the way you think about solving problems. It's not necessarily so that you should go write your code, you know, your production code in this language, but it's like, going to Haskell or going to, you know, array language or going to a Lisp, you're going to learn new things. And even if it's like going to Haskell or going to, you know, array language or going to a list. You're going to learn new things.
Starting point is 00:08:47 And even if it's just about the tools, like Haskell, I learned about Hoogle, which I'm not sure if you're familiar. I learned that Rust has Roogle. Yeah, which is frigging amazing. Like Hoogle is definitely, I'm not sure if it's top three, but definitely top five coolest things I've ever discovered in terms of tools or IDE functionality. We should maybe explain what this is for the listener who may be unaware.
Starting point is 00:09:11 Yeah, very quickly. I mean, it's a little bit different because Haskell has type signatures and a really, really strong type inference engine. So to try and think about something like this in C++ or even Rust, it's a little bit trickier. But I guess for Rust, because they come from ML background, it's easier. But basically, you can ask for every single function that gives you a list of integers, given a list of integers, returns you a list of integers,
Starting point is 00:09:36 such as reverse or shuffle or something like that. And if you wanted to find every function that takes a list of integers, a single integer, and then returns you a list of integers, it'd give you the functions like that. And if you wanted to find every function that takes a list of integers, a single integer, and then returns you a list of integers, it'd give you the functions like, uh, take and drop or, you know,
Starting point is 00:09:51 whatever your language is. I think Russ calls them take and skip. Um, but, uh, it's, it's phenomenal. And there's a few other features,
Starting point is 00:09:57 um, or tools, whatever you want to call them. Uh, and so the point is, is like, you go to these different languages, you learn a lot of awesome things.
Starting point is 00:10:04 And why is it that Russ for some reason has a repeat like got this whole subreddit thing of like trying to sell the language too hard because when really a lot of the times when i'm listening to an elixir podcast or a python podcast they're really doing the same thing you know where they're like you know python 3.11 just came out and it's now 60 faster unless if you're using numpy in which case it's zero percent faster because that's actually just calling c++ code um and and they're all you know promoting their language so do you know why like rusk got because it seems like every language does that to a certain extent i definitely don't have like a clear answer but i can i can like make some guesses i think on at one level the rust community
Starting point is 00:10:45 has like leaned into it and like has like they've participated in the meme and have perpetuated and amplified it to a degree i think another element of it is actually just like the context from what you're viewing it from i'm not sure that rust has really this same um like reputation amongst other language communities as much as it is like more in c++ and c um i'm not positive on this personally like people from other communities can come like fact check that um but my guess is that like like my kind of my theory of language evolution in general is that like languages grow and they like innovate and then they inspire. And eventually like people will like migrate from language to language. And but then there are other people who will stay.
Starting point is 00:11:34 And I think that this is kind of like it goes down to some like aspects of human nature where there are people who tend to be more interested in change and people who tend to be more interested in staying where they currently are. And so when you see like right now, C++ and I think also Haskell in a sense, I think was on the other side of this when it comes to Rust, where you get these communities that where they're doing a bunch of innovation and then a new language comes along that's doing a bunch of new things and all the people who were like chafing under the existing system or were interested in trying something new a lot of those people go and join the new community and you get left with a lot of the people who were on the more conservative happy with the current side happy with staying where they currently are and so i think that that kind
Starting point is 00:12:19 of skews the the reaction a lot where like as time goes on you get kind of more of a concentration of people who are are like not excited about the alternatives that are being presented and so like from the c++ perspective you see a lot of this kind of criticism of like these people are like shoving things down our throat and all this stuff because like they see their friends leaving it's like it's understandable i wonder if there's a similar phenomenon that exists in like the kotlin community like i don't i have spent very little time in jvm languages i think it's universal yeah like is it the same like i'm not sure if Kotlin has a Kotlin. Oh, yeah. I'm not sure about that. Evangelism Strikeforce, like, subreddit kind of thing.
Starting point is 00:13:08 But I wonder if there's a lot of the same, I wouldn't call it animosity, but, like, friction between those two communities where Kotlin is clearly, nicer code completion to the point where, similar to how Carbon's being promoted, the folks at Google that are working on it, that you can take some existing Java code, and they've shown these in Google I.O. talks. And it's like 50 lines of Java trying to do some immutable class thing and then you click a button and poof it's like down to like three lines of kotlin that like has all that stuff auto-generated behind the scenes how beautiful is that um and i wonder if there's a little bit of the same kind of friction of folks that are in the camp of like java can have all these nice things why would we throw away all this tech, you know, all this, you know, technology, technological debt or, you know, investment, or if you want to use a nicer term than like to go and work on a new language versus the folks that saw Kotlin and then absolutely.
Starting point is 00:14:17 And I think Google is like, they promoted it to their kind of golden language for Android app development, at least, at least. At least that's what I've heard from like, you know, arm's length distance or something like that. I don't work at Google, but I recall when I was following Google I.O. events closely that there was a shift from one Google I.O. in 2018 or something to 19, where it was like, you know, here's a support for Kotlin if you want it. And then it was like Kotlin first at uh at like the next year's one i i have no insight into those communities but i
Starting point is 00:14:50 would be very curious to know so if any of the viewers have any any insight that would be very interesting our viewers are pretty smart they might know actually i'm i'm fairly certain that our our uh our listener or listeners not viewers listeners but i guess our uh i'm pretty certain that our listeners are a good bit smarter than us like we we we have had a fair number of episodes that have just been uh listeners correcting us about things and that's true yeah whenever every once in a while we have a listener and a good friend bandine who'll like dm me and he's true yeah whenever every once in a while we have a listener and a good friend ben dean who'll like dm me he's like all right i've i have a long enough list from the last like 12 episodes uh you can either address these you know just in line or you can
Starting point is 00:15:37 have me on and i will bring them up in person i think it sounds more like a threat it's for like an individual to outsmart a group I think that's you know it goes back to the BDFL versus committee the dental committee for now um it's like the relying on group wisdom gets you the the better outcomes long term even at the cost of speed so and that's the same reason you're gonna have viewers who always know more than you because there's so many more listeners listeners i mean now that i'm unofficially switching to rust i just i feel like i don't need to know stuff you know it's just well the compiler clippy all these things will just uh you know i just got to figure out the memory model a little bit better because i still trip up up up on that every once in a while. You know, oh, right, I got to clone something. I got to copy something.
Starting point is 00:16:25 And that's actually going back to the trait system when Bryce was asking how it works. I have not implemented, quote unquote, I actually don't know what they're called. Maybe they're traits. But it's like when you go impl bracket, impl angle bracket, you know, your generic type T, colon, and then a list of stuff. Those are all traits those are traits or is there another word those are trait bounds like inside the yeah the the angle brackets is for generic parameters and anything you put after a colon is a is a bound there's like three different ways to specify bounds it's not my favorite
Starting point is 00:17:01 part of the language how there's like duplication of syntax there but you know you get what you get yeah so those are balanced yeah so those like i haven't done anything with them other than like try to do something with like a generic trait and then they're like oh you know you can't do that it needs to be orderable or you know or something so i have a bunch of stood colon colon compare colon colon partial order and then hash hash compare eek clone clone marker copy compare or i don't know any of that stuff but uh the compiler was just like well if you want to do this thing if you want to convert stuff into a hash set or something you need this and then they're like would you like to add it and i'm like i mean that sounds like a reasonable thing that i would like to do in order to get this
Starting point is 00:17:44 code to work and then i just you know copy paste. And so that's the thing is like, I don't know, it's like, we're talking about our listeners being smarter than us. It's like, I no longer feel like I actually have to be that smart to program in this language. Whereas like, you know, previously, I was memorizing tables of, you know, the 1356789 rule in C++ of if you don't have a destructor, then you need this, blah, blah, blah. And now it, 8, 9 rule in C++ of if you don't have a destructor, then you need this, blah, blah, blah. And now it's like, well, I don't care if that exists in Rust because apparently I don't need to know it. The compiler will just tell me.
Starting point is 00:18:12 Eventually you'll get there where you're like, you know, all that stuff. And then you're going to be working on actual new features or doing whatever software development you're doing. You're going to be an expert on something that's gonna be relevant that no one else knows about if you'll make some cool contributions, so Yeah, maybe that's why maybe that's why they rust has the reputation it does so much it seems has been invested into the beginner experience that You don't like you just end up feeling like a superhero and then like you want to go and tell people
Starting point is 00:18:41 Oh my goodness, like, you know, this is this is so great. and uh anyways we're at the time that we said i probably do have to uh stop because i've got to be on a plane tomorrow and the day after and then just in general okay is there any in our last one two minutes here is there anything you want to plug or mention that we haven't talked about that is worth plugging or mentioning or bringing up and no you're not telling your shin we're talking about the training we're talking about the training no we're we're giving this is jane's time uh you want to be you want to be my new co-host jane i wouldn't mind joining more of these rust episodes i'm not sure about committing to co-hosting but being a guest has definitely been very fun um the as for plugs um there is a one project of mine that i wouldn't mind plugging which is awesome rust mentors so there's like a list
Starting point is 00:19:35 of just basically like all sorts of lovely rustations that are quite experienced and have been using the language for a while and And basically like the languages they speak, time zones they're in, I think. Definitely the topics of interest and contact info. And I would highly recommend anyone who is like kind of trying to navigate the open source Rust or like trying to, wants to get deeper into it and wants someone to talk to,
Starting point is 00:20:04 doesn't have Rust people they already feel comfortable talking to, you can check out that list and make a friend and start getting better real quick. I mean, honestly, no wonder Rust has this reputation. It's just too nice. Bryce, does C++ have anything even remotely close to this? I don't think so. No.
Starting point is 00:20:29 What's the closest thing? Just like shooting a tweet off into like the Twittersphere? Like you probably will get answers that way. If you could join the C++ committee, then you could send an email to the reflector. Something like that. I mean, there used to be, I don't know. There are places they include discords nice but there's um there's not like an official place that's that's good for us
Starting point is 00:20:54 does this exist in other languages i don't think i've i think i recall actually seeing this in your twitter bio but i had not um i don't recall who i feel like i've seen people talk about starting it in their own language communities i don't know if there's any that are like particularly active at the moment the closest thing i can think of is bridges like i know closure and ruby are two communities that had things called ruby bridges i think and closure bridges which were like i've actually never been to any so i'm sort of just making this up, but I think there were like sort of either virtual or in-person meetups slash like beginner weekends where it was intentionally designed to sort of people that wanted to either start learning programming or to start learning Ruby or Closure. And with an emphasis on, you know,
Starting point is 00:21:41 really making sure that they were casting a wide net to get a diverse group of people and that we're like really focused on inclusivity and like making people feel welcome but that's definitely that's definitely not the same as we have a rust bridge as well sort of it's like a kind of distributed organization of like like chapters and stuff that do i think the same thing it's based on roby bridge but this is more this is more of like a kind of autonomous just it's just a website and people just interact with it and are able to pull and like find people This is more of like a kind of autonomous, it's just a website and people just interact with it and are able to pull and find people to talk to without having to really sign up for anything
Starting point is 00:22:13 or anything so formal. Awesome. Well, we will definitely leave a link in the show notes for folks that are interested, hopefully. We will see how well this episode came out. Wait, can I talk about my train app now? Wait, how long is this going to take? It's not going to take long.
Starting point is 00:22:29 I'm just going to read you. All right, Jane, hang in there. If you need to drop off secretly, silently. So I love Japan, but sometimes there's like an app or a website from the Japanese government that just causes me great anxiety and so so finally the uh the japanese bullet trains the shinkansen they now have a a way where you can um uh buy tickets online um this is like a new thing like very advanced trains they're always on time if they're like if they're like
Starting point is 00:23:04 15 seconds late they apologize um they're always on time if they're like if they're like 15 seconds late they apologize um they're always on time but like they only had a website recently and now now they have an app too um no two-factor authentication passwords have to be between four and eight characters what it does not remember the password or yeah eight max doesn't remember the password doesn't have any support for biometrics, logs you out after five minutes. So you need to reenter your password every five minutes. Please tell me it doesn't save payment info.
Starting point is 00:23:34 It stores your credit card credentials and makes purchases without requiring any additional authorization like your CVV code. And you cannot make purchases between 11.30 pm and 5 30 a.m it's just like i had to set a reminder to myself that like when i get back from japan go and delete my payment information from this app for when it is inevitably hacked it just makes me very sad that was kind of worth it actually I thought it was it has a UI from like the 90s which is sort of what I expect from
Starting point is 00:24:12 pretty much any government website but like the UI isn't as bad as I'd thought but it's just so insecure makes me sad. Damn. Yeah. Thanks for listening. We hope you enjoyed and have a great day.

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