Algorithms + Data Structures = Programs - Episode 108: Jane Losare-Lusby on Rust! (Part 3)
Episode Date: December 16, 2022In 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)
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
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
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.
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
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
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
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
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.
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
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.
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,
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
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
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.
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,
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.
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.
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,
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,
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,
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.
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
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.
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
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.
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.
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
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
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.
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
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
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.
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
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
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,
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.
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
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,
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
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.
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
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.
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
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.