- MCP server with stdio transport for local use - Search episodes, transcripts, hosts, and series - 4,511 episodes with metadata and transcripts - Data loader with in-memory JSON storage 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1591 lines
65 KiB
Plaintext
1591 lines
65 KiB
Plaintext
Episode: 3369
|
|
Title: HPR3369: Linux Inlaws S01E33: The Return of the Rust
|
|
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr3369/hpr3369.mp3
|
|
Transcribed: 2025-10-24 22:08:02
|
|
|
|
---
|
|
|
|
This is Hacker Public Radio Episode 3369 for Thursday,
|
|
the 1st of July 2021.
|
|
Today's show is entitled,
|
|
Linux in Laws S0133,
|
|
the return of the rest and as part of the series Linux,
|
|
in laws it is hosted by Monochromic and is about 64 minutes long
|
|
and carries an explicit flag.
|
|
The summary is a show with Steve Klabnik,
|
|
uncorroded metal, hipster programming languages,
|
|
and the analog world.
|
|
This episode of HPR is brought to you by AnanasThost.com.
|
|
Get 15% discount on all shared hosting with the offer code
|
|
HPR15, that's HPR15.
|
|
Better web hosting that's honest and fair at AnanasThost.com.
|
|
This is Linux in Laws,
|
|
a podcast on topics around free and open source software,
|
|
any associated contraband,
|
|
communism, the revolution in general,
|
|
and whatever fence is your tickle.
|
|
Please note that this and other episodes
|
|
may contain strong language, offensive humor,
|
|
and other certainly not politically correct language
|
|
you have been warned.
|
|
Our parents insisted on this disclaimer.
|
|
Happy mom?
|
|
Thus the content is not suitable for consumption in the workplace,
|
|
especially when played back in an open plan office or similar environments,
|
|
any minors under the age of 35 or any pets,
|
|
including fluffy little killer bunnies,
|
|
you trust the guide dog unless on speed,
|
|
and QT rexes, or other associated dinosaurs.
|
|
This is a season one episode 33,
|
|
the return of the rust.
|
|
Martin, how are things?
|
|
Things are great.
|
|
One thought we have a special guest tonight.
|
|
Yes, we do indeed.
|
|
Perfect, so that's great.
|
|
Indeed, his name is Stephen Klavenik,
|
|
but without further you, Steve.
|
|
Martin, why don't you introduce yourself?
|
|
Yeah, hi, everybody.
|
|
I'm Steve.
|
|
Thanks for having me on.
|
|
I've been doing like open source software stuff
|
|
for a really long time at this point,
|
|
but my project over the last couple of years
|
|
has been the rust programming language,
|
|
and so that is, you know,
|
|
probably we're going to talk about most here today.
|
|
Before that, I worked on Ruby and Ruby on Rails,
|
|
some other shanigans.
|
|
You know, I've been around for a while,
|
|
even though I was a user for a long time,
|
|
before I did maintain myself.
|
|
Like, I had a five-digit slash.id,
|
|
maybe it was low sixes.
|
|
Wow, I was like a kid at the time,
|
|
but like, yeah, I remember like riding my bicycle
|
|
to the local library,
|
|
because they had internet
|
|
to be able to like read slash.
|
|
So, they've been around for a minute.
|
|
Inside the library,
|
|
hell, this is giving you a joy.
|
|
Yeah, the cat video network,
|
|
normally known as the internet,
|
|
has a vicious rumor on you in it.
|
|
It basically says that you started coding
|
|
at the tender age of seven.
|
|
Yeah, I mean, like, it's always hard to remember exactly.
|
|
Like, that's the closest data I can specifically remember,
|
|
but I've been programming long enough
|
|
that I don't remember what it was like
|
|
to not know how to program.
|
|
And if I like triangulate the events,
|
|
so specifically,
|
|
my uncle was like really into computers in the 80s.
|
|
He did a whole bunch of stuff.
|
|
He did the whole flip the physical bits
|
|
and hit a button to save the bite
|
|
into the machine kind of.
|
|
Like, he was looking to fall back in those days.
|
|
And so, he brought a Mac plus home to my grandparents house
|
|
to show them like,
|
|
this is what I'm doing with my life.
|
|
Here's this computer thing.
|
|
And I happened to be around,
|
|
and I was a small child.
|
|
And so, I think this was about when I was seven.
|
|
And you fell for Mac, okay?
|
|
Yeah, basically.
|
|
Well, so the thing is,
|
|
he pulled up a colossal cave adventure.
|
|
So, that had been courted.
|
|
I see.
|
|
And so, I was like, oh, man,
|
|
I just wanted to play that game forever.
|
|
So, then, a couple of months later, for Christmas,
|
|
there were all these computers you could buy
|
|
at the back of this year's catalog.
|
|
And so, I got this computer
|
|
as based on a Z80, basically,
|
|
but had a basic interpreter on it.
|
|
And so, I just learned how to write stuff
|
|
and basic on this tiny little computer.
|
|
And that was sort of the start of that.
|
|
So, yeah, I was about seven years old.
|
|
Very young.
|
|
So, there's a little bit of a journey
|
|
of writing basic,
|
|
at the 10th edition of Seven, right up to rust,
|
|
for the two people in the audience
|
|
that do not know what rust is.
|
|
Maybe you can explain what this,
|
|
what this, I mean, you see, every time I go to
|
|
one of these hipster coffee shops,
|
|
I see people with the MacBook Pro is typing away,
|
|
doing the next big thing, inventing the next big thing.
|
|
But you see, over the last five years,
|
|
more and more MacBook Pro has this sticker
|
|
that looks like a cork with an R in it on them.
|
|
So, that must be something going on.
|
|
Totally. So, yeah.
|
|
So, rust is a programming language, first and foremost.
|
|
So, you know, you use it to write software.
|
|
And you can use to write a lot of kinds of software,
|
|
but the sort of, I like to think about things in a historical way.
|
|
So, the reason that, like, rust sort of
|
|
came into existence was to do stuff in the system space,
|
|
not where it is super overloaded,
|
|
but, again, in a second,
|
|
but to make it, like, better and specifically more safer.
|
|
And so, what that means is, like, kind of complicated,
|
|
but Mozilla picked it up to help Firefox be better.
|
|
So, you can imagine, like, you're implementing a web browser.
|
|
You are doing so in C or C++,
|
|
because that's what every browser is implemented at this point.
|
|
C++, of course, there's some C and everything, basically.
|
|
And so, Mozilla was like, we want to make it better.
|
|
We think that one of the ways to make it better is to have a better language
|
|
for doing this work.
|
|
And so, they picked up sponsorship of the rest project
|
|
as sort of a long-term effort to make that happen.
|
|
One of my favorite bugs on Firefox was actually closed a couple years ago.
|
|
And it was someone who had reported a corruption in a preference option somewhere.
|
|
And that bug had been filed like 15 years ago.
|
|
And they recently rewrote that component in Rust,
|
|
and when they did so, it fixed the bug, and they closed it.
|
|
And I was laughing, I was like, thinking about, like, okay,
|
|
imagine that you could tell the future.
|
|
Like, you would go back in time to that bug.
|
|
This person files this small corruption issue.
|
|
And you're like, okay, we're going to fix this bug for you.
|
|
But first, we're going to go off and make a whole new programming language first.
|
|
And then we're going to come back and read the subsystem.
|
|
So, you'll get this bug fixed, but it's going to be like a decade.
|
|
So, anyway, yeah.
|
|
So, that's like kind of thing.
|
|
So, Rust has a lot of this sort of, like, low level kind of programming
|
|
is sort of in his blood.
|
|
However, for various reasons, it also could feel a lot higher level.
|
|
And so, there's a lot of people who it turns out
|
|
have wanted to do lower-level programming.
|
|
But it felt either intimidated or, like, unwelcome by the low-level, like, ecosystem.
|
|
And so, Rust has kind of, like, positioned itself in many ways,
|
|
is like, many programmers sort of first lower-level language.
|
|
It's more familiar and approachable to them.
|
|
And so, we have a lot of folks who are from sort of, like,
|
|
Ruby, JavaScript, Python, backgrounds,
|
|
who are now writing device drivers, because they picked up Rust
|
|
for whatever reason.
|
|
And so, that's kind of the sort of where Rust fits in the landscape.
|
|
So, it's kind of like a very low-level language,
|
|
but it feels a lot higher level a lot of the time.
|
|
So, there's a lot of CLI tools that are being written in Rust now.
|
|
And there's, like, web services even that are being written in Rust.
|
|
And so, it's kind of all over the place.
|
|
It turns out you can use languages from almost anything.
|
|
Cool. Yeah, I mean, I think all you haven't mentioned
|
|
is how you got involved in...
|
|
Yeah, because I think you mentioned you were doing Ruby before, is that right?
|
|
Yeah, I was doing Ruby and specifically Ruby on Rails.
|
|
And it was kind of a fun thing whenever you work on something for a really long time,
|
|
eventually, you know, like, I'd really liked programming in Ruby,
|
|
and I'd like to use Ruby on Rails.
|
|
So, I kind of set a personal goal for myself to, like,
|
|
I would like to get one patch into Rails someday.
|
|
And then, I got a patch in.
|
|
And I was like, cool. That was fun.
|
|
I want to do that again.
|
|
And so, then I got three or four.
|
|
And then I was like, I want to be on the team for Rails,
|
|
and maybe even the team for Ruby.
|
|
And so, I started getting more and more patches in.
|
|
Eventually, I was on the Rails team.
|
|
And then at some point, you're like, okay,
|
|
now I'm working on my framework and my language.
|
|
Like, where do I go from here?
|
|
Like, I sort of, I just burned out, it's kind of wrong.
|
|
But I felt like I accomplished all that I could accomplish.
|
|
And I was sort of like looking for whatever's next.
|
|
And I don't live where I'm from.
|
|
So, I went back home for Christmas to visit my family.
|
|
And I grew up on a farm in the middle of nowhere, sort of kind of.
|
|
And so, I didn't know a lot to do.
|
|
And so, I was reading hacker news.
|
|
And there was this Rust 0.5 has been released.
|
|
Like, item appeared.
|
|
And I was like, oh, I like programming,
|
|
like, which is I should check this out.
|
|
And I read the sort of like basic documentation
|
|
I had at the time.
|
|
And I thought, oh, this is kind of cool.
|
|
I want to give it a try.
|
|
I have nothing to do.
|
|
I'm hanging out.
|
|
So, I did.
|
|
And I tried Hello World.
|
|
And I couldn't get a sickle pile.
|
|
And I was like, oh, man, this is kind of weird.
|
|
And Rust had a reputation that was well deserved back then
|
|
for changing pretty much all of the time.
|
|
And so, I, uh, it is a drop virus,
|
|
our IRC room and ask for help.
|
|
And so, I was like, okay.
|
|
I know that, like, jumping into an IRC room
|
|
to ask for help for compiling Hello World,
|
|
like, I am probably going to, like,
|
|
your laughing, because you know,
|
|
that could over say it, right?
|
|
Like, I'm probably going to be told to, like,
|
|
the bad things are going to happen to me.
|
|
But I was bored.
|
|
And, like, I don't know if I'm in a long time.
|
|
I can handle some trolling.
|
|
So, I was like, fine.
|
|
I'll just do this, because I'm curious.
|
|
So, I did.
|
|
And instead, what I got was,
|
|
oh, a new person.
|
|
Welcome.
|
|
Uh, yeah, sorry.
|
|
It turns out, at the last minute,
|
|
we actually, like, made a small change here.
|
|
So, you need to, like,
|
|
add this change instead to get a compiling.
|
|
We're really sorry about that.
|
|
This isn't the thing we could do to help you learn more rust.
|
|
That would be great.
|
|
Feel free to hang out and ask questions.
|
|
Wow.
|
|
And I was like, holy crap.
|
|
These people are awesome.
|
|
And so, I was like, I'm going to just, like, hang out.
|
|
And it turns off that wasn't a one-off event.
|
|
It just turns out that the rest folks are really nice and really helpful.
|
|
And so, I just, like, hung out in the IRC room
|
|
and started, like, learning stuff.
|
|
And so, I kind of just grew from there.
|
|
And that was 2011 or something?
|
|
2012.
|
|
Christmas 2012.
|
|
Oh, yeah.
|
|
It's been, it's been a long time.
|
|
So, from your, I mean, when you've described your Ruby story
|
|
and onwards from that, you're not so much interested in the application
|
|
of the language or the technology anymore.
|
|
You're more of the building of the foundations.
|
|
Yeah, at that time, I was.
|
|
So, my current job actually is writing, like,
|
|
basically embedded firmware in rust.
|
|
So, I am very much like, I still do work on the language,
|
|
but, like, not as a job anymore, purely as a hobby.
|
|
And so, my job is actually writing stuff in rust.
|
|
So, now I'm more into the application things.
|
|
And I do think also, I think you can't, you can't remove these two.
|
|
So, it's like, you need to be in touch with your users
|
|
to make them work well.
|
|
So, there's always a balance there, right?
|
|
So, you want people that are working on the language full time,
|
|
but you want to make sure they're connected
|
|
to the people that are using it.
|
|
And that's actually one of the reasons why I continued to stay involved was,
|
|
so, like, not only was Missila picking up sponsoring the language,
|
|
but they were also working on this servo project,
|
|
which was, like, rewriting a new browser in rust.
|
|
So, you sort of already had one big application
|
|
that was not the compiler being written in the language.
|
|
And that did a really good job of providing early feedback
|
|
on what works and what didn't work.
|
|
And this is also why I personally spent a lot of time
|
|
hanging out in chat rooms and on message boards,
|
|
talking with people who were using the language
|
|
and finding what their pain points are.
|
|
We sort of made that a really big culture
|
|
in rust in general, like, we run a yearly survey,
|
|
where we ask users to tell us what we're doing well
|
|
and what we're not doing well.
|
|
And we try really hard to get that feedback loop
|
|
and make it as short as possible.
|
|
So, yeah, so I was interested in the early days,
|
|
especially about just the building aspect,
|
|
because I'm sort of like a programming language nerd.
|
|
Like, I like that stuff, you know, of itself.
|
|
But if you want to make a product that's useful,
|
|
you do need to make sure that you're talking
|
|
to people just using the language
|
|
and not just, like, make the language
|
|
whatever you want.
|
|
Definitely.
|
|
Yeah, this is not on all right.
|
|
Or Ada, as your colleague.
|
|
Yeah, totally.
|
|
I mean, I think that they did do a thing
|
|
that was good for their initial users.
|
|
It's problem just that their initial users
|
|
were very niche, which is like the department of defense.
|
|
Because only one department of defense.
|
|
And, you know, even if you're dominant in that niche,
|
|
which they no longer are from what I understand,
|
|
you know, you can get caught up in the Dutch Navy
|
|
use that as well.
|
|
The way it was portrayed to us,
|
|
we had this, we had this at university.
|
|
It was a language designed by committees
|
|
and it proved by committees.
|
|
And this is, that was the point in time
|
|
when I tried to run away, but I couldn't
|
|
because I had to take that quiz
|
|
because I had to form my credits.
|
|
Yeah, but more than 35 years ago or something.
|
|
Now, a quick question.
|
|
Mozilla started Rust in 2006 or 2010.
|
|
Yeah, so what's kind of interesting is is that,
|
|
so it was a personal project of a Mozilla employee.
|
|
So kind of like what happened was, at one point,
|
|
Mozilla said, we want to spin up like a research department.
|
|
So this became Mozilla research.
|
|
And so, Bren and I, who was the CTO at the time,
|
|
basically said like, I want to start this whole division
|
|
to do research.
|
|
If anyone has personal projects,
|
|
they think are suitable for Mozilla's mission
|
|
then you should tell me about them
|
|
and we'll consider turning them into Mozilla projects.
|
|
And so, Grayden Hoer, no relation to Tony Hoer,
|
|
even though they share, both are awesome.
|
|
He even resigns us in both share last name.
|
|
Grayden was an employee in Mozilla at the time
|
|
and he had been working on Rust as a personal project.
|
|
And so he kind of pitched it as,
|
|
Mozilla should be interested in this
|
|
because it would help us make Firefox better.
|
|
And so I think, if I remember the days right,
|
|
Grayden started at no six, but Mozilla adopted it in no 10
|
|
because he had been doing it on its own
|
|
and kind of it already existed as a personal project.
|
|
So yeah, so it's kind of both.
|
|
And then hit 1.0 in 2015.
|
|
So we kind of have, it's hard to determine
|
|
when things start, like yeah.
|
|
And it has been self hosting as in,
|
|
when did you start the bootstrap process,
|
|
pretty early in the process, right?
|
|
Yeah, I think it was in like 2011.
|
|
It was already bootstrap when I started using it in 2012.
|
|
So I think it was somewhere around then,
|
|
but yeah, it was written in OCAML originally
|
|
and then eventually self hosted.
|
|
But for some strange reason, Rust is not known
|
|
as the language to write compilers in.
|
|
Yeah, I mean, it's interesting
|
|
because it inherits a lot of the stuff that's good
|
|
from OCAML that makes compilers nice.
|
|
And there are a couple.
|
|
Facebook actually is porting over
|
|
one of their compilers to Rust right now.
|
|
Really?
|
|
Yeah, it's for the hack compiler.
|
|
They're hack language, I think.
|
|
It's like an open ML that compiles to JavaScript.
|
|
Or is it reason?
|
|
Facebook has like 12 languages
|
|
and I always forget which one is which.
|
|
But one of them, they're rewriting it in Rust right now.
|
|
So we'll see.
|
|
But yeah, you're right that it's not like
|
|
there's like a ton of really famous compilers
|
|
in Rust currently.
|
|
No, it's interesting.
|
|
Yeah, it's interesting because just in the side note,
|
|
you probably know a package called Pyoxidizer
|
|
that is used to package,
|
|
that is used to package by packages as it happens.
|
|
And this is mostly written Rust in Python.
|
|
Yeah, totally.
|
|
And it's kind of interesting because part of the reason
|
|
that project came into existence is because
|
|
Mercurial is written in Python,
|
|
but they're slowly writing more and more Mercurial in Rust.
|
|
And so Pyoxidizer is kind of created as a way
|
|
to make Mercurial work better.
|
|
Yeah, yeah, that's so yeah.
|
|
Mercurial is still alive.
|
|
Yes, it is.
|
|
Actually, it turns it out.
|
|
It's dead, okay?
|
|
Yeah, so well, here's an interesting thing.
|
|
Since this is a free form,
|
|
we can get an attendance podcast.
|
|
My own needs, my own needs.
|
|
Yeah, so I like many people prefer to get over Mercurial.
|
|
It's like kind of ignore Mercurial too.
|
|
But what's interesting is Mercurial kind of found
|
|
a niche in like Mono Rebo's.
|
|
Like it is kind of bad once it scales up
|
|
it's really, really large understanding.
|
|
I've never done this,
|
|
but like that's what people told me.
|
|
And so Mizzillas, all the Vizzillas actually,
|
|
their Mono Rebo is in Mercurial.
|
|
And Facebook also had their Mono Rebo in Mercurial
|
|
until really recently.
|
|
And what's kind of wild is,
|
|
this is bringing it back onto the Rust topic.
|
|
They had started writing a Mercurial server
|
|
in Rust at Facebook called Mononoke.
|
|
And now at this point, they've forked Mercurial
|
|
and they've turned it back into a centralized
|
|
version management system.
|
|
And so, yeah, so it kind of like weirdly lives on
|
|
as like literally all of Facebook source code is stored
|
|
in a Mercurial derived virtual system.
|
|
I forget what it's called these days,
|
|
but it's, yeah, it's like really interesting.
|
|
It basically says on it like,
|
|
this is an open source repo,
|
|
but we don't expect you'll be able to build it probably.
|
|
You can ask us for help and we'll try to help you,
|
|
but like right now it's just really rough.
|
|
So I haven't really investigated it super closely,
|
|
but yeah, it's kind of designed for big giant Mono Reboes.
|
|
So yeah, it's still kicking around.
|
|
It's, I mean, you hear me laughing in the background,
|
|
it's interesting the loops and bounds.
|
|
Yeah, absolutely.
|
|
Given, given Rust's heritage,
|
|
let's put this way, or legacy,
|
|
it developed, or it was spun out,
|
|
it was spun off rather as a kind of low level systems language,
|
|
but whenever basically I give presentations on Rust,
|
|
I compare it to Python,
|
|
but only in a way more compressed dense time span,
|
|
because if I take a look at the ecosystem that is out there
|
|
on something called Crates.io,
|
|
I wouldn't say it's comparable to PyPy,
|
|
but it's rapidly getting there,
|
|
and it took Rust about 10 years,
|
|
and it took Python 30 years.
|
|
Yeah, totally.
|
|
And we had the benefit of a lot of hindsight
|
|
with these things too.
|
|
And so we made that tooling happen really early,
|
|
so that way everyone used the same tools,
|
|
so that way we don't have the battle of PyP
|
|
versus virtual end, versus conda, versus poetry,
|
|
versus PyPen.
|
|
I think I got all of them there.
|
|
This is a fact, too, it's more.
|
|
It's probably one that somebody's really mad now,
|
|
because I forgot what their favorite one is.
|
|
Don't forget containers and virtual machines.
|
|
Yeah, right, exactly.
|
|
So we wanted to make sure that we had good tooling there,
|
|
but also know that network effects matter,
|
|
because these all rely on the same packaging formats,
|
|
it's actually really hard to optimize Python packaging
|
|
because of legacy issues related to Python packaging stuff,
|
|
but that's a whole another giant can of worms.
|
|
But yeah, so we're definitely,
|
|
this is what's growing,
|
|
and we sort of wanted to be that way
|
|
and kind of made that happen sort of deliberately,
|
|
so it's been nice to see it actually happening.
|
|
Yeah, I think there's like 50,000 packages in Crates.io,
|
|
let's see, yeah, 59,000 packages currently,
|
|
so it's definitely not enough.
|
|
For the view, not Rasp programmers listen to this podcast,
|
|
Crates.io would be the central package repository for us.
|
|
Yeah, just as quickly as they said,
|
|
yes, it's like my PI, exactly.
|
|
And you see what I've found most interesting is actually,
|
|
Rasp is on the constant change.
|
|
I think you put in changes every couple of months,
|
|
if I'm not completely mistaken, but at the same time,
|
|
you're driving a very strict standardization,
|
|
and Crates.io would be the primary example,
|
|
and he ended up in Chicago,
|
|
the built and packagement in the system.
|
|
Yeah, and so it's quite a fun, very interesting.
|
|
We do release changes,
|
|
but the key is, is they're all backwards compatible.
|
|
So we add things, but we don't remove things.
|
|
So we release every six weeks,
|
|
which is like very aggressive for a programming language.
|
|
I think that like one year is kind of the standard
|
|
and some take even longer than a year,
|
|
but we do one every six weeks.
|
|
And part of the reason for that is,
|
|
we actually find ironically that it lets you go slower,
|
|
because like, so if you haven't once a year release schedule,
|
|
and somebody proposes an awesome feature,
|
|
let's say you release on Christmas,
|
|
Ruby releases on Christmas, for example.
|
|
So let's say someone suggests an awesome feature
|
|
at like the end of October or early November.
|
|
So now you have these two choices.
|
|
You can either rush the feature through
|
|
to get it out for Christmas,
|
|
or it's going to take like over a year
|
|
before that feature can even land.
|
|
And so you end up creating this weird situation
|
|
where actually having slower release cadence
|
|
means that you end up rushing a lot more,
|
|
because you have this deadline
|
|
and you like kind of have to get to it.
|
|
And so we found that by releasing every six weeks,
|
|
it means that we can actually take things
|
|
and like keep them slower,
|
|
because if you miss a release,
|
|
it's only going to be six more weeks until the next one.
|
|
And so that lets us be like really slow and methodical
|
|
about adding big new features,
|
|
because we can just like wait until it's ready
|
|
and not have to feel rushed to make it out,
|
|
before there's another year is going to go by.
|
|
And we've deliberately waited on some features
|
|
like that actually the most significant recent feature
|
|
that landed is this thing called Constantinarix.
|
|
And it landed on Russ 1.51,
|
|
but it was actually technically ready at Russ 1.50,
|
|
but we said, you know, this is a big feature
|
|
and we really want to get it right.
|
|
So we're just going to like hold off one whole release,
|
|
even though we think we could release it now,
|
|
just because we want to like be extra sure.
|
|
And so that, you know,
|
|
wouldn't be possible if we released once a year,
|
|
but we only talking about six weeks,
|
|
it's like no big deal.
|
|
So yeah.
|
|
Yeah, okay, okay, enough, enough.
|
|
I mean, for the list as well,
|
|
we often have people from open source projects on
|
|
and like to sort of touch a little bit
|
|
on the the way the project is organized
|
|
in terms of structure because you mentioned the releases
|
|
and how does the project get managed or how do you
|
|
features make it in there?
|
|
How do you manage the project?
|
|
Totally.
|
|
So there's many different models, right?
|
|
Yeah, yeah.
|
|
It's actually easiest to explain it through history.
|
|
So because it kind of grows
|
|
and I didn't make sense that way.
|
|
So originally Graydon's project, he's the only person,
|
|
you know, so he makes all the decisions.
|
|
And Mozilla adopts it and they wanted to make sure,
|
|
you know, those bigger than just the creators.
|
|
So they added two other people to sort of form this
|
|
like initial kind of council.
|
|
And so that eventually became named the core team.
|
|
And I joined it in 2014.
|
|
And so at that point in time,
|
|
we were about like eight-ish people.
|
|
And so we sort of made all decisions.
|
|
People would make it get out of issue
|
|
and they'd ask about a decision and we'd say yes or no.
|
|
And that's how things would happen.
|
|
But as it came time to start getting around
|
|
to releasing 1.0 and things sort of really started
|
|
to like ramping up, it became increasingly difficult
|
|
because there was a wide range of things
|
|
that needed to be decided.
|
|
And a lot of times, you know,
|
|
not the whole core team would actually care.
|
|
So for example, I found myself,
|
|
they're focusing on documentation
|
|
and like sort of the social side of things.
|
|
And so I did less language design work.
|
|
Like I'm not a type theorist.
|
|
And there's lots of type theory stuff happening in Rust.
|
|
And so if there was a question about,
|
|
should we add this new fancy type feature?
|
|
Like I wouldn't really have an opinion,
|
|
but some of the people who really cared about type systems would.
|
|
And if there was like a new documentation situation
|
|
that needed a call, you know, I would be all over that.
|
|
But the language folks would not necessarily care as much.
|
|
And so also there became more decisions
|
|
that we had time to make.
|
|
And so we started developing this backlog of like every week
|
|
or we'd run a time meeting.
|
|
And so we decided to switch
|
|
to a kind of more federated governance model.
|
|
So what ended up happening in, I think it was like early 2015,
|
|
we switched to a system where the core team still existed.
|
|
But we've split everything up into sub teams.
|
|
And those sub teams would have full autonomy
|
|
over their part of the project.
|
|
And the core team would be more for like high level product
|
|
decisions and also cross team communication.
|
|
So we set off the language team,
|
|
had full decision making power over the language itself.
|
|
And you know, the library team had full power
|
|
over the standard library.
|
|
And so that's like a little more decentralized
|
|
than many projects, even the ones that have a core team
|
|
instead of a PDF file, usually the core team
|
|
makes all decisions.
|
|
But in Rust, the teams themselves have full power
|
|
over kind of everything.
|
|
That's still the basic way that happens today,
|
|
except for, there's a couple more details that matter.
|
|
First, all the teams operate under consensus, not voting.
|
|
So that's really matters because the team itself
|
|
needs to all agree with anything for it to go forward.
|
|
And so given that we have a bunch of small teams
|
|
that really works, there's about 200 people
|
|
involved in Rust governance now, 250, something like that.
|
|
And so if we needed all of them to agree on every decision
|
|
that wouldn't work very well.
|
|
But when it's the language team as eight members
|
|
and the library team as eight members
|
|
and the different sets of people
|
|
is much easier to operate under consensus.
|
|
And we like consensus for a number of different reasons
|
|
a little more than voting.
|
|
So we stuck with the consensus model,
|
|
but we've done this decentralized kind of team structure
|
|
to deal with the idea of that.
|
|
It's very good compromise between the dictatorship
|
|
and everybody has a vote, definitely.
|
|
And the other thing we've added now is we have working groups
|
|
who are sort of like affiliations of people,
|
|
but they don't have formal decision making power
|
|
in the project, but it gives people like a space
|
|
to find out.
|
|
So there's a game development working group, for example.
|
|
So if you're interested in making Rust better
|
|
for ready video games, they don't get to decide what goes
|
|
in the language, but it's like a forum for the people
|
|
who do that kind of work to sort of work together.
|
|
So we have that as kind of like a structure.
|
|
And then finally, the newest thing is,
|
|
we have the Rust foundation now exists.
|
|
This happened in the last couple of months.
|
|
And the foundation, unlike in many other projects
|
|
where the governance of the project
|
|
is sort of under the foundation,
|
|
the foundation's role in Rust is to support the project,
|
|
not to be in charge of it.
|
|
So the teams still have full autonomy over the project
|
|
even though the foundation exists.
|
|
And the foundation is basically at this point,
|
|
like a place to hold the IP and a place to manage donations
|
|
to be able to pay for things like CI expenses
|
|
and legal fees and like all that kind of stuff.
|
|
So they hold legal ownership of the trademark
|
|
on Rust and cargo and the logos.
|
|
And they sort of do things like pay our hosting bill.
|
|
So when you download the compiler,
|
|
you're downloading it from minus three buckets somewhere.
|
|
That bill is paid for by the family.
|
|
Right.
|
|
So that's that.
|
|
Yeah, I mean, there was obviously the announcement
|
|
of the new chair for the foundation.
|
|
Does that mean that there is a large interest?
|
|
I mean, I think you mentioned on previous sessions
|
|
that all of Amazon Namdas are touching
|
|
a bunch of Rust code when they go.
|
|
So there seems that they have a fair bit of vested interest
|
|
in the all language.
|
|
Yeah, Amazon has made a huge investment in the language.
|
|
So has a number of other companies that are like,
|
|
both on the foundation and off of the foundation, actually.
|
|
So a great example, one of my most favorite recent examples
|
|
is we now have tier one support for ARG64
|
|
because ARM themselves were like, hey, we really want
|
|
this to happen and they put in the work
|
|
to write up the design documents.
|
|
They donated us hardware.
|
|
They did a bunch of stuff.
|
|
And if that's been really super positive
|
|
to see interest from them.
|
|
And basically every large check company
|
|
that you can think of has some rust somewhere at this point.
|
|
Facebook, Amazon, Microsoft, Google, Netflix.
|
|
I think I've heard some rumors,
|
|
but I'm not a ton about them, like Apple,
|
|
all sorts of things.
|
|
That's both good and bad in many ways.
|
|
It's really nice that they're used for that way,
|
|
but also you always have to be careful.
|
|
Corporate influence on open source projects
|
|
is a really big hot topic right now.
|
|
And so we're starting to grapple with that ourselves
|
|
as more and more big companies become more and more
|
|
formally involved.
|
|
We have to make sure that we do what's right for rest
|
|
and not with the people with money you think we should do.
|
|
Which oftentimes those things are correlated,
|
|
but the trouble comes in when they're not, right?
|
|
So, yeah.
|
|
Yeah, I mean, with all open source,
|
|
there is obviously the, yeah.
|
|
People have to have a living as well, right?
|
|
Yeah, totally.
|
|
So so far it's been really fantastic
|
|
and everyone's been very supportive,
|
|
so we just gotta keep it up.
|
|
But yeah.
|
|
Okay, so should you think, I mean,
|
|
those big organizations choosing to use Rust4
|
|
fairly substantial pieces of their infrastructure.
|
|
I mean, that kind of ties into the attributes of Rustry,
|
|
which is, I think what struck me most about
|
|
one of your previous talks was again,
|
|
that you mentioned that the finding of bugs
|
|
is kind of something that doesn't happen
|
|
as much as in other languages of that level,
|
|
like C++ and whatever.
|
|
In that, once you get it to compile,
|
|
you're on a good trajectory
|
|
of actually having something that's relatively bug free.
|
|
Yeah, you can't guarantee it's bug free, of course,
|
|
but you've found a lot of bugs
|
|
that you may not find until later stages.
|
|
It's interesting because I've been thinking about this
|
|
more lately, I've heard some people talking about this
|
|
and this thing I think I agree with is,
|
|
it's not even so much that Rust prevents bugs
|
|
or that it makes your code have less bugs.
|
|
It's that it moves the bugs forward in time.
|
|
So there's like a lot of things in Rust
|
|
that it catches a compile time
|
|
that I would still have those bugs in my Ruby program.
|
|
I would just see them happen in production instead.
|
|
And so it's not really like that,
|
|
like it makes more robust software
|
|
because it forces you to confront those bugs earlier
|
|
and deal with them immediately
|
|
rather than putting them off.
|
|
And it turns out that it's actually like it tends
|
|
to be cheaper before you have the thing
|
|
that makes your service topple over
|
|
and it causes you to refund a bunch of your customers,
|
|
it'd be nice if you caught that bug ahead of time.
|
|
It's almost like doing some design as well first,
|
|
really, it's not right, it's not right.
|
|
But it's hard kind of principle, yeah.
|
|
It's often hard to get management to agree
|
|
that you should fix the bugs before release though, you know?
|
|
And so it's nice that you've got to blame it on well.
|
|
The code won't compile unless I fix these bugs.
|
|
So that's the way it is.
|
|
So it seems like so far,
|
|
Rust programs have less bugs in them
|
|
to some, you know, for various meetings of bugs
|
|
and less obviously, it's not a panacea, it's not magic.
|
|
I've written many logic bugs and less programs,
|
|
it happens.
|
|
I've never claimed that Rust makes your code bug free,
|
|
but it does help you deal with bugs earlier.
|
|
And that tends to be a better way to do it.
|
|
And that means it also can feel a little frustrating
|
|
because you have to deal with them earlier.
|
|
So sometimes people really get caught up in like,
|
|
oh my code hasn't compiled for like a whole day
|
|
and I feel like I've made no progress.
|
|
And it's like, well, no, you have made some progress.
|
|
You know, there's just a lot of bugs
|
|
and you're being forced to deal with them now.
|
|
And you've got to like iron them out before things happen.
|
|
So it's, I can, yeah, I can recall well, learning Rust.
|
|
And it was, I wouldn't say a frustrating experience,
|
|
but the learning curve was pretty steep.
|
|
Coming from, coming from languages like Python,
|
|
maybe C, maybe C++.
|
|
Yeah.
|
|
And the app is spot on.
|
|
The compiler is pretty strict in terms of the old adage
|
|
to the applies.
|
|
If you can convince the Rust compiler to generate code,
|
|
you're almost done.
|
|
Apart from these few logic errors that you're referring to,
|
|
for enough, but to master that learning curve
|
|
is not for the faint hearted, I think.
|
|
In terms of, for example, I do not necessarily
|
|
recommend for a beginner learning to program
|
|
to learn Rust right away, because the learning curve
|
|
just might be too steep.
|
|
It's interesting because I also agree with you
|
|
but for like a different reason, which is,
|
|
there's no materials aimed at helping brand new programmers.
|
|
Like a long time ago, I actually used
|
|
to teach people programming as a job.
|
|
And so I have a lot of experience teaching people
|
|
who have never coded before how to do it.
|
|
And one thing that's really counterintuitive
|
|
to a lot of professional programmers
|
|
is that beginners' minds don't work the same way
|
|
as people who have been programming.
|
|
And I don't mean that in some sort of like physical way,
|
|
but I mean, like, I've heard a lot of programmers express,
|
|
like, oh, I would make sure to teach a new programmer,
|
|
Ruby Python and JavaScript, because types are too hard
|
|
and I don't want to discourage them from learning.
|
|
But I've actually found that a lot of beginners
|
|
intuitively understand the concept of types
|
|
and they are confused that they don't exist.
|
|
Because like, when you think about how we talk about words,
|
|
like we talk about the types of things
|
|
when we use words to describe stuff
|
|
and so they want something similar in their programs.
|
|
And so it's like kind of really interesting
|
|
that like a newbie can sometimes find
|
|
different things easier or harder.
|
|
And so I have a suspicion that it might,
|
|
some people might like programming
|
|
and rest as their first language
|
|
because they've never learned the bad habits
|
|
that cause people to struggle with rust
|
|
when they're experienced programmers.
|
|
Like we found that some Ruby people learn rust faster
|
|
than some C people, even though you might think
|
|
as a low level language would be easier
|
|
for C people to learn.
|
|
And the reason why is a Ruby is just never dealt
|
|
with pointers before.
|
|
So the only thing they know is the way
|
|
that rust presents references.
|
|
And so they tend to pick it up a little easier.
|
|
And a C person is like, I know how to use pointers.
|
|
So I'm going to do the same things I used to do.
|
|
And then the rest compiler like slaps them on the knuckles
|
|
and is like, hey, don't do that.
|
|
And then they get frustrated and they leave.
|
|
And so I suspect that there might be some folks
|
|
who would be good to learn rust as a beginner,
|
|
but there's just no supporting resources for them.
|
|
And so I think they'd be mostly set up to fail at the moment.
|
|
But who knows?
|
|
We'll see if anyone ever bothers to write that book
|
|
and gives it a try.
|
|
I don't know.
|
|
So for all your budding psychiatrists out there,
|
|
there's a new business niche.
|
|
Consult a tainted my's in terms of,
|
|
in terms of hardened and advanced programmers
|
|
just to go back to the beginning.
|
|
I think about this problem all the time, though.
|
|
There's the documentation for a person.
|
|
It's sort of kind of at least partially my job
|
|
to teach people rust.
|
|
And so I need to figure out, there's
|
|
this really common thing where people will try rust,
|
|
they'll find it too hard, they'll quit.
|
|
Six months will go by, they'll come back,
|
|
they'll say, I'm going to give it a try again.
|
|
And then they find it a lot easier.
|
|
And they're like, I don't remember
|
|
why it was so hard the first time.
|
|
And I have never been able to figure out what it is
|
|
to like get people to skip that weird six month quick period.
|
|
But it would be great if I could figure out what it is.
|
|
I wouldn't commit on the six month,
|
|
but you're talking to one of them.
|
|
When I first picked up rust, the learning curve,
|
|
as I said, was pretty steep.
|
|
But then it took about two to three months
|
|
to get back into the swing of things.
|
|
By no means fully stuttered, I'm not a rust expert.
|
|
I'll just give presentations on rust
|
|
and try to convert the, convert the parish, so to speak.
|
|
But I find this really interesting, really fascinating
|
|
because once you get the hang of it,
|
|
rust code is actually easier to write
|
|
than C++, Python, and some other programming languages
|
|
that come to mind for exactly these reasons
|
|
because the compiler takes to by the end
|
|
and actually guides you there.
|
|
The way to your goal might be a little bit tricky,
|
|
but I think rust is one of the few compilers
|
|
that actually gives you HTML links
|
|
as part of the error messages.
|
|
Yeah, it's definitely put a lot of work in there.
|
|
And there's a couple of contributors over the years
|
|
that have really focused on error messages making them good.
|
|
And it definitely shows.
|
|
I'm really thankful for the work for sure.
|
|
But yeah, it's definitely kind of funny.
|
|
Yeah, the whole like learning process.
|
|
I don't know, it's a tricky problem.
|
|
I'm still trying to figure it out.
|
|
We'll see if I ever crack that nut.
|
|
Maybe it turns out you just need to practice.
|
|
But this is also why we try to be really upfront
|
|
with people that like, hey, if you're feeling frustrated,
|
|
maybe rust isn't for you.
|
|
It's totally fine.
|
|
Like we'll still be here in the future if you change your mind.
|
|
And I think that's been kind of necessary
|
|
in order to help people out because we don't want to be like,
|
|
we want to encourage people not to discourage them.
|
|
So it's interesting for sure.
|
|
Yeah, no, I mean, you've obviously seen a lot.
|
|
I think you mentioned it at the start.
|
|
You saw a lot of Ruby Python programmers converting
|
|
or adopting it.
|
|
Is that the predominant kind of uptake of the rest language
|
|
that you can use?
|
|
There's kind of three groups of constituents.
|
|
So I like to describe it.
|
|
So there's the like C C++ people.
|
|
There's the Ruby Python JavaScript people.
|
|
And then there's the like Haskell OCaml Scholar people.
|
|
And so you kind of have this like,
|
|
I sort of like call them systems people,
|
|
scripting people and functional people.
|
|
And Rust is kind of all three of those things shoved together.
|
|
And so it's really interesting because each group
|
|
will find certain things really easy about Rust
|
|
and other ones will find it really hard.
|
|
And so they almost like need different learning resources
|
|
sometimes because like, it's amazing to watch a C programmer
|
|
use cargo for the first time.
|
|
And they like find it kind of difficult
|
|
because it's not a make file.
|
|
And they know make files really well.
|
|
And so they're like, it's like a totally different paradigm.
|
|
And so they struggle with it a little bit sometimes.
|
|
And you find a Ruby person.
|
|
And they will have to learn pointers
|
|
and they'll struggle with that.
|
|
But like they'll get cargo instantly.
|
|
And you know, the C person will get references,
|
|
you know, relatively easily.
|
|
And so like, you know, the C people will reach
|
|
for a for loop more often.
|
|
And the functional people will reach for a map.
|
|
But you know, like, it's kind of like,
|
|
different people bring different perspectives
|
|
and they struggle with different things.
|
|
So in terms of the size,
|
|
one thing is kind of interesting is that
|
|
I do think the scripting people are the bigger audience now.
|
|
But that's really just due to the sheer volume
|
|
of people that exist more than like a desire
|
|
or like a, even necessarily maybe like a usefulness
|
|
to that audience.
|
|
Like there's just so many people that know
|
|
about a program in a scripting language
|
|
that, you know, if you got,
|
|
if you got half a percent of the people
|
|
who knew Ruby to try rest,
|
|
that might be bigger than if you've got like,
|
|
one percent of C programmers.
|
|
Because it's just a lot more people
|
|
that know higher level languages.
|
|
And so I think that they are a bigger constituent.
|
|
Yeah.
|
|
So just purely due to numbers,
|
|
not because it's like better for scripting or whatever.
|
|
And this has kind of been common in a lot of newer languages
|
|
that have uptake as they like realize like,
|
|
oh yeah, we're getting a lot of people
|
|
from some particular languages just because the number,
|
|
I mean, even just JavaScript alone
|
|
like is massively larger than almost every other programming
|
|
language.
|
|
And some of them you put together.
|
|
So it's, you're much more likely to run into a JavaScript dev
|
|
than you are a hardcore low-level C++ programmer.
|
|
I mean, sorry, Chris, I was just following on the learning piece.
|
|
Yeah, like most of us who've done design,
|
|
so apart from those of us who started programming
|
|
in basic when we were seven,
|
|
we obviously learned how to program
|
|
or touch upon different programming in English at our,
|
|
during our course,
|
|
is this something that you're trying to encourage
|
|
in university spheres or?
|
|
Yeah, I mean, to some degree,
|
|
like I would say that we have tended to try to be supportive
|
|
when it's already happening,
|
|
but we haven't done proactive research.
|
|
There's no, I'm not showing up at university campuses
|
|
with a rest book on my hand knocking on professor's door
|
|
being like, hello, do you have a minute to talk
|
|
about your board and savior?
|
|
There's the crap.
|
|
But we have had a couple of people do university classes
|
|
and we've tried to be supportive.
|
|
Like I have gone physically before COVID, obviously.
|
|
I have traveled to some universities
|
|
where they were running a rest class to drop in and say hi
|
|
and like whatever.
|
|
And there's been some university hackathons
|
|
every year, they have some rest people
|
|
and some stuff like that.
|
|
But the university stuff changes pretty slowly.
|
|
It takes a lot of time.
|
|
So we have seen, it's probably like 10 classes pop up
|
|
which is not zero, but not all of them.
|
|
And so yeah, totally, non zero, but not many of them.
|
|
Okay, very interesting.
|
|
Yeah, change it to tack a little bit.
|
|
Rust was originally on as a, well, no level system
|
|
programming language, but with the recent additions
|
|
to the ecosystem, I'll fully get it where Rust is going.
|
|
But at the same time, you see still this,
|
|
I'm always tempted to say rejuvenation of the language
|
|
in terms of going back to its origins.
|
|
You have the butter rocket project from AWS,
|
|
which is essentially container based operating system
|
|
or sorry, container based Linux platform
|
|
for container deployment written mostly in Rust.
|
|
Microsoft apparently is pouring big dollars
|
|
into the technology for their future programming projects.
|
|
And there is this little operating system
|
|
called Linux, I think it's called.
|
|
I think that's a short, yeah.
|
|
That is in the fashion.
|
|
Exactly, no, not at all, not at all.
|
|
And there was this conference in 2020 called
|
|
the Linux Promise Conference, where a guy called
|
|
Linux Talbot's actually said he could imagine
|
|
seeing Rust entering the kernel.
|
|
Any comment on this?
|
|
Yep, so I think it's good.
|
|
I actually was at a Linux foundation event one time
|
|
and I was in the same room as Linus
|
|
and I really wanted to go ask him about Rust and the kernel.
|
|
This was in like 2014, 2015, it was way too early.
|
|
And I was like, I don't want to be that guy,
|
|
but I was like, I really, really, really want to be that guy.
|
|
And I didn't do it because I thought it wasn't bad.
|
|
But I do think it's really interesting and exciting.
|
|
I, we always kind of like, so one of the reasons
|
|
why it's named Rust is it's supposed to evoke
|
|
the feelings of like a well-worn tool.
|
|
Like things only get Rusty after they've existed for a while.
|
|
And so Rust is kind of like, it's funny
|
|
because it feels like a cutting edge programming language,
|
|
but that's also because industry languages were all made
|
|
in like 1995, basically.
|
|
I don't know what they were like put in the drinking water
|
|
at 95, but that was an amazing year
|
|
of a programming language.
|
|
So if Java, JavaScript, Python, Ruby were similar.
|
|
Python's a little older, Ruby was 95 as well.
|
|
Python was slightly before that, but like the sort of mid 90s
|
|
was like where most of our very popular languages
|
|
sort of come from.
|
|
And so Rust is kind of like a cutting edge programming language
|
|
from like 2008.
|
|
And so it's really funny because if you talk to like programming
|
|
language theory people, they're like, oh yeah,
|
|
like Rust doesn't have any new in it.
|
|
But if you talk to industry people,
|
|
it's like, this has all this stuff I've never seen before.
|
|
And so with the part of the reason why that was chosen
|
|
is because we wanted to only include stuff
|
|
that had seen some use and we knew would be useful
|
|
for real world things.
|
|
Like Rust has always had the intention
|
|
of being a programming language that was used
|
|
to build things and impact the world
|
|
and not just be a research playground.
|
|
And so it's really exciting to see it finally kind of like
|
|
continue to grow into more and more useful big systems.
|
|
Like it used to be that I would give talks about Rust
|
|
and I'm like, yeah, I've heard some rumors
|
|
that some companies are gonna use it someday.
|
|
And then it would be like, oh, like, you know,
|
|
Dropbox was the first like big company
|
|
that I would like talk about as using Rust
|
|
because that was in 2014 they started using it.
|
|
And so it's like, yeah, Dropbox use it for real things.
|
|
And then eventually it became like, okay,
|
|
here's five of the 10 companies I know about.
|
|
And now I like run into people who are using Rust
|
|
for real production things I've never met
|
|
or heard of them before or what they're doing.
|
|
And that's like really, really awesome.
|
|
I'm really happy about it.
|
|
And so I'm excited to see both the tons
|
|
of little people using Rust and also the biggest companies
|
|
because you know, that's how like people make decisions
|
|
about their technologies based on who else is using them.
|
|
And to be able to say that these big companies using Rust
|
|
is a really strong showing of social proof
|
|
that allows a lot of smaller companies to use Rust.
|
|
So I think it's important and useful.
|
|
So given the niche character of this tiny program language,
|
|
where do you see this going?
|
|
Yeah, well, I mean, I think it really,
|
|
it really like depends.
|
|
I think that, you know, the signs all look good,
|
|
but there is a chance that, you know, for example,
|
|
so that the Rust code technically has landed
|
|
not in the Linux tree proper,
|
|
but in like the beta branch, the Linux next.
|
|
And so it's not quite in there yet,
|
|
but like maybe they do a little more work
|
|
and it turns out actually it's horrible
|
|
and they pull it out and they say no, right?
|
|
Like we're at this interesting like kind of cusp moment
|
|
with many things.
|
|
Obviously it's been in production at Amazon and Google
|
|
and Facebook and mobile.
|
|
So that's definitely there, but like, you know,
|
|
I still, because I've been around for the whole days,
|
|
it still doesn't quite feel really yet.
|
|
So I'm always like, when does this go wrong?
|
|
Like, where's the point time where they wake up
|
|
and like, oh, nevermind, actually turns out, you know, tomorrow.
|
|
So the thing about Lambda is like firecracker
|
|
is this VM technology that Amazon's been working on.
|
|
And every single Lambda execution goes to firecracker
|
|
because it's kind of the underlying virtualization
|
|
technology makes firecracker work.
|
|
So, you know, what happens when I wake up tomorrow
|
|
in terms of every single AWS Lambda
|
|
has stopped working because it was like a bug
|
|
in the rescue compiler.
|
|
And you know, now it's a big problem
|
|
and like, you know, ah, what's it happen?
|
|
Maybe I have an exciting problem for those.
|
|
But I think that I'm sure I got a good testing permit.
|
|
Yeah, hopefully that's a good testing
|
|
when it doesn't happen.
|
|
But like, yeah, so, you know, so part of me is just really
|
|
waiting until these success stories are successful for a while
|
|
and they'll kind of see where things go.
|
|
But I think that the sort of the biggest question right now,
|
|
like Russ is definitely being used in low-level stuff
|
|
very successfully, the question is how high up the stack
|
|
is it a reasonable choice for?
|
|
And that's a question that has been evolving over the years
|
|
and I don't think we have a full good answer on yet
|
|
because like, if you would ask me in 2013,
|
|
if I thought you should write a web application in Rust,
|
|
I would tell you definitely not.
|
|
And now I would say maybe, like my company
|
|
is basically writing web applications in Rust
|
|
and it works great.
|
|
And some other places are doing so and it's fine.
|
|
But it's not clear, it's always a good fit
|
|
in the same way that many other things are.
|
|
And so, you know, I don't know what place in the stack
|
|
it is unquestionably an amazing choice
|
|
like how far up the stack that goes.
|
|
Because I think the answer is definitely yes
|
|
for the lowest levels of the stack,
|
|
but it's unclear where the top work caps out, basically.
|
|
So we'll see.
|
|
It's an interesting perspective
|
|
because you just mentioned web frameworks.
|
|
I can recall, I wouldn't say a few,
|
|
but a discussion that's put it this way a few years back
|
|
with regards to something called Arctic's web.
|
|
Maybe before we go into the details
|
|
because I think that teaches a very important lesson
|
|
about community management or the rest of it,
|
|
maybe we should explain what Arctic's web was on about
|
|
and why the controversy actually sparked.
|
|
Totally.
|
|
So, Actix was a project to build an actor system in Rust.
|
|
So hence, Actix is like the name for Actix system.
|
|
And Actix Web was a web framework built on top of Rust Actors.
|
|
And so, that was going pretty well.
|
|
I think eventually Actix Web actually dropped Actix support
|
|
and kind of ended up becoming its own thing.
|
|
It didn't use Actors anymore,
|
|
but I'm not a researcher about that,
|
|
but anyway, the point is is that it became very fast
|
|
and started to appear.
|
|
There's this benchmarking suite.
|
|
It's really popular called the tech and power benchmarks.
|
|
And it benchmarks web framework tests.
|
|
And so, Actix showed up and started like
|
|
just absolutely demolishing the charts.
|
|
Like it was really, really faster
|
|
than all this other stuff that had come before.
|
|
And so it got a lot of attention very quickly.
|
|
And so that's kind of like the back story
|
|
is web framework, written Rust, extremely fast,
|
|
and very powerful.
|
|
I don't know if you want any more background
|
|
or if there's anything I didn't cover
|
|
before we talk about the conference.
|
|
I think the important lesson is actually
|
|
what happened to the community.
|
|
And why?
|
|
So the problem happened is this attention meant
|
|
that more and more people started looking at the internals.
|
|
Like how is this so much faster?
|
|
And part of that answer was unsafe code.
|
|
So Rust has this concept of unsafe
|
|
and basically like Rust has only rules
|
|
that it uses to check to see that your code is good or not.
|
|
And unfortunately, CPUs aren't built
|
|
to encode Rust's rules in them.
|
|
So there's kind of this point where
|
|
when you're doing the lowest level stuff,
|
|
like you make a system call,
|
|
system calls are inherently not built
|
|
into the Rust language.
|
|
So I can't know how they work.
|
|
So we have this concept called unsafe.
|
|
It basically lets you do whatever you want.
|
|
There's a lot of caveat there.
|
|
But you know, we can fill a whole hour
|
|
just talking about just that alone.
|
|
But the point is that there's kind of like an escape hatch
|
|
that lets you do things that are, you know,
|
|
maybe a little more dubious by Rust's normal standards.
|
|
And so what this means is...
|
|
Mark, here are, here are the dragons from now on.
|
|
That's all the thing.
|
|
Yeah, like you get access to the same pointers
|
|
you haven't seen with no checks.
|
|
You can do anything you want.
|
|
You want to cause a site fault, totally possible.
|
|
And so it's on you with the programmer
|
|
to make sure that you've done the checks appropriately.
|
|
And so naturally people looked into this
|
|
and they found that some of the reason why
|
|
tactics was so fast was made some pretty dubious usage
|
|
of unsafe internally.
|
|
And what made the situation so complicated
|
|
was that it's like...
|
|
It's stuff that wasn't necessarily strictly speaking
|
|
clearly wrong.
|
|
So it's easy to resolve the situation
|
|
if it's like definitely wrong.
|
|
And you point out it's wrong.
|
|
And the people say thank you
|
|
and they merge the port west and the bug is closed.
|
|
But when you start getting into debates about
|
|
is this even wrong in the first place
|
|
that provides a fruitful place for arguing?
|
|
And since this has gotten so much attention,
|
|
it was so popular, a lot of people saw it
|
|
as kind of like a flagship project.
|
|
And so a lot of people got kind of upset
|
|
because they felt like a flagship project
|
|
was doing shady stuff internally.
|
|
And that would look bad on Rust.
|
|
And so there started to be like a back and forth
|
|
that was not very productive
|
|
about the ways it acts as useless and unsafe.
|
|
Part of that was also people submitted patches
|
|
to remove the unsafe and the maintainer said,
|
|
no, close them.
|
|
Some people got mad that he closed them
|
|
because they thought he should accept the things
|
|
and I'm like blah blah blah.
|
|
And so eventually he burned out and he quit.
|
|
And he originally deleted the project
|
|
then he undeleded it and gave it over
|
|
to some other people instead.
|
|
And so we had to kind of have this like,
|
|
sort of like community discussion
|
|
about like is this behavior acceptable?
|
|
And you know, and by this behavior,
|
|
I mean the community hounding a maintainer
|
|
and so he quit his project.
|
|
And like, you know, was this handled the right way
|
|
and how do we want to go about this in the future?
|
|
Obviously we can't control the way
|
|
that little labor one who says they like Rust acts.
|
|
But we sort of had to decide, you know,
|
|
like was this a good outcome or not?
|
|
And if so, you know, what do we want to do differently
|
|
in the future?
|
|
And so, you know, I thought it was kind of
|
|
pretty embarrassing for the Rust community in general.
|
|
And yeah, so if you get everyone now,
|
|
like has kind of chilled out and sort of recognized
|
|
that was like not a great look for anyone.
|
|
And the project is new maintainers
|
|
and they're doing their thing
|
|
and it's still pretty performant,
|
|
web framework and all that stuff.
|
|
But you know, it matters.
|
|
The people part of this is definitely important.
|
|
And you know, it just, it's complicated.
|
|
So that's kind of the summary of what happens.
|
|
Yeah, but Steve, isn't that the best example
|
|
for something called evolution?
|
|
Yeah, maybe.
|
|
But this, this is driving,
|
|
it'd be overall fast.
|
|
I wouldn't say heritage legacy, but it's spirit.
|
|
That's what I'm looking for.
|
|
If something doesn't work,
|
|
if something doesn't work, people will change it.
|
|
And if they don't get the fork it.
|
|
The thing is, is the evolution requires a lot of death.
|
|
And it's not really comfortable.
|
|
It does, yes.
|
|
It's not really comfortable.
|
|
It's not comforting if you're the person needs to die.
|
|
So it will work, right?
|
|
Like that's not, I'm not like, oh, well, sorry,
|
|
you know, you got to die now because that's just evolution.
|
|
And you're like, yeah, but I'm still going to die.
|
|
So I'm not happy about this.
|
|
I'm like, well, you know, I mean,
|
|
and the other thing too is,
|
|
people always forget evolution is a process
|
|
where the next generation does things better, right?
|
|
And so this, you know, forking is important.
|
|
But yeah, like the thing is that there wasn't forking behavior.
|
|
And I think this is also part of it too,
|
|
is that it's not like people forked it.
|
|
And so we're going to make it a bit better
|
|
and then left the original guy alone.
|
|
Like one of the interesting changes, I think,
|
|
you know, as we're getting close to the end of the hour,
|
|
actually talking about open source stuff.
|
|
One of the things that I think has changed culturally
|
|
about open source is there's less of a,
|
|
like forking has seen more aggressively today
|
|
than it used to be.
|
|
And there's more pressure to incorporate changes
|
|
into some sort of canonical upstream.
|
|
And what that canonical upstream does
|
|
is more important to people than, you know,
|
|
it used to be in the past.
|
|
And so I think that that's also part of this story,
|
|
is that, you know, if this had happened the same way
|
|
in the 90s, some group of people that weren't happy
|
|
would have forked the project,
|
|
made their own version of actics, but safer or whatever.
|
|
And there were left the original guys alone.
|
|
Maybe there would have been some mailing list arguments
|
|
and they would yell to each other or whatever, but like,
|
|
I think there would have sort of been this like co-evolution
|
|
instead of an intense pressure on the upstream
|
|
to change their ways.
|
|
And that's tricky.
|
|
For distortion, because our legal department insists
|
|
on this normally, kids for distortion,
|
|
people didn't die when actics are, all right.
|
|
So only code basis, as part of the evolution
|
|
in the open source ecosystem, basically die
|
|
or are left to, are left to bid draws.
|
|
People do not die, just code basis on places like GitHub
|
|
or some other hosting platform.
|
|
So only digits fade away, not people,
|
|
before the natural end, of course.
|
|
Yeah.
|
|
Martin, any final questions before we wrap this up?
|
|
Yeah, it's been great so far, I was so far ahead of it.
|
|
We are the end of it.
|
|
I'll be good to keep talking, but yeah, I mean,
|
|
I think what do you see for yourself?
|
|
You mentioned your Ruby history and how you move on from that,
|
|
because you've kind of done there.
|
|
Do you see something happening there yourself
|
|
in the Rust scene as well?
|
|
Surely.
|
|
I mean, I'm sure at some point, you know,
|
|
I will reach my natural end.
|
|
And it is just describing the maturity of Rust as well.
|
|
Unless a list to look at Valley events,
|
|
some sort of immortality tech, and I magically
|
|
get to live forever for some reason.
|
|
I don't think it's going to happen, but you know,
|
|
whatever, there will be an end to some point.
|
|
But yeah, I mean, you know, it definitely like,
|
|
as projects grow and change, like,
|
|
so I am the oldest current existing core team member.
|
|
Everyone else is on the core team
|
|
before me, he was left at this point.
|
|
Wow.
|
|
And so, you know, there's sort of a certain amount
|
|
of interesting thing there.
|
|
And I also think it's important that people move on
|
|
because you need fresh new ideas too, right?
|
|
So if something is connected to any one individual,
|
|
it's not robust specifically because of these kind
|
|
of pressures over time.
|
|
And so we've added a lot of new people to the core team.
|
|
And so, you know, at some point, there is a time
|
|
where like, I should probably step back a little
|
|
to make space for new people that want to do work
|
|
and get involved in things.
|
|
I don't know when that's going to be,
|
|
but you know, I'm sure it will happen at some point.
|
|
And to some degree, you know, I guess that's already happened
|
|
in some ways because it used to be my full-time job
|
|
to work on Rust.
|
|
And now I do it, you know, nice and weekends.
|
|
So I do put less time into it than I used to
|
|
when it was my full-time day job all the time.
|
|
So it's some degree that I got a little bit.
|
|
But I still really love using Rust
|
|
and I love writing Rust and being around Rust people
|
|
and doing all those things.
|
|
So I have no immediate plans to kind of like actively move on.
|
|
But I do like, I am excited that other people are also
|
|
doing cool things and seeing how that works
|
|
and trying to, you know, make sure that if people want
|
|
to do stuff that I'm not taking up space
|
|
that someone else really wants to do.
|
|
So it's always, it's always ancient balance.
|
|
It's an interesting observation about the new people
|
|
because if I look at a project that I'm quite familiar with,
|
|
which is the core team has been there for many, many,
|
|
many, many years in the same form.
|
|
So it's kind of the contrast to what you just observed
|
|
about Rust.
|
|
Please note, Steve referred to Rust people,
|
|
not Rusty people.
|
|
This is going to be easier.
|
|
That's true.
|
|
Usually we use the term Rustations.
|
|
I'm just saying.
|
|
Right, yeah, totally.
|
|
OK, we have a very special segment of each and every show
|
|
where we have a guest on, and we do it without guests, too.
|
|
The closing segment is actually, we talk about poxies
|
|
and poxies are, of course, the picks out the week in terms
|
|
of something that comes across as being worth mentioned.
|
|
In terms of favorite book, favorite movie,
|
|
that sort of thing that you think is worth talking about
|
|
in, in, to the, about four people
|
|
that we have listening on a, on a regular basis.
|
|
So Martin, why don't you start us off with a,
|
|
with a pox of this episode?
|
|
Yeah, I'm not sure whether it's a, a pox or anti-pox,
|
|
but I found the, the announcement of open search
|
|
quite interesting as a, you know, from, from the whole open source
|
|
scenario.
|
|
And it's a licensing and there's a lot of support for it,
|
|
which is for various reasons.
|
|
But that's the one that, that struck me for, for this week as a,
|
|
maybe we should extend our open searches just for the
|
|
annumissated.
|
|
Yeah, this is basically a, a, a, a, this fork of elastic search
|
|
because of the, the nice thing restrictions that they put on it.
|
|
And, yeah, it's, it's had a lot of support from the open source
|
|
and, you see, which is how I take on this.
|
|
I, I think your description is accurate, but I found another
|
|
description, which I also think is accurate, which is elastic,
|
|
forked elastic search themselves.
|
|
And Amazon has now taken over the original.
|
|
Yeah, just like a varying, like, you know,
|
|
like it's kind of true and kind of a little weird.
|
|
Yeah.
|
|
Yeah, I mean, that's a point.
|
|
Yeah, I mean, that's just a good, so far.
|
|
My pox of the, my pox of the week would be, of course,
|
|
or the non-technical, and Martin would probably be the
|
|
benefactor here because the pubs actually opened on Monday
|
|
in Great Britain for outside business.
|
|
If a completely mistaken, due to the COVID situation, yes.
|
|
So no further explanation needed as long as you're living in the UK.
|
|
For those people, for those few people, not listen,
|
|
and not living in the UK and listen to this podcast,
|
|
pubs are places of business where you can get intoxicated
|
|
and licorice.
|
|
Just the case that that's the side, side fight,
|
|
but it's made me to get together with people.
|
|
OK, without asking it.
|
|
And the socializing factor, of course, would come at night.
|
|
But without you, Steve, what is your pox?
|
|
OK, so mine's also going to be non-technical because the thing
|
|
I've been most interested in lately is bullet journaling.
|
|
So I've been, I've been very, so one of the interesting things
|
|
about running a lot of open source projects
|
|
is that you need to be organized, and I'm terrible at being
|
|
organized.
|
|
And so I've been doing different things over the last couple
|
|
of months to try to get into it.
|
|
But a couple of my friends have started looking at this.
|
|
And it's not a new thing by any means,
|
|
but so bullets, like a bulleted list.
|
|
And basically, it's just a strategy for you
|
|
to manage stuff like to do, but also any notes you're trying to take.
|
|
And it's a fully analog system.
|
|
So I have here on my desk an actual paper together.
|
|
And it's a blue, it's called a binding.
|
|
OK, it's like an iPad.
|
|
It's like if you stack 20 iPads on top of each other?
|
|
No.
|
|
So I have a little notebook and a pen, and I've been writing down.
|
|
So I have here, you know, on my little, for today's journal,
|
|
I have, you know, go on the Linux in-laws podcast at one
|
|
and in five minutes or whatever we're done here.
|
|
I'm going to check that off.
|
|
But I've been experimenting with, instead
|
|
of having complicated software to track my to-do list,
|
|
doing it in a log style.
|
|
And it's only been three days.
|
|
So I can't tell you if it works well or not.
|
|
But I'm interested.
|
|
And my handwriting is terrible.
|
|
So we'll see if I can read my notes after today,
|
|
after I write them.
|
|
But it's been kind of cool.
|
|
And, you know, you can sort of learn
|
|
about the system for bulletjournal.com or whatever.
|
|
But yeah, it's been fun.
|
|
I mean, this is most amazing.
|
|
One of the key contributors to one
|
|
of the four-front hipster languages using analog technology.
|
|
Yeah, so this is most amazing.
|
|
So yeah, so we'll see how it goes.
|
|
But I think it's interesting, you know,
|
|
almost all my life is computers all the time.
|
|
So doing some stuff.
|
|
One of the reasons I like doing embedded work
|
|
is you get a little physical computer.
|
|
You get to see it's supposed to be desktop,
|
|
to laptop, to laptop, or whatever.
|
|
And so it's kind of another just like,
|
|
oh yeah, maybe I should interact with the physical world
|
|
every once in a while.
|
|
So writing and writing papers is kind of fun.
|
|
So Steve, let's do it.
|
|
Yeah.
|
|
So Steve, let us get you back on the show
|
|
in about two weeks to report on the program here.
|
|
Yeah, totally.
|
|
We'll see how it goes.
|
|
I see that has been more than insightful.
|
|
I thank you so much for what you're speaking.
|
|
Yeah, thank you.
|
|
And I'm looking really looking forward to have you
|
|
go back on the show in a few years' time
|
|
to see where this rust thing actually went.
|
|
Yeah, we'll see that.
|
|
And with that, I thank you for listening.
|
|
This is the Linux Enloss.
|
|
You come for the knowledge.
|
|
But stay for the madness.
|
|
Thank you for listening.
|
|
This podcast is licensed under the latest version
|
|
of the Creative Commons license.
|
|
Tap Attribution Share Like.
|
|
Credits for the entry music go to Blue Sea Roosters
|
|
for the song Salut Margot, to Twin Flames
|
|
for their piece called The Flow, used for the second intros,
|
|
and finally to the lesser ground for the song Sweetjustice
|
|
used by the dark side.
|
|
You find these and other ditties license
|
|
under Creative Commons at Germando.
|
|
The website dedicated to liberate the music industry
|
|
from choking corporate legislation and other crap concepts.
|
|
You've been listening to HECK Public Radio at HECK Public Radio.org.
|
|
We are a community podcast network that
|
|
releases shows every weekday, Monday through Friday.
|
|
Today's show, like all our shows, was contributed by an HBR
|
|
listener like yourself.
|
|
If you ever thought of recording a podcast,
|
|
then click on our contributing to find out how easy it really is.
|
|
HECK Public Radio was founded by the digital dog pound
|
|
and the infonomicom computer club,
|
|
and is part of the binary revolution at binrev.com.
|
|
If you have comments on today's show,
|
|
please email the host directly, leave a comment on the website
|
|
or record a follow-up episode yourself.
|
|
Unless otherwise status, today's show is released
|
|
under Creative Commons, Attribution, ShareLite, 3.0 license.
|