Ubuntu's Rusty Roadmap
Mar 23, 2025
Canonical's VP of Engineering for Ubuntu reveals why they're swapping coreutils for Rust-built tools. Then we break down the GNOME 48 release, and why this one is special.
Sponsored By:
- Tailscale: Tailscale is a programmable networking software that is private and secure by default - get it free on up to 100 devices!
- 1Password Extended Access Management: 1Password Extended Access Management is a device trust solution for companies with Okta, and they ensure that if a device isn't trusted and secure, it can't log into your cloud apps.
- River: River is the most trusted place in the U.S. for individuals and businesses to buy, sell, send, and receive Bitcoin.
Links:
- 💥 Gets Sats Quick and Easy with Strike
- 📻 LINUX Unplugged on Fountain.FM
- Jon Seager
- Engineering Ubuntu For The Next 20 Years — We should look deeply at the tools we ship with Ubuntu by default, selecting for tools that have resilience, performance and maintainability at their core.
- Carefully But Purposefully Oxidising Ubuntu — Starting with Ubuntu 25.10, my goal is to adopt some of these modern implementations as the default. My immediate goal is to make uutils’ coreutils implementation the default in Ubuntu 25.10, and subsequently in our next Long Term Support (LTS) release, Ubuntu 26.04 LTS, if the conditions are right.
- GNOME 48 Release Notes — The GNOME project is excited to introduce GNOME 48, a fresh release shaped by six months of hard work from our amazing community. Named “Bengaluru”, this release pays tribute to the dedication of the GNOME Asia 2024 organizers.
- awesome-tuis
- Pick: Ulauncher — Application launcher for Linux🐧
- Ulauncher on GitHub
- Hotkey In Wayland · Ulauncher Wiki
- Browse Ulauncher Extensions
- Gitmoji Extension
- Todoist task management Extension
- mariob88/ulauncher-todoist-integration
- Turn Off Screen Extension
- Home Assistant Extension
- qcasey/ulauncher-homeassistant
- Obsidian Extension
Transcript
WEBVTT
00:00:00.005 --> 00:00:02.705
Brent's on the road this week, and he's joining us from Spain.
00:00:02.885 --> 00:00:08.405
And so we assume you have learned the language and are speaking like a local at this point.
00:00:08.765 --> 00:00:11.645
Yeah, I've been working all weekend on a particular phrase and trying to get
00:00:11.645 --> 00:00:16.545
the different, I don't know, tips and tricks on how to pronounce this thing
00:00:16.545 --> 00:00:19.525
throughout the land here. Okay.
00:00:19.965 --> 00:00:20.985
Lay it on us. Let's see how you're doing.
00:00:21.525 --> 00:00:23.905
Linux no es chufado es muy bueno.
00:00:35.925 --> 00:00:40.645
Hello, friends, and welcome back to your weekly Linux talk show. My name is Chris.
00:00:40.805 --> 00:00:41.485
My name is Wes.
00:00:41.685 --> 00:00:42.645
And my name is Brent.
00:00:43.325 --> 00:00:48.105
Hello, gentlemen. Well, coming up on the show today, Canonical's VP of engineering
00:00:48.105 --> 00:00:53.985
for Ubuntu will reveal why they're considering swapping out the core utils for Rust-built tools.
00:00:54.105 --> 00:00:56.645
And then we're going to break down everything you really need to know about
00:00:56.645 --> 00:01:01.585
the new GNOME 48 which we'll be shipping in the next fedora and ubuntu before
00:01:01.585 --> 00:01:05.165
you even know it and then we're gonna round out the show with some great boosts
00:01:05.165 --> 00:01:08.925
some pics and a lot more so before we get any further i want to say a hello
00:01:08.925 --> 00:01:13.245
and a big time appropriate greetings to our virtual lug hello mumble room hello.
00:01:13.245 --> 00:01:18.765
Oh my god my voice is still broken oh.
00:01:18.765 --> 00:01:22.405
No we're nice we're glad to have you it's nice to have all of you actually and
00:01:22.405 --> 00:01:27.345
also shout out to those of you up in the quiet listening Our Mumble Room is
00:01:27.345 --> 00:01:32.525
live and running early on Sunday mornings, usually about 9.30, 9.45 Pacific Time.
00:01:32.625 --> 00:01:36.945
That Mumble Room's up and getting a live, low-latency Opus stream right off the mixer.
00:01:36.965 --> 00:01:39.945
And you're always welcome to join us with a free software stack from top to
00:01:39.945 --> 00:01:42.345
bottom and hang out in our virtual lug.
00:01:43.458 --> 00:01:47.618
And a big good morning to our friends at TailScale, tailscale.com slash unplugged.
00:01:47.678 --> 00:01:51.438
Go there and get it free for up to 100 devices and three user accounts,
00:01:51.718 --> 00:01:52.738
no credit card required.
00:01:52.878 --> 00:01:57.318
Support the show, tailscale.com slash unplugged. It is the easiest way to connect
00:01:57.318 --> 00:02:01.758
your devices and your services, like your applications. You can put your individual
00:02:01.758 --> 00:02:03.478
containers on your tail net.
00:02:03.938 --> 00:02:10.098
You can put, you know, like me, I have code.mysecretdomain.mysecretTLDR,
00:02:10.558 --> 00:02:15.158
TLDR, TLD. And when I go to that, I get VS Code in the browser,
00:02:15.198 --> 00:02:18.518
regardless of where I'm at, because all my devices are on Tailscale.
00:02:18.778 --> 00:02:21.058
It is a mesh network protected by...
00:02:21.058 --> 00:02:21.938
Waggaw!
00:02:22.258 --> 00:02:26.898
And it's fast! One of the things I love about Tailscale is it is smart enough
00:02:26.898 --> 00:02:31.738
to know if you're talking to a device on the LAN, or if you're talking to a device on the internet.
00:02:31.838 --> 00:02:35.358
Now, for the end user, there's no difference. It's like they're all on your
00:02:35.358 --> 00:02:39.718
LAN. But Tailscale is smart enough to know if it's right there on the same subnet,
00:02:39.938 --> 00:02:43.318
just go right to the machine directly. Don't bother going out to the internet.
00:02:43.518 --> 00:02:47.238
So when you're doing like file copies and things like that, it's blazing fast.
00:02:47.398 --> 00:02:51.038
And it's super quick to get set up. And if you're like me, you'll get it going.
00:02:51.198 --> 00:02:53.238
And 100 devices is going to be fine for your home lab stuff.
00:02:53.598 --> 00:02:57.038
But then you're going to realize how much better it is if you could get work to start using this.
00:02:57.178 --> 00:03:01.058
So send them to tailscale.com slash unplugged 2. thousands and
00:03:01.058 --> 00:03:04.298
thousands of companies are now using this to bridge
00:03:04.298 --> 00:03:07.638
the really complicated multi data center multi vps
00:03:07.638 --> 00:03:13.378
networks into one flat mesh network even things like pi kvm i put on my tail
00:03:13.378 --> 00:03:17.778
net so i can get my kvm wherever i'm at and get my server back up and running
00:03:17.778 --> 00:03:22.718
try it out for yourself individual plans and business plans free today at tailscale.com
00:03:22.718 --> 00:03:26.418
slash unplugged and for 100 devices go check it out.
00:03:29.470 --> 00:03:34.690
So I have been trying to sign a lot of documents recently, and I've used Sterling
00:03:34.690 --> 00:03:38.630
PDF for this, but I'm putting the question out there right now, right here.
00:03:39.330 --> 00:03:45.170
What are you using on Linux to natively sign PDFs? I just want to sign and date PDFs quickly.
00:03:45.470 --> 00:03:50.190
Like I had this eight-page thing. I had to sign every single page. How are you doing that?
00:03:50.390 --> 00:03:54.110
Boost it and tell me how you're doing it or go to linuxunplugged.com slash contact.
00:03:54.110 --> 00:04:00.290
Because I just envy every time I look over at one of my Mac-using friends and
00:04:00.290 --> 00:04:03.450
they just have the built-in preview tool and it just has a signature function.
00:04:03.630 --> 00:04:04.850
Yeah, it's very useful.
00:04:05.030 --> 00:04:08.050
I'm like, come on, come on, let's get that on Plasma. Let's get that.
00:04:08.390 --> 00:04:12.710
Or, you know, I don't know, like a flat pack that just boots up macOS with the
00:04:12.710 --> 00:04:15.450
interface to read your PDFs from a directory that's shared.
00:04:15.650 --> 00:04:20.290
That's hilarious. That's hilarious. That's too much, Wes. That's too much. No way.
00:04:20.670 --> 00:04:24.790
But do let me know if you have a way to do this natively on Linux because I
00:04:24.790 --> 00:04:26.370
feel inadequate right now.
00:04:30.210 --> 00:04:35.590
Canonical has made quite a bit of news recently. They've been discussing swapping
00:04:35.590 --> 00:04:39.170
out some of the GNU core utils with Rust versions.
00:04:39.370 --> 00:04:42.770
And this is a big topic, and there's probably a lot of reasons behind it,
00:04:42.810 --> 00:04:45.730
so we thought the best thing to do would be to have John Seeger on the show.
00:04:45.870 --> 00:04:50.190
He's the VP of Engineering for Ubuntu at Canonical, and he's joining us right now.
00:04:54.930 --> 00:05:00.890
And so to really dig into this, John is joining us now, and this is all coming
00:05:00.890 --> 00:05:05.330
within about the 20-year milestone of Ubuntu.
00:05:05.610 --> 00:05:09.310
So I think it's a perfect time to reflect on all of this and hear about it right
00:05:09.310 --> 00:05:11.850
from the horse's mouth. John, welcome to the Unplugged program.
00:05:12.290 --> 00:05:12.490
Hey.
00:05:13.150 --> 00:05:19.670
Hello. So you made two really great posts. First, it was engineering Ubuntu
00:05:19.670 --> 00:05:23.710
for the next 20 years, which was interesting, right?
00:05:23.750 --> 00:05:27.110
You really touched on upgrading communication, focusing on automation,
00:05:27.670 --> 00:05:32.350
simplifying process, maybe even embracing new languages, which you expand on
00:05:32.350 --> 00:05:38.150
in your second post recently, which is carefully but purposefully oxidizing Ubuntu.
00:05:38.470 --> 00:05:42.570
And in this post, you talk about starting with Ubuntu 25.10 and potentially
00:05:42.570 --> 00:05:46.710
maybe making them default in 2604 LTS, if everything works out.
00:05:47.330 --> 00:05:52.870
Some of the core utils that people are used to would get replaced with a Rust version.
00:05:53.210 --> 00:05:59.870
So something like LS or CP or MV would be swapped out with a Rust implementation of a similar tool.
00:06:00.826 --> 00:06:04.406
And I wondered if you wouldn't mind kind of talking about some of the rationale
00:06:04.406 --> 00:06:10.286
behind this idea and where it's at and kind of any of the coloring you think we might need.
00:06:10.746 --> 00:06:15.906
Yeah, so the first post I made about three days after taking on the appointment
00:06:15.906 --> 00:06:18.026
kind of officially internally at Canonical.
00:06:18.246 --> 00:06:18.666
Congratulations.
00:06:19.086 --> 00:06:21.786
Thank you. My new role seems to be looking after the desktop team,
00:06:21.926 --> 00:06:23.706
the foundations team, and the server team.
00:06:24.446 --> 00:06:28.366
And one of the things I would really like to reinvigorate about
00:06:28.366 --> 00:06:31.686
Ubuntu is this idea that it is a it's
00:06:31.686 --> 00:06:36.626
based on this very stable very dependable community project that is Debian but
00:06:36.626 --> 00:06:42.106
that we have a bit more freedom to kind of ship later things maybe take a few
00:06:42.106 --> 00:06:47.006
more risks like Ubuntu was always about taking the very latest and greatest
00:06:47.006 --> 00:06:50.366
of open source we could find and shipping it in a way that perhaps Debian didn't
00:06:50.366 --> 00:06:51.466
want to, or maybe shouldn't.
00:06:52.026 --> 00:06:56.886
And what happened is Ubuntu became very successful. And I think over time,
00:06:57.106 --> 00:07:02.346
those interim releases that kind of come between the LTSs got maybe a little bit less bold.
00:07:02.826 --> 00:07:07.246
It was a little bit more sort of turning the handle. And I would like to bring
00:07:07.246 --> 00:07:13.006
back a bit more experimentation and think about what are the things we want
00:07:13.006 --> 00:07:15.386
to introduce? What are the practices?
00:07:15.686 --> 00:07:18.786
Who are the sorts of people we want to bring along for the next 20 years of
00:07:18.786 --> 00:07:24.146
Ubuntu, noting the extraordinary success that we as a community have enjoyed over the past 20 years.
00:07:24.906 --> 00:07:31.026
So CoreUtils is an interesting change to me because it is a very foundational
00:07:31.026 --> 00:07:35.386
part of the distribution. It's part of the Debian Essentials sort of package set.
00:07:35.586 --> 00:07:38.706
And something we use all the time and basically never talk about.
00:07:38.806 --> 00:07:42.866
Right. It's in all your scripts. It's LS, it's CP, it's a whole bunch of stuff.
00:07:43.006 --> 00:07:45.726
And there's this wonderful project under the name of
00:07:45.726 --> 00:07:49.126
you utils who are writing modern implementations of
00:07:49.126 --> 00:07:52.366
core utils and find utils and diff utils and my
00:07:52.366 --> 00:07:55.466
understanding having spoken to the lead developer is it it started out kind
00:07:55.466 --> 00:07:58.546
of as a hobby project to learn a bit of rust but has gained quite a lot of momentum
00:07:58.546 --> 00:08:03.506
and one of the things that really struck me about the project is right from
00:08:03.506 --> 00:08:07.386
the very start they've been measuring themselves against the GNU test suite
00:08:07.386 --> 00:08:10.526
and they're not doing it in spite of the GNU call utils,
00:08:10.546 --> 00:08:13.246
they actually work with the GNU folks at times,
00:08:13.286 --> 00:08:16.686
and when they discover interesting behaviors or undocumented behaviors,
00:08:16.766 --> 00:08:19.766
they collaborate with them to either submit fixes or clarify documentation.
00:08:20.286 --> 00:08:23.926
But fundamentally, it is a complete re-implementation. Mostly,
00:08:24.146 --> 00:08:26.006
not huge numbers of changes.
00:08:26.226 --> 00:08:28.946
They can't be, right? They're supposed to be 100% compatible.
00:08:29.206 --> 00:08:33.646
There are places where it's a little faster. There are places where you get
00:08:33.646 --> 00:08:36.986
nice little features like an interactive progress bar on the copy command, for example.
00:08:37.206 --> 00:08:40.446
There's an example of that in the FOSDEM talk that I linked in my post.
00:08:40.846 --> 00:08:45.586
And so this is an experiment. It's an experiment to see if we can integrate
00:08:45.586 --> 00:08:50.506
a really interesting new project in at the heart of the distribution which has
00:08:50.506 --> 00:08:54.746
a really active community around it who are interested in memory safety and
00:08:54.746 --> 00:08:57.246
resilience and kind of see how that goes.
00:08:58.268 --> 00:09:03.068
So, John, when I heard about this, my first thought was this must be a calculation
00:09:03.068 --> 00:09:05.088
for the long term, right?
00:09:05.228 --> 00:09:09.668
Your next, say, 2604, which is going to get supported for more than a decade.
00:09:10.208 --> 00:09:14.688
Is this about making this a more sustainable long-term support distribution?
00:09:14.688 --> 00:09:16.648
Is that sort of the high-level goal here?
00:09:16.828 --> 00:09:21.488
It's one of the considerations, yes. But it's also about our ability to grow
00:09:21.488 --> 00:09:23.168
the contributor base to Ubuntu.
00:09:23.468 --> 00:09:27.008
We grew really steadily, in my understanding. I wasn't a part of the project
00:09:27.008 --> 00:09:30.008
back then, but the community grew really steadily for years.
00:09:30.148 --> 00:09:34.748
But in the last five to six years, we have not seen the levels of contribution
00:09:34.748 --> 00:09:38.148
perhaps we were used to, and it certainly hasn't been growing the way we would like.
00:09:38.528 --> 00:09:43.148
And I don't have hard facts here, but coming to Linux distribution development
00:09:43.148 --> 00:09:47.828
as more of a kind of cloud-oriented developer, my feeling is that a lot of the
00:09:47.828 --> 00:09:49.968
tooling feels its age a little bit.
00:09:49.968 --> 00:09:54.448
If you compare to the craft tooling for building things like snaps and charms,
00:09:54.648 --> 00:09:58.768
you compare to the tooling for building flatbacks, you compare to the contribution process for Nix.
00:09:59.008 --> 00:10:03.668
We've also seen Silverblue and the uBlue project coming along trying to introduce
00:10:03.668 --> 00:10:04.728
more of those workflows too.
00:10:04.908 --> 00:10:07.808
Right, and they have absolutely nailed it, in my opinion. Like this,
00:10:08.088 --> 00:10:10.268
okay, you've learned all these skills for building Dockerfiles,
00:10:10.288 --> 00:10:13.328
what if you could use those exact same skills to build your OS? And so...
00:10:14.319 --> 00:10:19.099
Part of the deal with this Rust Core Utils thing is I want to attract developers,
00:10:19.359 --> 00:10:23.559
you know, the next generation of developers who are interested in becoming Ubuntu
00:10:23.559 --> 00:10:26.239
developers, Ubuntu maintainers. And so that's absolutely part of it.
00:10:27.019 --> 00:10:30.559
Am I right in picking up here that there's both the specifics of what you're
00:10:30.559 --> 00:10:33.059
swapping out and why, but then it kind of sounded like, too,
00:10:33.599 --> 00:10:37.379
it was maybe an exercise in your new role of seeing what it is like to try to
00:10:37.379 --> 00:10:40.179
be able to swap out things, kind of regardless of how this goes,
00:10:40.299 --> 00:10:43.439
to be able to go through the workflow and see how the community and contributors respond?
00:10:43.659 --> 00:10:48.879
Yeah, exactly. And I want to say I'm absolutely committed to making this change in 25.10.
00:10:49.079 --> 00:10:52.599
So on the day that the archive opens in 25.10, this change will have happened.
00:10:52.819 --> 00:10:57.979
The default core utils implementation for 25.10 is going to be the utils thing from the start.
00:10:58.519 --> 00:11:02.339
But that said, I don't want to be reckless about it. We will do our absolute
00:11:02.339 --> 00:11:05.939
best at Canonical with our community. And we're also going to work very closely
00:11:05.939 --> 00:11:07.839
with the upstream to resolve bugs.
00:11:07.939 --> 00:11:11.779
But I'm not going to ultimately stand on principle and jeopardize the stability
00:11:11.779 --> 00:11:15.919
and reliability of Ubuntu. If this doesn't work out, we would, of course, roll it back.
00:11:16.039 --> 00:11:18.979
But I'm pretty hopeful that it's going to from what I've seen so far.
00:11:19.159 --> 00:11:24.239
Well, that brings up then, what are you looking for to be able to slot it into a future LTS?
00:11:24.619 --> 00:11:28.139
So I guess the first thing is we will change it in the archive and see what breaks.
00:11:28.639 --> 00:11:33.259
We're going to have a big rebuild going on. It'll be interesting to see which of our scripts break.
00:11:33.399 --> 00:11:37.539
I have personally run into one interesting bug, which is the CP and move and
00:11:37.539 --> 00:11:42.439
LS commands don't currently respect the kind of dash capital Z command flag
00:11:42.439 --> 00:11:44.119
for respecting SE Linux contexts.
00:11:44.399 --> 00:11:47.879
We have a plan already with the upstream on how we will help them get that implemented.
00:11:48.159 --> 00:11:52.279
And there's a few other things. So it's really about in those first few weeks,
00:11:53.219 --> 00:11:54.559
understanding where the delta is.
00:11:54.759 --> 00:11:58.899
And from there, the other one is locales. So currently things like the support
00:11:58.899 --> 00:12:03.699
command, if you use a different locale other than the kind of C locales, it won't respect it.
00:12:03.819 --> 00:12:06.819
So if you're in France and you use a French locale and you sort,
00:12:06.959 --> 00:12:10.519
it won't respect your locale. So again, we clearly have to fix that before we ship it.
00:12:11.099 --> 00:12:14.239
So those are the two big ones that I know about at the moment.
00:12:14.579 --> 00:12:16.779
We'll see. I've been running it on my machine for the last three,
00:12:16.839 --> 00:12:18.519
four weeks, and so have a bunch of my colleagues.
00:12:18.699 --> 00:12:22.679
And from what I can tell, apart from the SE Linux thing, pretty good so far.
00:12:22.839 --> 00:12:27.699
Is this where Oxidizer comes in to let you test and swap between the different versions?
00:12:27.979 --> 00:12:31.359
Yeah. So Oxidizer is, I just want to stress, not a canonical project.
00:12:31.699 --> 00:12:34.779
Oxidizer is a utility i wrote to satisfy my own curiosity
00:12:34.779 --> 00:12:37.679
so it it is a blatant abuse
00:12:37.679 --> 00:12:40.519
in some regards of the way debian switches packages out
00:12:40.519 --> 00:12:44.879
and the the kind of unix file system hierarchy that kind of thing all it really
00:12:44.879 --> 00:12:50.199
does is it installs the new core utils package it runs which against each of
00:12:50.199 --> 00:12:53.699
the binaries core utils provides and essentially backs up the old one and then
00:12:53.699 --> 00:12:56.839
sim links over the top of it with the new one it's it's a bit of a hack but
00:12:56.839 --> 00:12:59.919
i wanted to see rather than something like the alternative system,
00:13:00.199 --> 00:13:04.439
I wanted to see what would happen to my system if really the only implementation
00:13:04.439 --> 00:13:06.559
that it could find was the UUtils one, right?
00:13:06.899 --> 00:13:07.219
Sure.
00:13:08.089 --> 00:13:11.429
Do you think that might ship in 2510 for users to be able to test?
00:13:11.609 --> 00:13:14.949
No, in 2510, it's going to be the UUTILs thing.
00:13:15.029 --> 00:13:15.849
It's going to be the Rust.
00:13:15.969 --> 00:13:19.769
Yeah, so you'll be able to install GNUK or UUTILs still. It may be that the
00:13:19.769 --> 00:13:22.169
commands are prefixed or something like that.
00:13:22.269 --> 00:13:25.189
But by default, people in 2510 are going to get the new one.
00:13:25.369 --> 00:13:29.289
When you type LS, you'll be getting the Rust UUTILs LS command.
00:13:29.749 --> 00:13:30.089
Wow.
00:13:30.789 --> 00:13:35.189
I mean, that, I got to be honest, makes me want to try out 2510 just right there.
00:13:36.109 --> 00:13:37.609
So it's doing something, John.
00:13:37.609 --> 00:13:41.309
Maybe we should, okay, so there's CoreUtil, in Oxidizer right now,
00:13:41.389 --> 00:13:43.149
there's, what, four experiments?
00:13:43.589 --> 00:13:49.109
CoreUtils, FindUtils, DiffUtils, and then also Pseudo-RS. Maybe you could touch
00:13:49.109 --> 00:13:51.809
on why or how you picked the set?
00:13:51.989 --> 00:13:55.469
Yeah, so CoreUtils, I was initially what kind of piqued my interest,
00:13:55.469 --> 00:13:57.629
and that seems like one of the most mature.
00:13:58.569 --> 00:14:02.409
I'm not planning right now, we're not planning right now on making FindUtils
00:14:02.409 --> 00:14:07.369
or DiffUtils default for 2510. I am seriously considering, and I've been meeting
00:14:07.369 --> 00:14:10.529
with the maintainers of sudo-rs, that's another consideration.
00:14:10.909 --> 00:14:15.209
So there's a good chance, it's not for sure, but there's a good chance that
00:14:15.209 --> 00:14:20.049
sudo-rs will be the default sudo implementation in 2510 if we can work out a
00:14:20.049 --> 00:14:23.969
plan with the upstream maintainers on how we implement a couple of little missing
00:14:23.969 --> 00:14:25.649
features that we would like to make sure are present.
00:14:25.809 --> 00:14:29.829
So again, you may well, when you type sudo in 2510, if the plan goes well,
00:14:29.849 --> 00:14:33.829
you will be getting this nice new equivalent. And that's another project where
00:14:33.829 --> 00:14:38.309
they test very rigorously, and they're in constant communication with the kind
00:14:38.309 --> 00:14:39.709
of OG pseudo developer, right?
00:14:40.609 --> 00:14:43.449
It's very much collaborative, right, which is really nice to see.
00:14:43.949 --> 00:14:49.769
Okay, so we've kind of touched on some of the meta reasons around why we might want to do this.
00:14:49.869 --> 00:14:54.009
But especially talking about pseudo makes me think, well, security and some
00:14:54.009 --> 00:14:58.389
of the specifics around rewrites in Rust might also be pretty relevant.
00:14:58.389 --> 00:15:01.209
I guess the important thing to highlight here is with both of these projects,
00:15:01.329 --> 00:15:03.349
with Core Utils and with sudo RS, there will be bugs.
00:15:03.909 --> 00:15:06.869
Sure as night follows day, it's software, we will find bugs.
00:15:07.269 --> 00:15:10.409
We're very committed to fixing those bugs, working with the maintainers and
00:15:10.409 --> 00:15:13.509
making sure the maintainers have the resources they need to do that.
00:15:13.889 --> 00:15:17.949
The sudo RS implementation has had a formal security audit of which they have
00:15:17.949 --> 00:15:19.529
posted the results, and it was very positive.
00:15:20.369 --> 00:15:23.849
And there is a, you know, while it's not impossible to write unsafe code in
00:15:23.849 --> 00:15:28.289
Rust, you know, the compiler makes you work much harder to do the wrong thing.
00:15:28.389 --> 00:15:31.609
And this is, again, back to the kind of community-building aspect.
00:15:31.809 --> 00:15:35.629
If a new developer or a young and experienced developer wants to be part of this,
00:15:36.621 --> 00:15:40.601
While learning the BorrowChecker can be hard, it also means you're much less
00:15:40.601 --> 00:15:43.561
likely to accidentally do something that could be very fatal, right?
00:15:43.661 --> 00:15:47.601
And so it will allow, I think, a community of people to contribute with confidence
00:15:47.601 --> 00:15:51.281
and allow us to ship it with confidence knowing that that guardrail is in place.
00:15:51.581 --> 00:15:54.781
Right. You kind of have built-in help for the review. And as you touch on,
00:15:54.861 --> 00:15:58.281
maybe it allows folks to be a little more ambitious in what their contributions can be.
00:15:58.281 --> 00:16:01.861
Yeah, I hope so. And that's not to say, you know, Sudo and the original GNU
00:16:01.861 --> 00:16:02.941