WEBVTT

00:00:11.309 --> 00:00:15.909
<v Chris>Hello, friends, and welcome back to your weekly Linux talk show. My name is Chris.

00:00:16.089 --> 00:00:16.689
<v Wes>My name is Wes.

00:00:16.849 --> 00:00:17.529
<v Brent>And my name is Brent.

00:00:17.709 --> 00:00:21.929
<v Chris>Hello, gentlemen. Coming up on the show today, we'll cover the copy-fail vulnerability,

00:00:22.149 --> 00:00:26.069
<v Chris>tearing through Linux distributions out there, plus Ubuntu 2604,

00:00:26.289 --> 00:00:30.949
<v Chris>the Resolute Raccoon, is here, and John Seeger will dig into the details with us.

00:00:31.089 --> 00:00:34.249
<v Chris>And then we'll round out the show with some great boosts and picks and a heck

00:00:34.249 --> 00:00:38.089
<v Chris>of a lot more. So before we get into that, this is like three big shows in one.

00:00:38.329 --> 00:00:41.609
<v Chris>We've got to bring in our virtual lug. time-appropriate greetings, Mumble Room.

00:00:42.149 --> 00:00:44.029
<v Mumble>Hello, Chris. Hello, Brent.

00:00:44.589 --> 00:00:44.889
<v Chris>Hello.

00:00:44.929 --> 00:00:45.529
<v Brent>Hello, hello.

00:00:45.949 --> 00:00:48.649
<v Chris>And shout out to everybody up there in the quiet listening and everybody on

00:00:48.649 --> 00:00:50.529
<v Chris>the live stream. Pershing H.

00:00:50.609 --> 00:00:52.229
<v Wes>We see you. You hear us.

00:00:53.529 --> 00:00:56.349
<v Chris>Something like that. A version of that somewhere in there.

00:00:56.589 --> 00:00:57.549
<v Wes>You boost? I don't know.

00:00:57.629 --> 00:01:01.569
<v Chris>I don't know. Also, good morning to our friends over at Defined Networking.

00:01:01.609 --> 00:01:03.709
<v Chris>Go check out Manage Nebula from Defined Networking.

00:01:03.849 --> 00:01:09.969
<v Chris>It gives you a decentralized VPN built on the open-source Nebula platform that we just love.

00:01:10.129 --> 00:01:14.929
<v Chris>And what I really like is the flexibility. You can build the network you want

00:01:14.929 --> 00:01:19.829
<v Chris>and the way you actually want it, from maybe your home lab to a full enterprise setup.

00:01:20.009 --> 00:01:23.609
<v Chris>And you have the option to run your own lighthouse nodes so you own the stack

00:01:23.609 --> 00:01:26.289
<v Chris>end-to-end. But you don't have to start the hard way.

00:01:26.809 --> 00:01:30.629
<v Chris>Define gives you a full managed experience, so that way you can get up and running

00:01:30.629 --> 00:01:34.709
<v Chris>fast with speed, security, and resilience baked in from day one.

00:01:35.129 --> 00:01:39.809
<v Chris>No big tech login required. Try it for free, 100 hosts, no credit card,

00:01:39.949 --> 00:01:42.889
<v Chris>at defined.net slash unplugged.

00:01:42.949 --> 00:01:46.169
<v Chris>That is defined.net slash unplugged. You go over there, you support the Unplugged

00:01:46.169 --> 00:01:49.969
<v Chris>program, defined.net slash unplugged. And a big thank you to the defined folks

00:01:49.969 --> 00:01:54.609
<v Chris>over there and the fine, fine folks at Defined for sponsoring this here program.

00:01:56.287 --> 00:02:00.507
<v Chris>Let's get right into it. Gentlemen, we have ourselves quite the vulnerability this week.

00:02:00.687 --> 00:02:04.407
<v Chris>Copy fail, which is an unprivileged local attack that allows,

00:02:04.527 --> 00:02:09.687
<v Chris>say, even just a generic Brent user with no admin rights to pop your box.

00:02:09.847 --> 00:02:10.607
<v Wes>Yeah, that's not great.

00:02:10.787 --> 00:02:16.867
<v Chris>No. And it turns out it's been baked into most Linux distros since 2017-ish. Is that right?

00:02:17.047 --> 00:02:17.187
<v Wes>Yeah.

00:02:17.407 --> 00:02:19.887
<v Chris>So that's a while and just about everything that's shipping right now.

00:02:20.267 --> 00:02:24.067
<v Chris>And some distros are still working very hard to get it patched.

00:02:24.567 --> 00:02:28.747
<v Chris>ours writes it's the quote most severe linux threat to the to surface in years

00:02:28.747 --> 00:02:33.507
<v Chris>and it is catch it has caught the world flat-footed and my tongue what do you

00:02:33.507 --> 00:02:36.707
<v Chris>think there wes pano what i want to get your take on this first because you've

00:02:36.707 --> 00:02:38.147
<v Chris>actually been playing around with the exploit.

00:02:38.147 --> 00:02:40.867
<v Wes>Yeah um it is worth noting right you do need some sort

00:02:40.867 --> 00:02:43.747
<v Wes>of access right so you need you if you don't have a user account on

00:02:43.747 --> 00:02:46.567
<v Wes>the box you need some other chain some other vulnerability maybe it's a

00:02:46.567 --> 00:02:49.427
<v Wes>you know some kind of injection in a web app whatever

00:02:49.427 --> 00:02:52.667
<v Wes>it is um but once you have that user access then

00:02:52.667 --> 00:02:56.087
<v Wes>yeah pretty much any system because it's a kernel logic issue the

00:02:56.087 --> 00:02:59.047
<v Wes>particular like the first poc that was released was

00:02:59.047 --> 00:03:03.687
<v Wes>like a python 3 thing and sort of made some assumptions about like particular

00:03:03.687 --> 00:03:09.507
<v Wes>set uid binaries like su uh but those are all particular implementation details

00:03:09.507 --> 00:03:12.647
<v Wes>so it's important to realize that like the core thing is this is this kernel

00:03:12.647 --> 00:03:16.607
<v Wes>flaw uh which we could get into because it's it's kind of fascinating because it,

00:03:17.554 --> 00:03:21.674
<v Wes>As often is the case. Well, one, I guess we should note, it was an AI-assisted

00:03:21.674 --> 00:03:25.614
<v Wes>finding, but began with insight from human researchers at Theore,

00:03:26.494 --> 00:03:30.754
<v Wes>Taiyang Li, who's studying how the Linux crypto subsystem interacts with page

00:03:30.754 --> 00:03:32.834
<v Wes>cache-backed data, and we'll get into that.

00:03:33.334 --> 00:03:37.274
<v Wes>So there's a few layers. The first is the VFS layer. There's this call called

00:03:37.274 --> 00:03:41.634
<v Wes>Splice that kind of lets you combine pipes and file descriptors.

00:03:41.714 --> 00:03:45.934
<v Wes>So you can open a file for reading and then combine that with a pipe and then

00:03:45.934 --> 00:03:50.194
<v Wes>pipe it into other things that you're using when you're calling kernel APIs.

00:03:51.434 --> 00:03:57.794
<v Wes>And in particular, there's this AFALG API and it lets user space programs take

00:03:57.794 --> 00:04:00.494
<v Wes>advantage of all the cryptographic stuff or a lot of the cryptographic stuff

00:04:00.494 --> 00:04:03.434
<v Wes>that exists in the kernel, which is good, both because like you don't have to

00:04:03.434 --> 00:04:05.634
<v Wes>reimplement it, but also the kernel has access to hardware stuff.

00:04:05.754 --> 00:04:08.314
<v Wes>Like there's various reasons the kernel might be able to do it faster or more

00:04:08.314 --> 00:04:12.534
<v Wes>securely or better than the random user space program that needs to handle encrypted data.

00:04:13.034 --> 00:04:18.814
<v Wes>The problem is that in 2017, there was an in-place optimization made.

00:04:19.014 --> 00:04:24.034
<v Wes>So basically to avoid allocating duplicate memory during decryption processes,

00:04:24.034 --> 00:04:26.074
<v Wes>you have some encrypted data, you're calling the kernel to say,

00:04:26.154 --> 00:04:27.594
<v Wes>hey, please decrypt this for me.

00:04:27.994 --> 00:04:30.114
<v Wes>The kernel tries this in-place operation.

00:04:30.814 --> 00:04:34.854
<v Wes>Basically, you need to pass the data into the kernel for what you want to decrypt.

00:04:34.894 --> 00:04:35.634
<v Wes>And there's various parts.

00:04:35.794 --> 00:04:38.934
<v Wes>There's like some of the cryptographic primitives, which is the actual encrypted

00:04:38.934 --> 00:04:41.654
<v Wes>data, and there's the authentication tag.

00:04:41.654 --> 00:04:46.074
<v Wes>and it builds this buffer that it's going to pass into the kernel and it copies

00:04:46.074 --> 00:04:50.854
<v Wes>some of the first parts in there but it doesn't actually copy the tag instead

00:04:50.854 --> 00:04:55.874
<v Wes>it basically passes a reference to the tag's memory at the end there instead

00:04:55.874 --> 00:04:58.614
<v Wes>of like allocating new memory and putting the tag in there.

00:04:59.408 --> 00:05:03.568
<v Wes>And unfortunately, later on in the cryptographic algorithms,

00:05:03.868 --> 00:05:09.628
<v Wes>this spot, the RxSGL, the destination, is inherently treated as writable.

00:05:10.288 --> 00:05:13.808
<v Wes>So in this stage, like kind of when you have the splice side of it,

00:05:13.948 --> 00:05:18.048
<v Wes>it's all fine. It's like read-only. You're just kind of like splicing on this read-only reference.

00:05:18.528 --> 00:05:22.608
<v Wes>And we'll get more into that. But it's really the problem where we did this

00:05:22.608 --> 00:05:27.468
<v Wes>optimization in the mechanism that lets user space programs call into the kernel.

00:05:27.468 --> 00:05:33.508
<v Wes>And then you need another piece, which is there's a particular encryption mechanism

00:05:33.508 --> 00:05:38.708
<v Wes>for IPsec, auth and ESN for extended sequence numbers.

00:05:38.908 --> 00:05:40.448
<v Wes>And basically it's these 64-bit

00:05:40.448 --> 00:05:43.668
<v Wes>numbers that they need to do stuff and rearrange some of the bits for.

00:05:44.168 --> 00:05:49.268
<v Wes>And it kind of cheats. It uses the caller's destination buffer,

00:05:49.428 --> 00:05:52.808
<v Wes>which is the thing we were just talking about, as a temporary scratch space.

00:05:52.888 --> 00:05:53.408
<v Brent>That's okay, though.

00:05:54.488 --> 00:05:58.888
<v Wes>And specifically, it uses scatter, walk, map, and copy to write four bytes past

00:05:58.888 --> 00:06:02.368
<v Wes>the end of the legitimate plain text data precisely at an offset.

00:06:02.748 --> 00:06:05.788
<v Wes>So you kind of put this all together, and this is what the actual,

00:06:05.788 --> 00:06:08.308
<v Wes>like, exploit does is...

00:06:09.894 --> 00:06:13.854
<v Wes>The attacker, so you basically, you need some sort of file that you have read

00:06:13.854 --> 00:06:16.914
<v Wes>access to. That's important. So you open that file for reading.

00:06:17.034 --> 00:06:20.234
<v Chris>Which should just, I mean, that should be pretty easy. As long as you can get on the box.

00:06:20.354 --> 00:06:23.694
<v Wes>Yeah, yeah. So there's some file that the user can read. We'll get into that.

00:06:23.874 --> 00:06:27.354
<v Chris>But could that even be like a web server process? I mean, this is,

00:06:27.474 --> 00:06:28.894
<v Chris>that's pretty generic. Okay.

00:06:29.134 --> 00:06:31.654
<v Wes>Yeah, it doesn't need special permissions or anything.

00:06:31.794 --> 00:06:32.034
<v Chris>Yeah, yeah.

00:06:32.254 --> 00:06:36.074
<v Wes>So it basically opens that file, which loads it into the page cache,

00:06:36.154 --> 00:06:39.314
<v Wes>right? which was the memory cache that sort of like you put things in so that

00:06:39.314 --> 00:06:41.014
<v Wes>you don't have to go fetch them from disk all the time in the kernel.

00:06:41.234 --> 00:06:43.214
<v Wes>And this ends up being system-wide, by the way.

00:06:43.454 --> 00:06:46.634
<v Wes>And so it has that available, and then it makes this splice call to sort of

00:06:46.634 --> 00:06:50.574
<v Wes>set up this pipe that gives it basically a memory reference to that data.

00:06:50.934 --> 00:06:55.974
<v Wes>So the attacker aligns the splice offset so that what it is thinking is this

00:06:55.974 --> 00:06:59.034
<v Wes>tag reference, right? It's trying to pass a tag into the crypto API.

00:06:59.394 --> 00:07:03.454
<v Wes>That actually points exactly over where it's trying to write in whatever the

00:07:03.454 --> 00:07:07.074
<v Wes>target is. So it opens, say, the SU binary, right, with this.

00:07:07.254 --> 00:07:08.674
<v Wes>It opens it just for reading.

00:07:08.854 --> 00:07:08.974
<v Chris>Yeah.

00:07:09.314 --> 00:07:13.574
<v Wes>And then it kind of aligns things then so it passes a memory reference to wherever

00:07:13.574 --> 00:07:14.594
<v Wes>it's trying to overwrite.

00:07:15.183 --> 00:07:19.223
<v Wes>and then it calls into the crypto API, and then it just blindly changed that

00:07:19.223 --> 00:07:22.643
<v Wes>page cache reference because the actual reference it gets is the page cache.

00:07:22.763 --> 00:07:25.243
<v Wes>It's the page cache for the binary.

00:07:25.663 --> 00:07:28.183
<v Wes>That's a key part of it, right? So it's like when it opens it for reading,

00:07:28.283 --> 00:07:31.943
<v Wes>the kernel happily goes and reads it and then gives it a reference to the memory

00:07:31.943 --> 00:07:34.383
<v Wes>that corresponds to the actual page cache entry.

00:07:35.023 --> 00:07:39.523
<v Wes>So then when the crypto stuff happens, it just changes that tag thing,

00:07:39.643 --> 00:07:44.903
<v Wes>which ends up being the page cache reference, onto the actual final buffer that it's going to be using.

00:07:45.183 --> 00:07:50.903
<v Wes>And then the particular IPsec encryption algorithm does its byte shuffling stuff

00:07:50.903 --> 00:07:54.923
<v Wes>and writes those four bytes, which are now attacker controlled,

00:07:55.163 --> 00:07:57.803
<v Wes>past the normal sort of plain text stuff it's supposed to be using.

00:07:58.183 --> 00:08:02.043
<v Wes>And then that, because it was aligned from our first thing with the splice,

00:08:02.263 --> 00:08:06.863
<v Wes>then writes not to the file on disk, but it writes four bytes to whatever you

00:08:06.863 --> 00:08:09.463
<v Wes>like in the page cache version of the file.

00:08:09.763 --> 00:08:13.143
<v Wes>They have a very clever little payload. it's

00:08:13.143 --> 00:08:16.123
<v Wes>like 158 bytes and people have been golfing this further but

00:08:16.123 --> 00:08:19.743
<v Wes>it's basically a super clever tiny little minimal elf thing

00:08:19.743 --> 00:08:22.963
<v Wes>that like all it really does is look so

00:08:22.963 --> 00:08:26.183
<v Wes>instead of having to figure out like target a particular binary

00:08:26.183 --> 00:08:28.843
<v Wes>to patch in a particular way they just override it from the

00:08:28.843 --> 00:08:32.243
<v Wes>start with a super minimal little tiny custom binary it's clever

00:08:32.243 --> 00:08:34.943
<v Wes>to be like as position independent as can be and like work is in

00:08:34.943 --> 00:08:39.003
<v Wes>many places but it basically just it calls set uid zero to like really sort

00:08:39.003 --> 00:08:42.603
<v Wes>of sink in and like make sure it has full root permissions it's already running

00:08:42.603 --> 00:08:45.883
<v Wes>here in like a context of a set uid binary but like it makes sure that's synced

00:08:45.883 --> 00:08:49.763
<v Wes>to all the kernels places and then it just has like a nice clever way to call

00:08:49.763 --> 00:08:52.743
<v Wes>slash bin slash sh but it could do anything here that you wanted this was just

00:08:52.743 --> 00:08:54.823
<v Wes>a quick way to spawn a root shell.

00:08:55.432 --> 00:08:58.972
<v Wes>Now, what's interesting is, like, if you just do it on, say,

00:08:59.032 --> 00:09:00.972
<v Wes>like, an affected Ubuntu instance, it'll just work.

00:09:01.052 --> 00:09:05.092
<v Wes>But the script that was first sort of put out there, hard-coded user bin SU.

00:09:05.372 --> 00:09:07.732
<v Wes>So, like, on a NixOS app, when I was trying to play with it,

00:09:07.892 --> 00:09:10.572
<v Wes>at first that didn't work just for the reason that that's not the right path

00:09:10.572 --> 00:09:12.472
<v Wes>for where SU lives on a Nix system.

00:09:12.772 --> 00:09:17.392
<v Wes>But then also, it turns out that on NixOS, a lot of SUID binaries,

00:09:17.572 --> 00:09:20.752
<v Wes>or the wrappers for them, are configured as execute only.

00:09:20.992 --> 00:09:24.112
<v Wes>So you don't actually have read permissions. So that's another way it could

00:09:24.112 --> 00:09:26.372
<v Wes>fail. And you could think that you're not actually impacted,

00:09:26.372 --> 00:09:29.892
<v Wes>but those are all just implementation details because you could also,

00:09:30.192 --> 00:09:32.712
<v Wes>like, there are a bunch of stuff that you kind of have to be able to read,

00:09:32.872 --> 00:09:35.772
<v Wes>like shared libraries, libc, pamunix.

00:09:36.292 --> 00:09:39.252
<v Wes>You could also target something like etsypassword, say, right?

00:09:39.292 --> 00:09:42.452
<v Wes>There's like a lot of stuff that you could overwrite that you have to have read

00:09:42.452 --> 00:09:43.792
<v Wes>access to to be able to do.

00:09:43.972 --> 00:09:48.912
<v Wes>And then what's so tricky about this, right, is then it's poisoned the page cache.

00:09:48.912 --> 00:09:53.012
<v Wes>but the kernel in all of this stuff that's happening it never there's like an

00:09:53.012 --> 00:09:56.692
<v Wes>error but it never sort of undoes anything and it never then marks that as dirty

00:09:56.692 --> 00:10:00.832
<v Wes>so it doesn't know that it needs to be re-read like anything's wrong and so,

00:10:01.946 --> 00:10:06.566
<v Wes>If you go try to hash it, the hash will go check the, like the hash thing command

00:10:06.566 --> 00:10:08.606
<v Wes>will actually go get the bytes on disk and it'll be fine.

00:10:08.826 --> 00:10:14.566
<v Wes>But if you make an exec call, like the exeve call in the system call,

00:10:14.766 --> 00:10:16.766
<v Wes>the kernel is just going to use the page cache.

00:10:16.866 --> 00:10:17.026
<v Chris>Yeah.

00:10:17.206 --> 00:10:18.386
<v Wes>That's the whole thing. That's the point.

00:10:18.586 --> 00:10:19.046
<v Chris>Oh, man.

00:10:19.206 --> 00:10:23.066
<v Wes>And you're not checking that. Right. And so you have to be much more clever

00:10:23.066 --> 00:10:25.966
<v Wes>around how to detect it because you can't just like do the hash.

00:10:26.106 --> 00:10:28.506
<v Wes>Now, it does mean it's not persistent because if you reboot,

00:10:28.626 --> 00:10:31.486
<v Wes>then the page cache is gone. So that's a small blessing here.

00:10:31.586 --> 00:10:31.746
<v Chris>Yeah.

00:10:31.946 --> 00:10:38.026
<v Wes>But it's, yeah, it's widespread, kind of nasty. It does need some chaining in a lot of cases, but...

00:10:38.026 --> 00:10:40.746
<v Chris>Containerization doesn't solve it because it's still using these same primitives.

00:10:40.866 --> 00:10:42.006
<v Chris>It does seem like systems that

00:10:42.006 --> 00:10:45.766
<v Chris>have strict SE Linux and perhaps AppArmor profiles might be better off.

00:10:45.946 --> 00:10:50.006
<v Chris>Or like you said, if you have it where execute is only and read isn't an option.

00:10:50.986 --> 00:10:55.046
<v Chris>So key takeaways are this is a bad one. And it's been on machines for a while.

00:10:55.386 --> 00:10:57.926
<v Chris>And we're going to have a lot of patching to do.

00:10:58.406 --> 00:11:02.386
<v Chris>and the bug was found by an AI-assisted coding analysis tool in roughly an hour.

00:11:03.186 --> 00:11:06.566
<v Chris>So expect the cadence of deep kernel disclosures to pick up.

00:11:06.806 --> 00:11:11.806
<v Wes>Yeah, I guess folks at the xint.io and they've got some various setups and harnesses

00:11:11.806 --> 00:11:12.866
<v Wes>to kind of go poke around.

00:11:12.986 --> 00:11:16.566
<v Wes>So they had some hypotheses, partly from human researchers, exploring various

00:11:16.566 --> 00:11:21.606
<v Wes>places that might have bugs and then I guess they threw some AI at it.

00:11:21.666 --> 00:11:25.686
<v Wes>It turned up a bunch of stuff and this is what it rated as the highest severity issue.

00:11:25.926 --> 00:11:29.266
<v Chris>Mm-hmm. Mm-hmm. So 2604, not currently affected?

00:11:29.526 --> 00:11:30.586
<v Wes>No, I believe not.

00:11:30.766 --> 00:11:34.446
<v Chris>That's good. And, of course, the Debian security channel has a patch.

00:11:34.726 --> 00:11:36.306
<v Chris>Alma Linux has it patched.

00:11:36.806 --> 00:11:40.026
<v Chris>So the patch is getting out there. NixOS has something, even though,

00:11:40.166 --> 00:11:43.246
<v Chris>like you said, your box wasn't. But all the big distros are going to get it

00:11:43.246 --> 00:11:44.766
<v Chris>affected. There is a way people can tell, right?

00:11:45.507 --> 00:11:47.927
<v Chris>If they just look at their kernel version, if they have, well,

00:11:48.007 --> 00:11:49.647
<v Chris>basically anything since 2017.

00:11:50.027 --> 00:11:54.507
<v Wes>And you can also, like, there are very safe, like, little test exploits you can run.

00:11:54.687 --> 00:11:54.827
<v Chris>Yeah.

00:11:54.827 --> 00:11:57.767
<v Wes>You can also check, like, you do need some of these modules.

00:11:58.067 --> 00:11:59.607
<v Wes>Like, some kernels have them built in.

00:11:59.747 --> 00:12:01.127
<v Wes>Some are as, like, loadable modules.

00:12:01.127 --> 00:12:03.927
<v Wes>So you could sort of remove them and prevent them from being loaded.

00:12:04.067 --> 00:12:07.887
<v Wes>So there's various mitigations per distro, sort of, depending on how your kernel is set up.

00:12:08.287 --> 00:12:12.627
<v Chris>I think we're going to have to, as a community, look at this as an opportunity,

00:12:12.627 --> 00:12:15.827
<v Chris>not as a burden, even though it is absolutely going to be a massive workload.

00:12:16.327 --> 00:12:22.207
<v Chris>But as a community, we have always championed the idea that more eyes means shallower bugs.

00:12:22.407 --> 00:12:26.907
<v Chris>And now we are getting dramatically more eyes. We are getting exponentially more eyes.

00:12:27.007 --> 00:12:29.607
<v Brent>More AIs means less shallow bugs.

00:12:29.687 --> 00:12:36.087
<v Chris>More AIs means, yeah, exactly. And the upshot is our software will get more secure.

00:12:36.367 --> 00:12:40.007
<v Wes>Yeah, so when they fixed this, they didn't actually fix the IPsec part where

00:12:40.007 --> 00:12:44.487
<v Wes>it was kind of cheating and using that little scratch part. They fixed the in-place

00:12:44.487 --> 00:12:49.087
<v Wes>optimization from 2017 so that it never passes this reference anymore.

00:12:49.187 --> 00:12:52.467
<v Wes>So there's no longer some sort of coupling between the input and output and

00:12:52.467 --> 00:12:53.587
<v Wes>reusing some of those stuff.

00:12:53.727 --> 00:12:57.687
<v Wes>And the part that's so funny is in the commit message, they note there's actually

00:12:57.687 --> 00:13:01.147
<v Wes>no benefit in operating in-place in this way since the source and destination

00:13:01.147 --> 00:13:02.207
<v Wes>come from different mappings.

00:13:02.407 --> 00:13:04.587
<v Wes>So we didn't even really need to be doing this.

00:13:05.367 --> 00:13:08.367
<v Brent>I have a question for you, Wes. It's more of maybe your opinion.

00:13:08.367 --> 00:13:13.607
<v Brent>Given this has come out now and is somewhat obscure for the kernel,

00:13:14.167 --> 00:13:18.807
<v Brent>any thoughts on, given the kernel's complexity, like how many of these little

00:13:18.807 --> 00:13:20.167
<v Brent>things are just hiding in there?

00:13:20.287 --> 00:13:21.027
<v Wes>That's a good question.

00:13:21.207 --> 00:13:21.467
<v Chris>Yeah.

00:13:21.847 --> 00:13:22.627
<v Wes>It's hard to estimate.

00:13:22.787 --> 00:13:23.847
<v Chris>And think about every library...

00:13:24.987 --> 00:13:28.027
<v Chris>every service, every service on the internet that listens remotely.

00:13:28.367 --> 00:13:31.067
<v Chris>But we probably have been needing to do this for a long time.

00:13:31.067 --> 00:13:33.527
<v Chris>We probably should have had a lot more humans focused on this,

00:13:33.587 --> 00:13:34.647
<v Chris>but we just weren't doing it.

00:13:34.747 --> 00:13:35.287
<v Brent>It's a hard problem.

00:13:35.487 --> 00:13:38.747
<v Wes>It is also right, like that where, you know, and maybe using the assistance

00:13:38.747 --> 00:13:42.567
<v Wes>where you can, whatever, to try and up your posture and do things more by default.

00:13:42.567 --> 00:13:47.027
<v Wes>Because like, if you do things like, you know, okay, fewer permissions on set

00:13:47.027 --> 00:13:50.767
<v Wes>UID binaries, or you try to take as much advantage of all the hardening that

00:13:50.767 --> 00:13:54.567
<v Wes>systemd services offers by default. so that it sees less of the system and has

00:13:54.567 --> 00:13:56.547
<v Wes>less access to things, even read-only.

00:13:56.767 --> 00:13:59.847
<v Wes>There are tools we have, and we need to grow better ones.

00:14:00.107 --> 00:14:03.047
<v Wes>But I think it just means defense in depth will become even more important.

00:14:03.267 --> 00:14:06.627
<v Chris>I do think when we see these, a lot of times, folks that have taken the time

00:14:06.627 --> 00:14:11.187
<v Chris>to actually have a solid SE Linux setup and actually use it have been validated

00:14:11.187 --> 00:14:13.947
<v Chris>over and over again that it's worth the effort because they end up protected

00:14:13.947 --> 00:14:14.867
<v Chris>from these kinds of things.

00:14:18.161 --> 00:14:21.221
<v Chris>I want to thank our members for supporting this here podcast.

00:14:21.221 --> 00:14:25.981
<v Chris>It really has made quite the difference recently as we're very lean on the advertising

00:14:25.981 --> 00:14:28.301
<v Chris>and we're trying to turn that around.

00:14:28.341 --> 00:14:31.741
<v Chris>But in the meantime, the members and the boosters are really keeping us going.

00:14:31.921 --> 00:14:36.721
<v Chris>If you sign up to you get quite the bootleg this week, we had a chance to go

00:14:36.721 --> 00:14:39.701
<v Chris>to Valve and we tell that story in the bootleg.

00:14:39.841 --> 00:14:43.341
<v Chris>So go to linuxunplugged.com slash membership and sign up.

00:14:43.381 --> 00:14:46.221
<v Chris>You can get the bootleg edition or the ad-free edition, whichever fits your

00:14:46.221 --> 00:14:47.881
<v Chris>schedule better because the bootleg is kind of long.

00:14:48.161 --> 00:14:51.741
<v Chris>And, of course, you can support all the shows, including the launch,

00:14:52.021 --> 00:14:55.461
<v Chris>This Week in Bitcoin, and more at jupyter.party, and you get special access

00:14:55.461 --> 00:14:58.201
<v Chris>to all of them, including the bootleg for this here show.

00:14:58.381 --> 00:15:02.401
<v Chris>You can also boost an episode with Fountain FM, and that gives a signal on what

00:15:02.401 --> 00:15:05.321
<v Chris>you thought about that particular topic, how we did, the value, et cetera.

00:15:05.501 --> 00:15:08.461
<v Chris>And it also goes to each one of us directly and to Editor Drew,

00:15:08.841 --> 00:15:10.781
<v Chris>as well as the developer, and the podcast index.

00:15:11.021 --> 00:15:12.981
<v Chris>So it's a nice way to kind of put it all around.

00:15:13.241 --> 00:15:14.401
<v Wes>Support all the great things.

00:15:14.501 --> 00:15:17.761
<v Chris>Mm-hmm. And it's nice, too, because it's all transparent. It's open source, free software stack.

00:15:18.381 --> 00:15:22.681
<v Chris>And like I like to say, the contract is in the RSS feed, so you as an audience

00:15:22.681 --> 00:15:24.121
<v Chris>get to see exactly where everything goes.

00:15:24.421 --> 00:15:28.161
<v Chris>But we appreciate the memberships as our foundation and the boosts as our signal.

00:15:31.856 --> 00:15:36.976
<v Chris>Well, this week, we had a chance to chat with John Seeger. He is the VP of Engineering

00:15:36.976 --> 00:15:38.576
<v Chris>over at Canonical for Ubuntu.

00:15:38.876 --> 00:15:46.596
<v Chris>And, of course, the big news is 2604 is out. And this is one of the LTS releases, the 11th LTS release.

00:15:47.296 --> 00:15:50.316
<v Chris>Yeah, and this, as they often are, was a focus on stability.

00:15:50.316 --> 00:15:53.376
<v Chris>But a few bits of innovation worked in there.

00:15:53.636 --> 00:15:56.936
<v Chris>We have a couple of highlights in here, like TPM-backed full disk encryption.

00:15:57.696 --> 00:15:58.776
<v Chris>Wayland's now the default.

00:15:58.776 --> 00:16:01.236
<v Wes>Obviously, they're now like, they're shipped in the interim,

00:16:01.376 --> 00:16:04.936
<v Wes>but now they're actually shipping some of that Rust stuff in the user land and

00:16:04.936 --> 00:16:07.036
<v Wes>the core utils, which is exciting.

00:16:07.216 --> 00:16:11.796
<v Chris>And something I want to chat with John about, too, is they've done that thing

00:16:11.796 --> 00:16:15.376
<v Chris>they do in Ubuntu where they one-click something, kind of, and for now it's CUDA.

00:16:16.016 --> 00:16:17.976
<v Wes>And Rock M. I don't hate on AMD.

00:16:18.116 --> 00:16:22.656
<v Chris>No, I love Rock M. But it's just that there's so much demand out there,

00:16:22.676 --> 00:16:24.296
<v Chris>and you combine it with new hardware.

00:16:24.656 --> 00:16:27.516
<v Chris>It's just, that's a really nice thing, especially for an LTS release.

00:16:28.216 --> 00:16:32.776
<v Chris>And then John also made posts recently about an AI strategy that they're taking

00:16:32.776 --> 00:16:35.156
<v Chris>on at Canonical, which made a lot of news.

00:16:35.256 --> 00:16:37.576
<v Chris>So I think that's something we could chat with him about as well.

00:16:37.736 --> 00:16:40.076
<v Chris>So John is joining us on the Unplugged program.

00:16:42.950 --> 00:16:47.530
<v Chris>We didn't scare him away last time. Returning to the show, John Seeger from

00:16:47.530 --> 00:16:49.950
<v Chris>Canonical. John, welcome back to the Unplugged program.

00:16:50.470 --> 00:16:51.350
<v Jon>Hello there, thanks for having me.

00:16:51.550 --> 00:16:55.870
<v Chris>Hello and congratulations on the LTS release, which, rumor has it,

00:16:55.950 --> 00:16:58.650
<v Chris>is also the first LTS under your watch.

00:16:58.830 --> 00:17:03.730
<v Jon>That's right, yeah. So the questing release was my first kind of interim that

00:17:03.730 --> 00:17:07.670
<v Jon>I had, I guess, a full cycle, and then this is the first LTS, yeah.

00:17:07.910 --> 00:17:11.150
<v Chris>Okay, is it a little different this time? I mean, does it feel different?

00:17:11.150 --> 00:17:13.010
<v Chris>being on the inside hit different john.

00:17:13.010 --> 00:17:15.710
<v Jon>It uh i mean from the

00:17:15.710 --> 00:17:18.710
<v Jon>perspective of like the release and planning and uh the whole

00:17:18.710 --> 00:17:21.510
<v Jon>we do this sprint in london where the release team come along and we get everything

00:17:21.510 --> 00:17:24.890
<v Jon>together it all felt kind of similar but just with a little bit more pressure

00:17:24.890 --> 00:17:29.790
<v Jon>to you know it kind of has to fly a little bit quicker and be a bit less or

00:17:29.790 --> 00:17:35.630
<v Jon>even more bug free i suppose than an interim but we also decelerate slightly

00:17:35.630 --> 00:17:40.530
<v Jon>the pace of change and we we make the call slightly differently as we get close to the release date,

00:17:40.570 --> 00:17:43.930
<v Jon>whether or not something's going to make it based on our view on whether it's

00:17:43.930 --> 00:17:45.550
<v Jon>going to cause any instability or issues.

00:17:45.690 --> 00:17:49.390
<v Jon>Whereas, you know, the early interims, we would maybe be a little bit more.

00:17:50.323 --> 00:17:55.583
<v Chris>Risky so i i do hear that a lot but is there still something in the lts release

00:17:55.583 --> 00:17:59.923
<v Chris>that is like the thing that you're excited about releasing do you like i'm sure

00:17:59.923 --> 00:18:02.163
<v Chris>that happens with the interim releases where you're like this is the thing we're

00:18:02.163 --> 00:18:05.043
<v Chris>really looking at but does that happen with an lts release or is it all old

00:18:05.043 --> 00:18:06.383
<v Chris>by then you just it's all known.

00:18:06.383 --> 00:18:14.323
<v Jon>And there's nothing new that we've never done in this release aside from the shipping rock m and cuda.

00:18:14.323 --> 00:18:16.503
<v Chris>Oh part of canonical sure but.

00:18:16.503 --> 00:18:22.923
<v Jon>Of course it is also the first time that everybody or 90% of our users will

00:18:22.923 --> 00:18:25.443
<v Jon>get the Rust core utils and the Rust sudo.

00:18:25.783 --> 00:18:29.363
<v Jon>And so as much as I'm confident in those changes, we've done testing,

00:18:29.543 --> 00:18:32.823
<v Jon>we've had lots of feedback, there are going to be a whole bunch more people

00:18:32.823 --> 00:18:35.003
<v Jon>getting that over the next few weeks.

00:18:35.363 --> 00:18:40.343
<v Chris>Right. Now it's really getting out to a whole new group of users, the real base.

00:18:40.403 --> 00:18:44.123
<v Wes>Yeah, I can kind of tell in some of your writing that there's obviously the

00:18:44.123 --> 00:18:47.643
<v Wes>regular sort of professional pride in releasing a nice product and running a

00:18:47.643 --> 00:18:51.743
<v Wes>good team and all that but it feels like you all get the you know just how much

00:18:51.743 --> 00:18:57.203
<v Wes>of the internet and the cloud sort of is underpinned especially by these lts releases it's.

00:18:57.203 --> 00:19:01.083
<v Jon>One of honestly one of the most exciting things about working on ubuntu in my

00:19:01.083 --> 00:19:07.523
<v Jon>view i quite like that sort of sense of impending doom if you get it wrong uh keeps you sharp.

00:19:07.523 --> 00:19:10.383
<v Wes>Yeah it means your work matters clearly okay.

00:19:10.383 --> 00:19:14.243
<v Chris>Let's keep talking about the rest stuff for a minute because I saw a recent,

00:19:14.763 --> 00:19:17.983
<v Chris>I think it was a post on the community discourse that,

00:19:19.113 --> 00:19:22.213
<v Chris>I may be getting some of the details wrong, so John, so please fill in the details,

00:19:22.373 --> 00:19:27.253
<v Chris>that you hired a third-party audit firm to go through some of the Rust core utils.

00:19:27.573 --> 00:19:31.953
<v Chris>They found some stuff, and now you guys are working through bug fixing that.

00:19:32.033 --> 00:19:33.953
<v Chris>Can you work me through, because obviously I'm a little vague on the details,

00:19:34.073 --> 00:19:34.753
<v Chris>can you work me through that?

00:19:35.853 --> 00:19:39.033
<v Jon>So when we first committed to doing this, our security team,

00:19:39.153 --> 00:19:43.453
<v Jon>which is pretty large at this point, as you would imagine, were keen to take a look and double check.

00:19:43.453 --> 00:19:47.273
<v Jon>They found a few issues themselves, and as a kind of abundance of caution,

00:19:47.393 --> 00:19:51.373
<v Jon>we decided to fund a third-party security audit with a company called Zellic.

00:19:51.913 --> 00:19:55.033
<v Jon>They found a bunch of stuff, fixed a bunch of stuff, worked with Sylvest,

00:19:55.213 --> 00:19:57.173
<v Jon>who runs the Utils project.

00:19:57.733 --> 00:20:01.313
<v Jon>We were pretty happy, but we thought we would go again, do another round of

00:20:01.313 --> 00:20:05.653
<v Jon>security audit, and also get some assistance from Zellic on patching in some

00:20:05.653 --> 00:20:07.533
<v Jon>cases. I found a bunch more stuff.

00:20:08.013 --> 00:20:11.193
<v Jon>They were pretty great to work with. Sylvest, I have to say,

00:20:11.613 --> 00:20:13.173
<v Jon>did a phenomenal job. I think we,

00:20:14.066 --> 00:20:18.326
<v Jon>piled a lot on his plate. We gave some funding to the project and we tried to

00:20:18.326 --> 00:20:21.606
<v Jon>be as careful as possible, but we found a lot of issues.

00:20:21.746 --> 00:20:25.966
<v Jon>There was a lot of bug reports from our users, et cetera, and he handled it superbly.

00:20:26.206 --> 00:20:32.086
<v Jon>And so where we've landed is we patched the vast majority of the vulnerabilities

00:20:32.086 --> 00:20:34.106
<v Jon>that we found or the issues that we found.

00:20:34.646 --> 00:20:39.906
<v Jon>There are three utilities which are still affected, which is CP, Move, and RM.

00:20:40.126 --> 00:20:44.426
<v Jon>And so we chose not to make those the default in the LTS, just sort of out of

00:20:44.426 --> 00:20:47.346
<v Jon>an abundance of caution. So this is a time of check, time of use error.

00:20:48.426 --> 00:20:51.186
<v Jon>They're all linked to kind of the same problem and will get patched over the

00:20:51.186 --> 00:20:54.566
<v Jon>coming weeks and we will then switch those utilities out for the next interim.

00:20:54.906 --> 00:20:57.686
<v Wes>I wonder if it's, you mentioned that specific vulnerability.

00:20:57.886 --> 00:21:01.126
<v Wes>I wonder if these rounds have been informative around sort of the things that

00:21:01.126 --> 00:21:04.706
<v Wes>like the Rust improvements can address and the things that, you know,

00:21:04.766 --> 00:21:07.806
<v Wes>still just need to be addressed via, you know, more traditional software techniques.

00:21:08.586 --> 00:21:11.986
<v Jon>Right, that's it. Writing Rust code does not mean bug-free.

00:21:12.686 --> 00:21:16.306
<v Jon>means a much lower likelihood of memory safety violations were used correctly,

00:21:16.686 --> 00:21:18.166
<v Jon>and this is kind of proof of that.

00:21:18.446 --> 00:21:22.426
<v Jon>Although not all of the issues we found were exclusive to the Rust versions.

00:21:22.446 --> 00:21:25.306
<v Jon>We found issues in the GNU versions, and if you actually look at the latest

00:21:25.306 --> 00:21:31.286
<v Jon>GNU Core Utils release, Sylvester's one of the most prolific contributors to that release.

00:21:31.826 --> 00:21:35.946
<v Jon>So it's nice. There's nowhere near as much animosity as perhaps people might

00:21:35.946 --> 00:21:42.026
<v Jon>suggest. It's quite collaborative. um the game here is not to discredit the

00:21:42.026 --> 00:21:46.126
<v Jon>new core utils as if we find things that can benefit them that work goes upstream too.

00:21:46.126 --> 00:21:49.066
<v Wes>So that's that's great i mean especially because right having having

00:21:49.066 --> 00:21:52.306
<v Wes>two implementations is just all the better for the whole ecosystem it

00:21:52.306 --> 00:21:55.506
<v Wes>did strike me too you touched on you know working upstream and just especially

00:21:55.506 --> 00:21:58.826
<v Wes>with the the rust version just it's one thing to get funding and doing all the

00:21:58.826 --> 00:22:01.366
<v Wes>support that y'all are offering which is wonderful but it's kind of another

00:22:01.366 --> 00:22:05.966
<v Wes>to then i don't know implicitly be willing to accept some of your priorities

00:22:05.966 --> 00:22:09.806
<v Wes>if in like an upstream way of you know being able to prioritize those things

00:22:09.806 --> 00:22:11.366
<v Wes>and keep the working relationship.

00:22:12.361 --> 00:22:15.241
<v Jon>And this was, and I'll be honest, it got tough a couple of times.

00:22:15.381 --> 00:22:19.321
<v Jon>You know, there was a point midway through this cycle where I think we didn't

00:22:19.321 --> 00:22:22.361
<v Jon>quite get that balance right or our communication wasn't perfect and we had

00:22:22.361 --> 00:22:24.941
<v Jon>a bit of a shaky moment with Sylvester and we got on a call and we,

00:22:25.061 --> 00:22:28.841
<v Jon>you know, made it better. We found a little bit more funding to help.

00:22:29.481 --> 00:22:32.121
<v Jon>But it is hard. And this is why when we started this project,

00:22:32.141 --> 00:22:35.341
<v Jon>before we ever announced it, we started with conversations for these projects

00:22:35.341 --> 00:22:39.021
<v Jon>to say, we'd love to do this, but it could get kind of intense.

00:22:39.861 --> 00:22:43.921
<v Jon>You know, what do you think? Like, is the project in a position to support this?

00:22:45.101 --> 00:22:50.741
<v Jon>You know, how could we help? What funding, what support could we try and extend

00:22:50.741 --> 00:22:55.261
<v Jon>where we have the resources to kind of make it as successful as possible and

00:22:55.261 --> 00:22:56.381
<v Jon>also not bury the project?

00:22:56.521 --> 00:23:00.821
<v Jon>It's no good for us to switch it in the LTS if the project then flames out and disappears. Sure.

00:23:01.161 --> 00:23:04.621
<v Chris>Yeah. Okay. I know we've touched on this before, but somebody listening maybe

00:23:04.621 --> 00:23:07.201
<v Chris>that hasn't heard our previous conversation, they've got to be asking themselves,

00:23:07.201 --> 00:23:10.161
<v Chris>why go through the trouble? You've already got these great utils.

00:23:10.301 --> 00:23:12.841
<v Chris>They've been around for 30 years. Why not just use those? John,

00:23:13.001 --> 00:23:15.821
<v Chris>why are you going through all this trouble for this buggy software?

00:23:17.041 --> 00:23:22.121
<v Jon>It is. There are a lot of answers to that question. So one is it's a bit of a statement of intent.

00:23:22.781 --> 00:23:29.061
<v Jon>So I 90 some 90 percent of vulnerabilities in the software world are due to

00:23:29.061 --> 00:23:33.261
<v Jon>memory safety violations. and so I think if we move to a language where that

00:23:33.261 --> 00:23:35.821
<v Jon>becomes very difficult or impossible, that's great.

00:23:36.121 --> 00:23:40.601
<v Jon>And you could argue that starting with the core utils maybe isn't the best target,

00:23:40.761 --> 00:23:44.801
<v Jon>but starting with the core utils is kind of the statement in a sense.

00:23:45.081 --> 00:23:46.321
<v Jon>There's also loads of them.

00:23:47.370 --> 00:23:53.690
<v Jon>And I think it is a way of us getting more people engaged with open source development.

00:23:53.930 --> 00:23:57.210
<v Jon>There's lots of new graduates who are learning Rust at university and think Rust is very exciting.

00:23:57.470 --> 00:24:02.990
<v Jon>And we need to keep thinking about ways to keep people involved in open source

00:24:02.990 --> 00:24:07.030
<v Jon>and having them learn or work in languages they're interested in with modern

00:24:07.030 --> 00:24:08.930
<v Jon>tooling, with a vibrant community is one way.

00:24:09.650 --> 00:24:11.030
<v Jon>There's the cynical angle, which

00:24:11.030 --> 00:24:13.690
<v Jon>was kind of highlighted to me after we committed to it, if I'm honest.

00:24:13.830 --> 00:24:17.270
<v Jon>The cynical angle is we get paid for fixing security vulnerabilities in code.

00:24:17.370 --> 00:24:21.130
<v Jon>Like we, long-term support and security maintenance is how Canonical makes its money.

00:24:21.250 --> 00:24:25.770
<v Jon>And one assumes that over the next 15 years, we will have to address fewer with

00:24:25.770 --> 00:24:29.710
<v Jon>this change, though we bluntly have made quite a large upfront investment in

00:24:29.710 --> 00:24:30.910
<v Jon>this. So I think it'll be a few years.

00:24:31.270 --> 00:24:35.510
<v Chris>But it is seen as a large, it's seen as an upfront investment in perhaps a long-term

00:24:35.510 --> 00:24:38.070
<v Chris>payoff for support a decade down the road.

00:24:38.250 --> 00:24:43.150
<v Jon>I think it will be personally. I, you know, that wasn't particularly front of

00:24:43.150 --> 00:24:46.570
<v Jon>my mind in the decision-making calculus. What was front in my mind in the decision-making

00:24:46.570 --> 00:24:49.990
<v Jon>was, I want to ship the most resilient operating system I can.

00:24:50.630 --> 00:24:54.930
<v Jon>And the fewer things, or I'll say the more things that are written in a memory-safe

00:24:54.930 --> 00:24:58.250
<v Jon>language that are high-performance, that are well-tested, the better.

00:24:59.770 --> 00:25:02.890
<v Jon>So Core Utils is one of those projects where there was quite high conformance

00:25:02.890 --> 00:25:03.810
<v Jon>with the original test suite.

00:25:04.090 --> 00:25:06.930
<v Jon>Pseudo-RS was another of those where it was quite a high-quality,

00:25:07.070 --> 00:25:08.350
<v Jon>quite a mature project already.

00:25:08.350 --> 00:25:12.530
<v Jon>the next one will be NTP DRS, which I'm actually really excited about because

00:25:12.530 --> 00:25:17.670
<v Jon>I think that'll be the first time we get a single binary that can handle NTP,

00:25:18.050 --> 00:25:23.150
<v Jon>NTS, and PTP all in one utility that is both the client and the server.

00:25:23.350 --> 00:25:25.650
<v Jon>Whereas previously, it has been a bit of a dance.

00:25:26.050 --> 00:25:30.550
<v Jon>So that's part of the work that we're funding on the way to rusty time syncing in Ubuntu.

00:25:31.890 --> 00:25:32.870
<v Chris>Rusty time syncing.

00:25:33.010 --> 00:25:35.390
<v Wes>Well, and that seems exactly kind of what you said, right? You're interested

00:25:35.390 --> 00:25:39.070
<v Wes>in a resilient, robust, well-functioning operating system.

00:25:39.230 --> 00:25:41.650
<v Wes>And, you know, most of us don't usually have to think about it,

00:25:41.710 --> 00:25:45.430
<v Wes>but especially in distributed systems, keeping the time is of critical importance.

00:25:46.500 --> 00:25:49.860
<v Jon>Right. And another target is going to be compression libraries.

00:25:50.140 --> 00:25:56.000
<v Jon>And the bit that genuinely gets me fired up here is, okay, compression could

00:25:56.000 --> 00:25:57.200
<v Jon>be a little faster, maybe.

00:25:57.660 --> 00:26:02.080
<v Jon>What's even more exciting is the energy usage? You think the scale of Ubuntu

00:26:02.080 --> 00:26:04.780
<v Jon>and how many machines are running Ubuntu.

00:26:05.080 --> 00:26:09.300
<v Jon>Imagine if we took 1% energy usage of every single one of those machines on the planet.

00:26:09.620 --> 00:26:13.340
<v Jon>Now, we're not going to get there by changing CP and RM and move.

00:26:13.480 --> 00:26:17.640
<v Jon>And we maybe even won't get there with compression or a single compression algorithm.

00:26:17.840 --> 00:26:22.640
<v Jon>But cumulatively, over the space of five years, we could genuinely make a meaningful

00:26:22.640 --> 00:26:25.940
<v Jon>difference to the idle consumption of a machine anywhere on the planet,

00:26:26.000 --> 00:26:28.180
<v Jon>which I think is an interesting goal.

00:26:28.180 --> 00:26:30.540
<v Brent>Yeah, it's these are the kind of

00:26:30.540 --> 00:26:35.400
<v Brent>goals that you don't necessarily start an operating system having in mind.

00:26:35.520 --> 00:26:40.460
<v Brent>But something like Ubuntu being around so long, you can start to have the luxury

00:26:40.460 --> 00:26:44.620
<v Brent>of having these greater goals in mind. So I like hearing that.

00:26:44.880 --> 00:26:50.100
<v Brent>I do have a question about Rust. You mentioned an obvious reason to adopt Rust,

00:26:50.260 --> 00:26:52.040
<v Brent>the memory safety aspect of it.

00:26:52.040 --> 00:27:00.100
<v Brent>I'm curious how that has affected the team in adopting Rust and also why Rust

00:27:00.100 --> 00:27:01.760
<v Brent>if you ignore the memory safety?

00:27:01.980 --> 00:27:03.920
<v Brent>There are other potential languages out there.

00:27:05.080 --> 00:27:07.620
<v Brent>How's it going, maybe, is the general way of putting all that?

00:27:07.940 --> 00:27:12.800
<v Jon>It's going. I would say mixed. With any other push for a new tooling,

00:27:13.100 --> 00:27:17.180
<v Jon>there are people who are really excited by it and people who are less excited by it.

00:27:17.440 --> 00:27:20.580
<v Jon>Our foundation's team have really leaned in here. We're doing some work on boot

00:27:20.580 --> 00:27:21.960
<v Jon>at the moment, which will be in Rust.

00:27:23.480 --> 00:27:26.180
<v Jon>I am trying to get us away from,

00:27:27.032 --> 00:27:31.772
<v Jon>in as many places as possible from things that are becoming more antiquated.

00:27:32.212 --> 00:27:36.032
<v Jon>And so I have asked the team to stop writing new C code.

00:27:36.192 --> 00:27:39.212
<v Jon>We still have to keep maintaining old C code. That's going to happen for a long

00:27:39.212 --> 00:27:42.612
<v Jon>time. We need to maintain our, you know, app is still written in C++, for example.

00:27:43.112 --> 00:27:46.052
<v Jon>Although we'll start to introduce Rust, I suspect, in the next year or so.

00:27:46.772 --> 00:27:50.512
<v Jon>But when we're writing new code and when we're looking at bits of tooling that

00:27:50.512 --> 00:27:53.812
<v Jon>we use for building the distro, I would really prefer it if we stopped using

00:27:53.812 --> 00:27:59.012
<v Jon>C. we ideally didn't use bash and python bash is great for small scripts but,

00:27:59.655 --> 00:28:01.835
<v Jon>I don't know, like as they get bigger and bigger and bigger,

00:28:01.895 --> 00:28:03.115
<v Jon>they get harder to maintain and test.

00:28:03.475 --> 00:28:08.095
<v Jon>Python, language is nice, bit of a packaging distribution nightmare.

00:28:08.375 --> 00:28:13.875
<v Jon>And so I'm steering my teams at the moment towards generally go for where things

00:28:13.875 --> 00:28:16.235
<v Jon>are very networky or very concurrent.

00:28:16.715 --> 00:28:20.835
<v Jon>So programming language designed for doing network, networking and concurrency.

00:28:21.095 --> 00:28:24.275
<v Jon>And I don't think that's kind of low level systems programming towards Rust.

00:28:24.495 --> 00:28:27.335
<v Jon>I think Rust is the best option we have right now as

00:28:27.335 --> 00:28:32.835
<v Jon>a replacement or a successor to the c and c++ ecosystem so we we don't tend

00:28:32.835 --> 00:28:36.215
<v Jon>to adopt loads and loads and loads of programming languages at canonical we're

00:28:36.215 --> 00:28:39.135
<v Jon>not that big it wouldn't be very helpful if we had one team doing haskell and

00:28:39.135 --> 00:28:41.775
<v Jon>another team doing erlang and one doing rust and one doing zig and one doing

00:28:41.775 --> 00:28:45.175
<v Jon>java so we try to be quite deliberate and generally those languages at canonical

00:28:45.175 --> 00:28:46.935
<v Jon>are python go and rust well.

00:28:46.935 --> 00:28:49.955
<v Wes>It makes sense that you can kind of like rust is one of those languages now

00:28:49.955 --> 00:28:53.095
<v Wes>that can target a lot of things between like a modern tool chain that,

00:28:53.235 --> 00:28:56.255
<v Wes>you know, I'm sure a bunch of, and Canuck has a lot of experience trying to

00:28:56.255 --> 00:29:00.315
<v Wes>find the limited pool of developers who are up to date on the sort of esoteric

00:29:00.315 --> 00:29:03.115
<v Wes>desktop Linux, you know, how you put together a distro.

00:29:03.395 --> 00:29:07.535
<v Wes>So if you have that wider, but you also get, right, like abstractions that don't

00:29:07.535 --> 00:29:10.535
<v Wes>have as much runtime cost, and you can have security benefits.

00:29:10.655 --> 00:29:13.275
<v Wes>So you kind of get this all in a package, and there's just not that many other

00:29:13.275 --> 00:29:15.675
<v Wes>languages right now that compete with that.

00:29:15.875 --> 00:29:19.235
<v Jon>Yeah, and I think the Rust Foundation, the core team take it very seriously.

00:29:19.335 --> 00:29:22.295
<v Jon>So we recently joined the Rust Foundation as gold members.

00:29:22.415 --> 00:29:29.315
<v Jon>And that was partially to support the ecosystem and the folks who develop the

00:29:29.315 --> 00:29:33.095
<v Jon>language, but also with a bit of an agenda of our own, which is to try and work

00:29:33.095 --> 00:29:36.495
<v Jon>with them on things like the crates.io security story,

00:29:36.895 --> 00:29:40.355
<v Jon>on things like hopefully enhancing the standard library.

00:29:40.535 --> 00:29:45.375
<v Jon>I have some opinions about where Rust could go with that and potentially some

00:29:45.375 --> 00:29:48.715
<v Jon>of the mechanics around things like async.io or async, sorry.

00:29:48.715 --> 00:29:54.115
<v Jon>So we joined the foundation to give funding, but also to try and contribute

00:29:54.115 --> 00:29:57.955
<v Jon>expertise from Canonical where we have them in the right discussions, that kind of thing.

00:29:58.355 --> 00:30:02.575
<v Jon>And they've been, we only joined formally in 2018.

00:30:03.207 --> 00:30:06.467
<v Jon>When was it? Whenever KubeCon was February, I think, February or March.

00:30:07.867 --> 00:30:11.567
<v Jon>But they've been great to work with so far. And I'm looking forward to seeing where that goes.

00:30:11.747 --> 00:30:16.887
<v Chris>Well, there's a lot in there. I want to bring us back to Ubuntu a bit,

00:30:16.887 --> 00:30:21.187
<v Chris>because just before we got on the horn yesterday or so,

00:30:21.967 --> 00:30:28.827
<v Chris>you posted a post on the discourse that was titled The Future of AI in Ubuntu.

00:30:29.227 --> 00:30:33.027
<v Chris>And it's a rundown of Canonical's approach.

00:30:33.207 --> 00:30:38.647
<v Chris>your thoughts around integration of these toolings, how to get the balance right, and all of that.

00:30:38.767 --> 00:30:43.467
<v Chris>And this, of course, it's a huge topic. AI is such a huge, encompassing term

00:30:43.467 --> 00:30:47.887
<v Chris>for a bunch of different technologies that users are going to want to use on top of Ubuntu.

00:30:49.447 --> 00:30:52.967
<v Chris>So, John, can you kind of walk us through what the announcement is here and what the plan is?

00:30:53.287 --> 00:30:57.387
<v Jon>Yeah, so, I mean, I'll preface this by saying, like, I knew this was going to be spicy.

00:30:57.847 --> 00:30:58.887
<v Chris>Yeah, I imagine, right?

00:30:59.027 --> 00:31:00.787
<v Jon>This is, like...

00:31:00.787 --> 00:31:02.507
<v Chris>If you thought the rough stuff was spicy.

00:31:02.507 --> 00:31:07.167
<v Jon>Right, like I figured I'd annoyed all of the people I probably could with that,

00:31:07.267 --> 00:31:11.367
<v Jon>so it's time to shift on something even more exclusive. So I think the point here is.

00:31:12.985 --> 00:31:16.905
<v Jon>Anytime there's a change like this, and I see people reacting,

00:31:17.245 --> 00:31:20.285
<v Jon>I always think, I try to understand where they're coming from.

00:31:20.405 --> 00:31:25.805
<v Jon>And the thing that I would try to remind people of is whatever your feeling

00:31:25.805 --> 00:31:29.105
<v Jon>is valid, like if you really don't want AI in your operating system,

00:31:29.205 --> 00:31:31.045
<v Jon>that's a perfectly acceptable position.

00:31:31.885 --> 00:31:38.385
<v Jon>But what I try to articulate in a way that isn't too brash is Ubuntu is not for me.

00:31:38.605 --> 00:31:41.545
<v Jon>It's not for you. Ubuntu is for millions of people.

00:31:41.905 --> 00:31:46.465
<v Jon>And for everyone who is desperately trying to avoid AI, who is an Ubuntu user,

00:31:46.825 --> 00:31:49.385
<v Jon>there are probably as many people who can't get it quick enough.

00:31:49.705 --> 00:31:53.405
<v Jon>And so the challenge that we have is always like, how do we walk that line?

00:31:54.965 --> 00:31:58.465
<v Jon>Balancing either two sides of a feature like AI, but more broadly,

00:31:58.705 --> 00:32:02.545
<v Jon>making an operating system that is appealing to educators and students,

00:32:02.965 --> 00:32:06.205
<v Jon>to two-man startups, to Fortune 500 companies.

00:32:06.545 --> 00:32:12.065
<v Jon>It's a difficult line to walk. And so we haven't pounced on this too quickly.

00:32:12.345 --> 00:32:19.265
<v Jon>And really, this is the first post to open the conversation about how AI will

00:32:19.265 --> 00:32:20.645
<v Jon>play a part in Ubuntu's future.

00:32:20.785 --> 00:32:25.685
<v Jon>It will play a part in Ubuntu's future, partly because I truly believe there

00:32:25.685 --> 00:32:28.025
<v Jon>is some value in the technology when it's applied correctly.

00:32:28.265 --> 00:32:32.965
<v Jon>And partly because it's kind of difficult not to in 2026. Like customers,

00:32:33.245 --> 00:32:35.565
<v Jon>partners are asking us what our plan is.

00:32:37.352 --> 00:32:40.972
<v Jon>So we've thought about this quite a lot. We've taken what I think is a really

00:32:40.972 --> 00:32:42.612
<v Jon>measured approach at Canonical.

00:32:42.772 --> 00:32:48.372
<v Jon>You see lots of, frankly, quite scary things on the internet about companies

00:32:48.372 --> 00:32:53.012
<v Jon>setting token quotas for people and measuring the percentage of code they write with AI.

00:32:53.212 --> 00:32:55.492
<v Jon>And I don't really believe in that.

00:32:56.292 --> 00:32:59.652
<v Jon>That doesn't seem like the right approach. We're taking a more careful approach.

00:32:59.812 --> 00:33:04.432
<v Jon>We are heavily, as of this year, heavily encouraging, incentivizing our folks

00:33:04.432 --> 00:33:10.792
<v Jon>to go at the team level to go pick a vendor and a tool, ideally an open source harness if possible.

00:33:10.952 --> 00:33:12.972
<v Jon>But if a team really wants to use Claude, we'll let them use Claude,

00:33:13.312 --> 00:33:15.532
<v Jon>understand it, get to know it.

00:33:16.512 --> 00:33:21.392
<v Jon>And then that way we can get a sense of which are the tools that work for Canonical, et cetera.

00:33:23.332 --> 00:33:27.592
<v Jon>And we'll ramp up our expectations. It'll be start with experiment with something,

00:33:27.892 --> 00:33:30.432
<v Jon>then it'll be demonstrate that you've built a bit of a habit around it,

00:33:30.612 --> 00:33:33.952
<v Jon>perhaps demonstrate that you've been able to accelerate a roadmap feature with

00:33:33.952 --> 00:33:36.792
<v Jon>it, and then demonstrate that there There is rigor around it in terms of running

00:33:36.792 --> 00:33:41.332
<v Jon>evals and really understanding how it can be embedded into automation workflows,

00:33:41.912 --> 00:33:44.912
<v Jon>potentially things like Claws, I know you guys have been having fun with.

00:33:46.092 --> 00:33:49.212
<v Jon>These are all possibilities, but not things to be taken lightly.

00:33:49.712 --> 00:33:53.252
<v Jon>There was news this week of, I forget the name of the company,

00:33:53.772 --> 00:33:58.232
<v Jon>an AI bot that supposedly went rogue and took out production infrastructure.

00:33:58.412 --> 00:34:01.812
<v Jon>The AI bot didn't go rogue. The AI bot was given far too broad of permissions,

00:34:01.952 --> 00:34:03.232
<v Jon>right? That's what happened there.

00:34:03.352 --> 00:34:04.452
<v Wes>And probably vague instructions.

00:34:05.172 --> 00:34:07.832
<v Jon>All right, so our challenge is how do we...

00:34:08.960 --> 00:34:11.920
<v Jon>Like if we're going to, how should we integrate AI into Ubuntu?

00:34:12.020 --> 00:34:13.020
<v Jon>And I see this in two camps.

00:34:13.260 --> 00:34:17.480
<v Jon>I laid this out in the post as kind of implicit features and explicit features.

00:34:17.840 --> 00:34:21.940
<v Jon>And the way I would think about this is implicit features are enhancements to

00:34:21.940 --> 00:34:23.260
<v Jon>things the OS already did.

00:34:23.660 --> 00:34:27.800
<v Jon>So this could be screen reading, could be speech to text or text to speech,

00:34:27.980 --> 00:34:29.980
<v Jon>could be follow focus on a camera,

00:34:30.580 --> 00:34:34.400
<v Jon>things that people have kind of become accustomed to being enhanced by ML.

00:34:35.040 --> 00:34:39.940
<v Jon>And I wouldn't necessarily call those AI features, even as we add models to

00:34:39.940 --> 00:34:43.760
<v Jon>those features, I wouldn't necessarily be decorating them as AI features.

00:34:43.980 --> 00:34:44.240
<v Chris>Right.

00:34:44.420 --> 00:34:48.900
<v Jon>But think about, you know, from the perspective of a user who is hard of hearing

00:34:48.900 --> 00:34:53.160
<v Jon>or visually impaired in some way, this could be a huge game changer.

00:34:53.540 --> 00:34:53.620
<v Chris>Right.

00:34:53.740 --> 00:34:57.020
<v Jon>Screen readers are pretty tough to use. And imagine you could point a camera

00:34:57.020 --> 00:34:58.820
<v Jon>at the screen instead and ask it, I don't know what's going on.

00:34:58.940 --> 00:35:01.600
<v Chris>And it's an area in particular that Linux could use some help with,

00:35:01.700 --> 00:35:02.880
<v Chris>right? It's an area that...

00:35:02.880 --> 00:35:03.220
<v Jon>For sure.

00:35:03.400 --> 00:35:03.560
<v Chris>Yeah.

00:35:03.560 --> 00:35:07.960
<v Jon>For sure. So then the explicit side is a little bit harder to quantify because

00:35:07.960 --> 00:35:09.960
<v Jon>I don't want to tell you what we're planning yet because we're still planning it.

00:35:11.660 --> 00:35:14.960
<v Jon>The explicit is much more like this is an AI feature.

00:35:15.860 --> 00:35:21.320
<v Jon>And I would describe this as features that introduce a new mental model or a

00:35:21.320 --> 00:35:23.980
<v Jon>new way of working with your machine that you didn't have before.

00:35:24.120 --> 00:35:26.900
<v Jon>Like you guys have already explored this. You're sending telegram messages and

00:35:26.900 --> 00:35:30.120
<v Jon>matrix messages to a bot that is doing things on your behalf.

00:35:30.120 --> 00:35:33.940
<v Jon>That is, like, you have not been able to Telegram message your computer before in such a rich way.

00:35:34.080 --> 00:35:38.200
<v Jon>That's a new, like, mental model for interacting with the machine.

00:35:38.420 --> 00:35:41.340
<v Chris>Standing up infrastructure via Telegram, basically, you know?

00:35:41.620 --> 00:35:41.920
<v Jon>Right.

00:35:42.100 --> 00:35:42.400
<v Chris>It's a new area.

00:35:42.640 --> 00:35:47.700
<v Jon>But also, like, Linux is so wildly powerful, but also kind of vexing for people

00:35:47.700 --> 00:35:49.140
<v Jon>who aren't experienced. Yeah.

00:35:49.940 --> 00:35:55.080
<v Jon>And imagine if, you know, you could bring up a box and say, my Wi-Fi is not working.

00:35:55.280 --> 00:35:58.720
<v Jon>Why isn't my Wi-Fi working? Can you help me fix it? Or, um...

00:35:59.672 --> 00:36:02.792
<v Jon>I don't know. I'd like to run a Postgres container. Can you help me with that?

00:36:03.032 --> 00:36:04.012
<v Chris>Right, right.

00:36:04.312 --> 00:36:08.552
<v Jon>And interestingly, lots of the things we've been working on over time,

00:36:08.592 --> 00:36:12.272
<v Jon>I don't think we could have necessarily predicted this much of a fit,

00:36:12.392 --> 00:36:15.432
<v Jon>but things like snaps turn out to be kind of a boon here.

00:36:15.692 --> 00:36:20.792
<v Jon>Like individual tools or models confined with individual profiles of confinement

00:36:20.792 --> 00:36:23.392
<v Jon>that say, this thing is allowed to read these directories, access the camera,

00:36:23.932 --> 00:36:26.872
<v Jon>you know, do this on the system.

00:36:27.032 --> 00:36:30.112
<v Jon>And we can have a bunch of them on the machine with very, very tightly scoped

00:36:30.112 --> 00:36:33.492
<v Jon>permissions using a mechanism that we trust that is in the kernel that is AppArmor.

00:36:35.092 --> 00:36:37.492
<v Jon>And one of the questions that got asked a lot on that thread,

00:36:37.612 --> 00:36:42.792
<v Jon>and I posted a follow-up, was about would we do an AI kill switch in Ubuntu?

00:36:43.312 --> 00:36:47.792
<v Jon>Which I think controversially, I answered no to. And I answered no to because

00:36:47.792 --> 00:36:49.732
<v Jon>I don't think we can hand on heart honestly do that.

00:36:49.972 --> 00:36:53.892
<v Jon>There are so many ways which you can consume software on a machine.

00:36:54.052 --> 00:36:57.212
<v Jon>What happens if I say, we're going to ship a kill switch, you turn the kill

00:36:57.212 --> 00:37:00.972
<v Jon>switch on, and then Mozilla ship a package update in their official dev that you just smell at them.

00:37:01.032 --> 00:37:03.832
<v Chris>Yeah, or a driver even. I mean, it could happen at any level.

00:37:04.112 --> 00:37:04.292
<v Jon>Or a driver.

00:37:04.532 --> 00:37:05.032
<v Chris>Yeah, it could be.

00:37:05.032 --> 00:37:08.072
<v Wes>Unless you're proxying every request that any system makes. Like,

00:37:08.132 --> 00:37:09.012
<v Wes>how could you even have that?

00:37:09.192 --> 00:37:13.552
<v Chris>It could, yeah, it could just sneak in. Yeah, that's where we're at now. And for better or worse.

00:37:14.232 --> 00:37:17.312
<v Chris>Yeah. So how do you address that? Because it does seem like a user,

00:37:17.772 --> 00:37:20.192
<v Chris>there is some sort of user demand there for that.

00:37:20.432 --> 00:37:23.112
<v Wes>Either for performance or for privacy or a variety of things.

00:37:23.152 --> 00:37:27.672
<v Chris>We have seen Mozilla try to offer for some kind of kill switch in Firefox.

00:37:28.012 --> 00:37:32.252
<v Jon>Yeah, and I think in something like the browser, it makes a bit more sense.

00:37:33.071 --> 00:37:36.431
<v Jon>It has a kind of product where you can, it's a bit more isolated.

00:37:36.691 --> 00:37:39.291
<v Jon>So no browsers are huge now. It's a bit more isolated than the whole OS.

00:37:39.731 --> 00:37:46.191
<v Jon>So my approach is, firstly, for all of the distaste people have for snaps,

00:37:46.471 --> 00:37:48.831
<v Jon>this is an area where it's actually going to be really beneficial.

00:37:48.911 --> 00:37:52.731
<v Jon>So we can't ship LLM models in the installer because our ISO will be.

00:37:54.691 --> 00:37:56.111
<v Wes>It's already a little happy.

00:37:57.291 --> 00:38:00.971
<v Jon>It carries a little bit of timber these days, so I don't want to make that decision.

00:38:00.971 --> 00:38:06.491
<v Jon>So my plan is that we will, as part of the first run onboarding wizard,

00:38:06.791 --> 00:38:07.931
<v Jon>you will get the opportunity.

00:38:08.191 --> 00:38:13.311
<v Jon>We'll say, hey, we have this thing to be defined. Do you want in or out? It uses AI.

00:38:13.571 --> 00:38:18.851
<v Jon>And if you are in, then it will go off and get the correctly sized model to

00:38:18.851 --> 00:38:19.991
<v Jon>run locally on your machine.

00:38:20.551 --> 00:38:26.771
<v Jon>And so the irony here is lots of the same people, I think, who have displayed

00:38:26.771 --> 00:38:31.131
<v Jon>some distaste for snaps are now displaying distaste for AI. but it is the snaps

00:38:31.131 --> 00:38:33.631
<v Jon>that are going to allow them to remove the AI from their machine very cleanly.

00:38:33.791 --> 00:38:34.511
<v Chris>Oh, that is ironic.

00:38:35.791 --> 00:38:38.611
<v Wes>It does seem like the, you've mentioned a few things that snaps help here.

00:38:38.711 --> 00:38:42.671
<v Wes>It does seem like the sort of architecture awareness that snaps have is probably

00:38:42.671 --> 00:38:46.011
<v Wes>pretty helpful here considering all of the AI models and custom silicon and all that.

00:38:46.011 --> 00:38:46.691
<v Chris>Yeah, really.

00:38:47.191 --> 00:38:52.471
<v Jon>We did some work a few months ago called Inference. We did a product called Inference Snaps.

00:38:52.531 --> 00:38:55.571
<v Jon>I talked about this at a meetup, and if you search for Inference Snaps,

00:38:55.611 --> 00:38:56.331
<v Jon>you'll find the details.

00:38:56.451 --> 00:39:00.671
<v Jon>But this is essentially, we are packaging models like Gemma 3,

00:39:01.251 --> 00:39:04.711
<v Jon>DeepSeq, Quen, Nematron from NVIDIA.

00:39:04.991 --> 00:39:08.951
<v Jon>And then you say you can snap install Gemma 3, you can snap install Nematron,

00:39:09.111 --> 00:39:10.291
<v Jon>you can snap install DeepSeq.

00:39:10.631 --> 00:39:14.011
<v Jon>But the work we're doing that's actually interesting is we then work with all

00:39:14.011 --> 00:39:17.651
<v Jon>the silicon vendors like AMD, NVIDIA, Qualcomm, MediaTek.

00:39:17.791 --> 00:39:23.791
<v Jon>And we work with them where they want to on particular models to get like silicon,

00:39:24.011 --> 00:39:27.951
<v Jon>how to describe it, silicon optimized versions of those models precisely for

00:39:27.951 --> 00:39:29.271
<v Jon>your hardware. so there's like a,

00:39:29.935 --> 00:39:33.135
<v Jon>manifest your machine goes hey this is what i've got talks to our store and

00:39:33.135 --> 00:39:36.495
<v Jon>our store goes haha we know all about that gpu so does amd here's a model that

00:39:36.495 --> 00:39:37.635
<v Jon>works just great on that gpu.

00:39:37.635 --> 00:39:39.735
<v Wes>Just the tensors for you wow that's amazing.

00:39:39.735 --> 00:39:44.415
<v Jon>Right so it saves you having to do this go to hugging face hit search and then

00:39:44.415 --> 00:39:46.935
<v Jon>sit there scratching your head for a few minutes trying to work out that's going

00:39:46.935 --> 00:39:50.115
<v Jon>to fit on your machine right just go i've heard of gemma 4 i want gemma 4 let

00:39:50.115 --> 00:39:55.355
<v Jon>me install it and so the foundation for ai in ubuntu will be these snaps so

00:39:55.355 --> 00:39:56.895
<v Jon>local first local inference,

00:39:57.535 --> 00:40:01.135
<v Jon>with models that we distribute, having worked with the silicon vendors to get

00:40:01.135 --> 00:40:05.815
<v Jon>the most efficient form of it to you that we can with some confinement around it as well, right?

00:40:06.075 --> 00:40:09.015
<v Chris>So does part of this process work when, you know, you're looking at the roadmap

00:40:09.015 --> 00:40:13.755
<v Chris>for Ubuntu and hardware partners come to you or come to Canonical and they say,

00:40:13.915 --> 00:40:17.875
<v Chris>in the next two, three years, we're going to be building these inference chips

00:40:17.875 --> 00:40:19.695
<v Chris>into our laptops and desktops.

00:40:19.915 --> 00:40:22.855
<v Chris>We'd really like your desktop to take advantage of this. And then,

00:40:22.935 --> 00:40:25.515
<v Chris>so you're looking at the plan, you go, okay, this is some ways we can do that.

00:40:25.515 --> 00:40:27.415
<v Chris>Is that part of the calculation here?

00:40:27.915 --> 00:40:32.035
<v Jon>Yeah, absolutely. It's actually quite interesting to me that I hadn't really

00:40:32.035 --> 00:40:35.995
<v Jon>appreciated this until I stepped into this role, even though I'd been at Canonical for some time.

00:40:36.535 --> 00:40:41.395
<v Jon>The silicon partnership side of our business is increasingly one of our strongest assets.

00:40:41.555 --> 00:40:41.935
<v Chris>Oh, okay.

00:40:42.095 --> 00:40:46.635
<v Jon>If you think about the work we just did to ship CUDA, so like apt install CUDA,

00:40:46.875 --> 00:40:49.055
<v Jon>ROCKM, apt install ROCKM, that's huge.

00:40:49.155 --> 00:40:49.275
<v Chris>It is.

00:40:49.275 --> 00:40:51.355
<v Jon>From the perspective of like a developer getting up and running,

00:40:51.455 --> 00:40:53.975
<v Jon>getting the right version that works with their kernel. you don't end up with

00:40:53.975 --> 00:40:57.495
<v Jon>loads of DKMS modules building every time.

00:40:57.735 --> 00:40:59.555
<v Chris>100%, it's a huge deal for them.

00:40:59.615 --> 00:41:03.035
<v Wes>Even just renting a GPU, it probably spins up an Ubuntu VPS, so the better that gets.

00:41:03.055 --> 00:41:03.575
<v Chris>Yeah, really.

00:41:04.275 --> 00:41:08.535
<v Jon>Right, and so the same is true of other kind of harbor and eggments.

00:41:08.675 --> 00:41:11.415
<v Jon>So one of the things we're shipping is the Docker OFED stack,

00:41:11.675 --> 00:41:15.135
<v Jon>which is the accelerated networking stack, like data center networking stack

00:41:15.135 --> 00:41:17.735
<v Jon>that NVIDIA, or that's the SDK that NVIDIA distributes.

00:41:17.935 --> 00:41:23.155
<v Jon>So I think it is really important. Things like AI in Ubuntu, Thank you.

00:41:23.578 --> 00:41:28.098
<v Jon>and being able to, with some confidence, tell you that that will be plausible

00:41:28.098 --> 00:41:32.718
<v Jon>in a local first way is only really possible if we work with the people who

00:41:32.718 --> 00:41:34.038
<v Jon>are building the chips really closely.

00:41:34.198 --> 00:41:38.058
<v Jon>And it's quite a symbiotic thing, right? They want to build the best silicon possible.

00:41:38.398 --> 00:41:41.438
<v Jon>They don't want to concern themselves with Linux distribution packaging and,

00:41:43.158 --> 00:41:45.778
<v Jon>because they have their focus and we have ours.

00:41:46.178 --> 00:41:49.658
<v Jon>And that partnership worked out really nicely for us with NVIDIA, with the DGX Spark.

00:41:50.238 --> 00:41:54.118
<v Jon>We sort of went on this journey with NVIDIA where they used to take ubuntu you

00:41:54.118 --> 00:41:57.218
<v Jon>know with agreement with us repackage it into a thing called dgx os,

00:41:57.698 --> 00:42:01.518
<v Jon>and then put some extra stuff on top of it and ship it with their dgx machines

00:42:01.518 --> 00:42:05.038
<v Jon>the dgx spark was the first time nvidia went you know what we're just going

00:42:05.038 --> 00:42:09.038
<v Jon>to ship ubuntu and so the dgx spark which is like a four thousand dollar ai

00:42:09.038 --> 00:42:12.598
<v Jon>workstation went out the door where the only supported os was,

00:42:13.918 --> 00:42:18.478
<v Jon>ubuntu and it was just like not special nvidia ubuntu not like weird frank and

00:42:18.478 --> 00:42:22.498
<v Jon>ubuntu it was like just go download Ubuntu, put it on a USB stick, off you go.

00:42:23.358 --> 00:42:27.578
<v Jon>And I think it's a nice experience in the end.

00:42:27.878 --> 00:42:31.538
<v Chris>It's really great. It's the perfect positioning at the right time.

00:42:31.698 --> 00:42:35.258
<v Chris>This could have gone a different direction where all of this was done on Windows

00:42:35.258 --> 00:42:37.018
<v Chris>or Macs or something like that.

00:42:37.338 --> 00:42:41.078
<v Chris>And it's, you know, have what people say about AI and how they feel about it.

00:42:41.258 --> 00:42:43.398
<v Chris>I am very grateful that it is...

00:42:44.046 --> 00:42:47.526
<v Chris>Linux is very much part of this, and people that are deploying all this infrastructure

00:42:47.526 --> 00:42:48.706
<v Chris>are deploying it on Linux.

00:42:48.866 --> 00:42:52.366
<v Wes>And there's been a lot of great open source work here, just with LamaCPP,

00:42:52.466 --> 00:42:53.566
<v Wes>all kinds of stuff in this space.

00:42:53.646 --> 00:42:57.886
<v Wes>But there are some things that the open source community side is less well-situated

00:42:57.886 --> 00:43:01.246
<v Wes>for, which is things like working with partnerships with companies making hardware.

00:43:01.526 --> 00:43:04.286
<v Chris>Yeah, that's very true.

00:43:04.446 --> 00:43:08.486
<v Jon>And it's interesting. So one of the things I would argue that has been complicated

00:43:08.486 --> 00:43:12.986
<v Jon>for Linux's desktop adoption is the fragmentation. And I think fragmentation

00:43:12.986 --> 00:43:18.626
<v Jon>in the desktop space is simultaneously Linux's biggest strength and also weakness.

00:43:18.846 --> 00:43:21.846
<v Jon>It's its strength in the sense that there have been like thousands of really

00:43:21.846 --> 00:43:25.366
<v Jon>bright people who have scratched an itch that they've had over time and done amazing things.

00:43:26.226 --> 00:43:31.326
<v Jon>The drawback is they're not always necessarily motivated to make it work seamlessly

00:43:31.326 --> 00:43:34.166
<v Jon>with other people's stuff, which is why if you look at the modern Linux desktop,

00:43:34.346 --> 00:43:37.406
<v Jon>it's like so many different things kind of stitched together.

00:43:37.406 --> 00:43:41.026
<v Jon>And every time something breaks on my Linux machine, I'm simultaneously kind

00:43:41.026 --> 00:43:43.186
<v Jon>of annoyed and also kind of stunned it works at all.

00:43:43.486 --> 00:43:44.706
<v Chris>Yeah, I agree.

00:43:46.506 --> 00:43:51.946
<v Jon>But I think in the world of agents and think about what I was saying about perhaps

00:43:51.946 --> 00:43:55.806
<v Jon>an experience where you could ask your machine to do something or troubleshoot itself.

00:43:55.966 --> 00:43:59.206
<v Jon>Like all of a sudden that fragmentation problem isn't such a problem if you've

00:43:59.206 --> 00:44:00.986
<v Jon>got a thing that already knows all the things, right?

00:44:01.106 --> 00:44:05.306
<v Jon>Or knows how to go and get information about all of the particular parts of

00:44:05.306 --> 00:44:08.186
<v Jon>the system that you have. Like, in reality, I don't know anybody,

00:44:08.386 --> 00:44:12.006
<v Jon>even the best Linux admins I've ever met do not know everything about every

00:44:12.006 --> 00:44:12.866
<v Jon>package on their machine.

00:44:14.126 --> 00:44:17.746
<v Wes>But now we have something that can pull the actual source and read it and teach

00:44:17.746 --> 00:44:19.826
<v Wes>itself a lay of the land in, you know, a few minutes.

00:44:19.886 --> 00:44:22.366
<v Chris>I think we're going to end up with a lot more Linux usage. Yes.

00:44:23.286 --> 00:44:26.146
<v Chris>Don't you think we're just going to see even more free software,

00:44:26.326 --> 00:44:28.266
<v Chris>more Ubuntu, more Linux deployed because of this?

00:44:28.726 --> 00:44:34.966
<v Jon>I do. And I totally recognize people's skepticism. I have a lot of empathy for the people who...

00:44:36.422 --> 00:44:40.802
<v Jon>are replying to my posts a little hot under the collar. And I guess it is our

00:44:40.802 --> 00:44:45.542
<v Jon>responsibility to demonstrate to our users that we will keep privacy in mind.

00:44:45.682 --> 00:44:50.762
<v Jon>We will try to pick models that are licensed in such a way that it feels aligned

00:44:50.762 --> 00:44:51.882
<v Jon>with the values of open source.

00:44:52.022 --> 00:44:55.922
<v Jon>Because I think even when you talk about things like open weight and open source,

00:44:56.022 --> 00:44:58.222
<v Jon>they just carry a different meaning in this space.

00:44:58.322 --> 00:45:01.722
<v Jon>It's not the same thing that open source people have been used to.

00:45:01.942 --> 00:45:06.542
<v Jon>And so we have to work out how to navigate that in a way that is useful to the

00:45:06.542 --> 00:45:09.682
<v Jon>people who are all in and want to play and provides a nice on-ramp,

00:45:09.942 --> 00:45:12.922
<v Jon>but not offensive to the people who just want out at the end of the day.

00:45:13.022 --> 00:45:17.962
<v Jon>And my goal is absolutely not to start shipping a Clippy or a co-pilot button

00:45:17.962 --> 00:45:19.622
<v Jon>on everyone's dock and forcing you to use it.

00:45:19.762 --> 00:45:23.162
<v Jon>Do you know what I mean? That's not the model. No doubt.

00:45:24.082 --> 00:45:27.962
<v Jon>I can almost hear people typing about the Amazon affiliate link that happened

00:45:27.962 --> 00:45:29.242
<v Jon>to you from like 15 years ago.

00:45:29.422 --> 00:45:30.642
<v Chris>It's not going to be like that.

00:45:30.762 --> 00:45:31.822
<v Wes>Now we're introducing Debbie.

00:45:32.142 --> 00:45:32.942
<v Chris>Yeah, right?

00:45:34.402 --> 00:45:38.182
<v Jon>Right. So we are going to, we are going to build a layer features in, I hope,

00:45:38.994 --> 00:45:43.954
<v Jon>as an experiment, but I'm quite committed to it. It's not an experiment that I think will fail.

00:45:44.134 --> 00:45:47.794
<v Jon>It's just that we have a few ideas. We'll try them out.

00:45:48.094 --> 00:45:51.374
<v Chris>You know, I'm excited because, John, it has a lot of potential,

00:45:51.594 --> 00:45:55.094
<v Chris>especially when you're saying the solve my Wi-Fi, why won't my printer connect,

00:45:55.234 --> 00:45:59.134
<v Chris>my second monitor isn't turning on, because you have an opportunity to focus

00:45:59.134 --> 00:46:00.674
<v Chris>something that knows the system well.

00:46:00.854 --> 00:46:03.174
<v Chris>It knows the version of Ubuntu it's on. It knows it's on.

00:46:03.794 --> 00:46:07.694
<v Chris>There's these things that will just the agent or whatever it'll be that's running

00:46:07.694 --> 00:46:11.234
<v Chris>on the system will be aware of that a user would have to spend a lot of time

00:46:11.234 --> 00:46:15.294
<v Chris>if they just opened up OpenCode or something the first time trying to get the same results out of.

00:46:15.654 --> 00:46:18.794
<v Chris>So I think that has a ton of potential there. That's exciting.

00:46:19.154 --> 00:46:24.874
<v Brent>I'm curious if you gents think that that will make us Linux users less aware

00:46:24.874 --> 00:46:26.554
<v Brent>of our systems and how they're built.

00:46:26.694 --> 00:46:31.214
<v Brent>Because part of the joy, I think, early on in probably each of our Linux journey

00:46:31.214 --> 00:46:34.894
<v Brent>is breaking all the things and learning how it's all put together and then being

00:46:34.894 --> 00:46:42.454
<v Brent>able to customize it in such a way that makes it our own or makes you understand some users',

00:46:43.294 --> 00:46:47.674
<v Brent>challenges and solve them if you have that kind of position at somewhere like Canonical.

00:46:47.874 --> 00:46:52.674
<v Brent>And so is using some of these tools going to take us away from understanding what's under the hood?

00:46:53.774 --> 00:46:57.254
<v Jon>I don't think so if you have an interest in understanding what's under the hood.

00:46:57.554 --> 00:47:00.594
<v Jon>But I think if you are someone who wants your computer to work and you don't

00:47:00.594 --> 00:47:02.534
<v Jon>care how, it's a huge level up.

00:47:02.654 --> 00:47:06.714
<v Jon>So I have, you know, a year ago, I know I was very much in the skeptic category.

00:47:06.934 --> 00:47:13.194
<v Jon>I have completely immersed myself in clawed code and played around with claws and all this stuff.

00:47:13.214 --> 00:47:16.794
<v Jon>I've gone really deep on it and tried to learn as much as I can and use it as

00:47:16.794 --> 00:47:18.654
<v Jon>kind of natively as possible.

00:47:19.434 --> 00:47:23.574
<v Jon>And I have found it the most unbelievable accelerator for learning some things

00:47:23.574 --> 00:47:27.934
<v Jon>I've always wanted to learn, for trying out perhaps new architecture patterns

00:47:27.934 --> 00:47:31.314
<v Jon>that maybe I'd never have had the time to do. So of course one can,

00:47:32.151 --> 00:47:34.931
<v Jon>poke the machine blindly accept what it has and ship it

00:47:34.931 --> 00:47:37.491
<v Jon>and actually for little personal projects why not do you know

00:47:37.491 --> 00:47:40.791
<v Jon>what i mean like you want to do something for you do the thing but

00:47:40.791 --> 00:47:44.711
<v Jon>an example like i built this coffee tracking app i'm a insufferable filter

00:47:44.711 --> 00:47:47.391
<v Jon>coffee nerd i built this thing and i think you guys picked up on the book thing

00:47:47.391 --> 00:47:51.691
<v Jon>which was actually a fork of the coffee thing there was a bunch of stuff in

00:47:51.691 --> 00:47:56.471
<v Jon>there that i had never done before and it took me a while to build it but like

00:47:56.471 --> 00:48:00.791
<v Jon>it was really interesting to be able to go through that process you know i was bringing the,

00:48:00.931 --> 00:48:04.051
<v Jon>this is how I want this application to be structured. I want to use domain-driven design.

00:48:04.191 --> 00:48:07.851
<v Jon>There are some rules I don't want you to break. And it was able to assist with the bits I didn't know.

00:48:08.011 --> 00:48:12.651
<v Jon>And I was, it felt more like a long-lived pair programmer than someone who was

00:48:12.651 --> 00:48:13.531
<v Jon>just doing the work for me.

00:48:13.831 --> 00:48:15.751
<v Jon>It wasn't a vending machine for an app, do you know what I mean?

00:48:15.811 --> 00:48:16.931
<v Jon>I was heavily involved in it.

00:48:17.071 --> 00:48:21.591
<v Chris>It's a fascinating journey I think people take. Similar one myself, very skeptical.

00:48:21.891 --> 00:48:26.191
<v Chris>It's just autocomplete. What's the point to finding an extremely useful and

00:48:26.191 --> 00:48:30.151
<v Chris>an accelerator myself, and realizing it's a very powerful Linux tool as well.

00:48:30.391 --> 00:48:35.011
<v Wes>It does make me think we have an opportunity for the show, just in that to Brent's

00:48:35.011 --> 00:48:37.571
<v Wes>point, you learn a lot when you have to constantly fix things.

00:48:37.771 --> 00:48:40.331
<v Wes>The trade-off is you don't always get to choose, right? Sometimes you have to

00:48:40.331 --> 00:48:43.251
<v Wes>fix it when you'd much rather be using your computer for something, right?

00:48:43.591 --> 00:48:46.451
<v Wes>So then the danger is maybe you never stop to ask. If you don't have to fix

00:48:46.451 --> 00:48:49.651
<v Wes>it, you never ask, but I think that's maybe an opportunity for us to make sure

00:48:49.651 --> 00:48:52.811
<v Wes>people who want to be curious know that there are questions they can't ask.

00:48:52.951 --> 00:48:56.511
<v Chris>And I think, John, I don't know what for you, but it reminds me too of some

00:48:56.511 --> 00:49:00.211
<v Chris>of the arguments we're still having to this day about cloud computing versus

00:49:00.211 --> 00:49:03.411
<v Chris>spinning up your own Linux system or serverless computing is,

00:49:03.471 --> 00:49:05.451
<v Chris>you know, it's essentially abstracting away part of,

00:49:05.611 --> 00:49:08.871
<v Chris>if you do a one-app deployment on DigitalOcean or if you deploy something on

00:49:08.871 --> 00:49:12.551
<v Chris>AWS or use serverless technology, you're not really learning Linux either.

00:49:13.800 --> 00:49:16.160
<v Wes>And you don't even know NTPD needs to be a thing.

00:49:16.360 --> 00:49:21.200
<v Jon>And I see lots of the, lots of the arguments, and this is, I don't know,

00:49:21.620 --> 00:49:24.840
<v Jon>like, this is maybe a hot take, but like lots of the arguments sound exactly

00:49:24.840 --> 00:49:27.260
<v Jon>like the arguments people made when we first got compilers.

00:49:27.420 --> 00:49:30.120
<v Chris>Yes. And package managers. I don't trust that to write code.

00:49:30.520 --> 00:49:31.900
<v Chris>And package managers as well.

00:49:31.920 --> 00:49:35.620
<v Chris>I'm not going to let that install stuff in my Linux box. Are you crazy? You're right.

00:49:35.620 --> 00:49:39.740
<v Jon>Yeah. And so what I say is like, to people who perhaps have been skeptical, I've been there.

00:49:39.980 --> 00:49:44.400
<v Jon>I feel like I really get it. But the space moves so fast that if your opinion

00:49:44.400 --> 00:49:48.140
<v Jon>is even six months old, it's worth just playing around and seeing what happens.

00:49:48.280 --> 00:49:48.980
<v Brent>I think that's so true.

00:49:50.200 --> 00:49:53.540
<v Jon>I've also seen people who have bounced off it where they've said,

00:49:53.640 --> 00:49:56.460
<v Jon>okay, well, I've heard about this Vibe coding thing, and they've gone away and

00:49:56.460 --> 00:49:59.260
<v Jon>tweaked their Vim configuration and tried to get an LSP.

00:49:59.500 --> 00:50:01.740
<v Jon>And like, okay, cool, you can kind of make it work with Vim.

00:50:01.800 --> 00:50:04.440
<v Jon>But just spend a day with Antigravity or VS Code and Claude.

00:50:04.920 --> 00:50:09.920
<v Jon>Spend a day in an environment that was designed to be used in this way and just

00:50:09.920 --> 00:50:13.100
<v Jon>see, like, just poke around a bit, see how it feels.

00:50:13.220 --> 00:50:17.660
<v Jon>Like, you know, my feeling is that this really isn't going anywhere.

00:50:19.200 --> 00:50:25.300
<v Jon>And I think there are two ways we could try and stop this or try and shape this.

00:50:25.520 --> 00:50:28.020
<v Jon>One is stamp our feet and say, we're not doing it. We don't like it.

00:50:28.100 --> 00:50:32.640
<v Jon>It's open source. It's big tech, blah, blah, blah. And be petulant over it. We're not going to win.

00:50:32.940 --> 00:50:36.860
<v Jon>The other way is to educate ourselves as much as we possibly can,

00:50:36.980 --> 00:50:39.100
<v Jon>be part of the conversation and influence it.

00:50:39.220 --> 00:50:45.500
<v Jon>so that it isn't a burden on open source, it is a positive force.

00:50:45.740 --> 00:50:50.880
<v Jon>So right now, lots of projects are absolutely suffering because people are irresponsibly

00:50:50.880 --> 00:50:52.700
<v Jon>hurling commits at them that they haven't reviewed.

00:50:52.920 --> 00:50:58.660
<v Jon>I think it is the responsibility of us all to basically try to work with those

00:50:58.660 --> 00:51:01.600
<v Jon>people and say, hey, this isn't quite what we're looking for.

00:51:03.075 --> 00:51:05.855
<v Jon>Can we work with you to kind of like, we like the idea. Can we work with you

00:51:05.855 --> 00:51:07.215
<v Jon>to get this in a state that we can review it?

00:51:07.275 --> 00:51:10.015
<v Jon>And over time, we will have a generation of people who really understand how

00:51:10.015 --> 00:51:12.775
<v Jon>to yield these tools in a way that gets great results.

00:51:13.515 --> 00:51:15.695
<v Wes>Yeah, we don't have a lot of culture yet, you know?

00:51:15.895 --> 00:51:16.015
<v Chris>Yeah.

00:51:16.115 --> 00:51:18.575
<v Wes>We don't know how to use these. We're constantly discovering what we can even

00:51:18.575 --> 00:51:20.295
<v Wes>do, let alone how we should do it with each other.

00:51:20.415 --> 00:51:26.175
<v Chris>However, I think that's the right mindset to start building a culture around this tooling in Ubuntu.

00:51:26.335 --> 00:51:29.235
<v Chris>I think you have the right recipe there to build something responsible in Ubuntu.

00:51:29.375 --> 00:51:30.975
<v Chris>So I'm looking forward to see where you take it.

00:51:31.155 --> 00:51:35.635
<v Jon>It's an exciting time. I personally have gone from being, like I said,

00:51:35.715 --> 00:51:40.755
<v Jon>very skeptical to feeling like I'm more excited about coming to work and working

00:51:40.755 --> 00:51:42.415
<v Jon>on tech than I've been in a really long time.

00:51:42.575 --> 00:51:42.715
<v Chris>Yeah.

00:51:42.875 --> 00:51:47.975
<v Jon>There is something unlocked in my mind and I am building side projects at an alarming rate.

00:51:48.755 --> 00:51:49.655
<v Chris>I love it.

00:51:49.895 --> 00:51:54.475
<v Jon>It's just, it's been, I sort of also, I have sympathy for the,

00:51:54.515 --> 00:51:57.215
<v Jon>it's taking my craft and I can see that people are...

00:51:58.767 --> 00:52:02.247
<v Jon>I can see how people would have the other reaction. My experience has been the

00:52:02.247 --> 00:52:04.747
<v Jon>opposite. I'm like, all of a sudden, there's all this stuff I can build that

00:52:04.747 --> 00:52:05.967
<v Jon>I've been thinking about for years.

00:52:06.247 --> 00:52:09.087
<v Chris>Yeah, we've been saying it's the most fun we've had with computers in years.

00:52:09.247 --> 00:52:10.827
<v Wes>It feels like finding Linux again, in a way.

00:52:10.887 --> 00:52:14.387
<v Chris>It really does. And to your point, too, you're right. There is a bit of a craft

00:52:14.387 --> 00:52:18.327
<v Chris>in art that I see Wes wince when I produce some slop things.

00:52:19.287 --> 00:52:23.407
<v Chris>But at the same time, it's a comparison that's a little cliche,

00:52:23.487 --> 00:52:26.687
<v Chris>but I was just thinking when you were talking, it's very much like digital photography.

00:52:26.987 --> 00:52:29.387
<v Chris>Everybody now has a camera in their pocket, And because of that,

00:52:29.527 --> 00:52:32.607
<v Chris>I have incredible pictures of my children that I wouldn't have had otherwise.

00:52:32.987 --> 00:52:36.607
<v Chris>So I'm glad the digital photography and cameras came along, even though it sort

00:52:36.607 --> 00:52:40.207
<v Chris>of wrecked the art of photography a little bit for everybody trying to get that

00:52:40.207 --> 00:52:41.787
<v Chris>perfect golden hour sunset shot.

00:52:42.327 --> 00:52:45.707
<v Chris>It was a tradeoff, but now I have these keepsakes that I'll treasure forever

00:52:45.707 --> 00:52:46.887
<v Chris>that are extremely valuable to me.

00:52:47.047 --> 00:52:51.367
<v Chris>And I think it's kind of a similar tradeoff with, yes, some of the craft and

00:52:51.367 --> 00:52:53.047
<v Chris>the art of programming will be lost.

00:52:53.307 --> 00:52:55.347
<v Chris>That's not going away. They're still photographers.

00:52:55.847 --> 00:52:58.787
<v Chris>but I also will have these keepsakes and these personal things that are extremely

00:52:58.787 --> 00:53:04.087
<v Chris>valuable to me and it makes me very excited and I'm glad that Ubuntu isn't shying

00:53:04.087 --> 00:53:08.207
<v Chris>away from it and that they seem that you seem to have a very responsible and

00:53:08.207 --> 00:53:10.767
<v Chris>practical pragmatic take for it so I think it's great.

00:53:10.927 --> 00:53:13.807
<v Chris>John I mean this is, it's been a great week, it's been a great chat.

00:53:14.147 --> 00:53:16.647
<v Chris>Is there anything else you want to touch on before we scoot?

00:53:17.347 --> 00:53:21.067
<v Jon>No other than we're going to need help so if this sounds interesting then hit

00:53:21.067 --> 00:53:26.467
<v Jon>us up we are hiring like crazy which is a little unusual at the moment in tech,

00:53:26.587 --> 00:53:30.287
<v Jon>but we have a lot of openings and a very famous hiring process.

00:53:30.527 --> 00:53:32.727
<v Jon>If you'd like to come play, then I would recommend it.

00:53:33.087 --> 00:53:36.807
<v Jon>But otherwise, I think the next exciting thing is let's make the interims crazy

00:53:36.807 --> 00:53:39.027
<v Jon>again. I promised it when I took over Ubuntu.

00:53:39.767 --> 00:53:42.887
<v Jon>So the next release is going to be the stonking stingray.

00:53:44.747 --> 00:53:45.647
<v Wes>Good name.

00:53:45.907 --> 00:53:46.867
<v Chris>I like that.

00:53:47.827 --> 00:53:52.267
<v Jon>Very excited about. And so, yeah, we'll start to see the first of these new

00:53:52.267 --> 00:53:54.607
<v Jon>features landing and we'll see where it goes.

00:53:54.607 --> 00:53:57.247
<v Chris>We'll keep an eye. John, thank you so much. I hope we can chat again soon.

00:53:57.507 --> 00:53:58.247
<v Jon>Likewise. Thanks very much.

00:54:02.842 --> 00:54:06.142
<v Brent>Well, dear listeners and distinguished hosts, you may have noticed this week

00:54:06.142 --> 00:54:08.662
<v Brent>is Linux Unplugged 6.6.5.

00:54:08.762 --> 00:54:09.102
<v Chris>Oh, yeah.

00:54:09.582 --> 00:54:13.042
<v Brent>And we've been teasing that, well, this week, this coming week,

00:54:13.242 --> 00:54:15.662
<v Brent>is the BSD Challenge week.

00:54:17.102 --> 00:54:21.602
<v Chris>We officially are kicking off the BSD Challenge. This is my stupid stinger.

00:54:25.595 --> 00:54:26.695
<v Chris>is that what it.

00:54:26.695 --> 00:54:27.835
<v Wes>Sounds like when you put BSD.

00:54:27.835 --> 00:54:31.635
<v Chris>Yeah that's my that's BSD in a song in a stinger so.

00:54:31.635 --> 00:54:36.375
<v Brent>You've mentioned BSD a great number of times this week compared to I don't know.

00:54:36.375 --> 00:54:36.875
<v Chris>Every other.

00:54:36.875 --> 00:54:42.995
<v Brent>Week this year so I'm wondering have you gotten any closer to deciding what you're going to do this.

00:54:42.995 --> 00:54:45.995
<v Chris>Week yeah yes I have because

00:54:45.995 --> 00:54:48.775
<v Chris>I wanted to hit the ground running like we

00:54:48.775 --> 00:54:51.475
<v Chris>do with these challenges there's no rule that says you can't poke around a little

00:54:51.475 --> 00:54:54.495
<v Chris>bit before the starting line oh of course not you know like if you're going

00:54:54.495 --> 00:54:59.295
<v Chris>to race a car you take it on the track a few times so uh i wanted to have the

00:54:59.295 --> 00:55:07.175
<v Chris>best experience possible to to to flip my impression of bsd as a desktop operating system.

00:55:07.175 --> 00:55:08.195
<v Brent>Oh what's your impression currently.

00:55:08.195 --> 00:55:12.955
<v Chris>That it's it's it's for masochists it's for people that like to hurt themselves,

00:55:13.495 --> 00:55:16.415
<v Chris>and and just want to struggle the entire time they're

00:55:16.415 --> 00:55:19.195
<v Chris>using computers or trying to get software running or anything like that

00:55:19.195 --> 00:55:22.275
<v Chris>okay great um and so i thought ghost bsd would

00:55:22.275 --> 00:55:25.035
<v Chris>be a great way to kind of get a modern take on free

00:55:25.035 --> 00:55:27.955
<v Chris>bsd designed for the desktop to kind of smooth over

00:55:27.955 --> 00:55:30.795
<v Chris>some of those rough edges and give me a good shot of

00:55:30.795 --> 00:55:33.675
<v Chris>changing my impression and that may

00:55:33.675 --> 00:55:36.455
<v Chris>be the case but i wanted to test the car out around the

00:55:36.455 --> 00:55:39.435
<v Chris>track a few times so i downloaded the latest

00:55:39.435 --> 00:55:42.515
<v Chris>release and try to get it going on my machine in

00:55:42.515 --> 00:55:45.295
<v Chris>qmu kvm and it just wouldn't it

00:55:45.295 --> 00:55:47.935
<v Chris>wouldn't start up it started to boot and would fail start to boot and fail and i

00:55:47.935 --> 00:55:51.535
<v Chris>looked into it and it turns out that gosh darn

00:55:51.535 --> 00:55:54.975
<v Chris>it wouldn't you know it for the most recent release of ghost bsd there

00:55:54.975 --> 00:56:02.855
<v Chris>is a currently open bug where the live session fails to start x under qmu and

00:56:02.855 --> 00:56:06.975
<v Chris>so just your luck so i'm like oh okay okay before i saw this bug i'm like i'll

00:56:06.975 --> 00:56:12.735
<v Chris>go get the community iso which uses xfce instead of mate sure same problem same exact problem come on,

00:56:13.774 --> 00:56:18.234
<v Chris>And then I found this open bug report that exactly is my issue,

00:56:18.254 --> 00:56:22.334
<v Chris>which doesn't mean I couldn't use it on a desktop, and I still might. It's still a candidate.

00:56:23.514 --> 00:56:24.894
<v Wes>You couldn't easily try it.

00:56:25.034 --> 00:56:30.914
<v Chris>Yeah, I couldn't easily try it. So I decided to pivot to FreeBSD 15.1 because

00:56:30.914 --> 00:56:33.574
<v Chris>the beta just came out this week, and I like me some fresh stuff.

00:56:35.054 --> 00:56:41.234
<v Chris>And this version of FreeBSD is supposed to offer, in the TUI installer, Plasma Desktop.

00:56:41.594 --> 00:56:42.034
<v Brent>Oh.

00:56:43.194 --> 00:56:48.454
<v Chris>And I'm like, oh, imagine if I could get myself a modern Plasma desktop on BSD.

00:56:48.654 --> 00:56:49.234
<v Wes>That's pretty good.

00:56:49.374 --> 00:56:53.334
<v Chris>I'd have Kate, console. I'd have all the stuff I like. I think I could make that work, right?

00:56:53.754 --> 00:56:55.074
<v Brent>This feels unfair already.

00:56:55.234 --> 00:56:58.594
<v Chris>So I download this morning before the show thinking I'm going to get this in

00:56:58.594 --> 00:57:01.454
<v Chris>and I'm going to get a sense of it. So I have an answer for the segment.

00:57:02.314 --> 00:57:06.814
<v Chris>And I boot it up in the old VM and it starts and the installer,

00:57:06.974 --> 00:57:09.934
<v Chris>you know, classic free BSD text based installer, TUI, whatever.

00:57:11.864 --> 00:57:15.484
<v Chris>Doesn't have the Plasma option. It's not in there. They talked about it being

00:57:15.484 --> 00:57:16.384
<v Chris>in there. It's not in there.

00:57:16.904 --> 00:57:20.604
<v Chris>It's not in there. So what I got was a headless FreeBSD install.

00:57:20.864 --> 00:57:22.784
<v Wes>Well, that's not that. That's always what you were going to get,

00:57:23.024 --> 00:57:24.704
<v Wes>really, right? Didn't we know that? Didn't we know that?

00:57:24.904 --> 00:57:25.584
<v Brent>Good try, though.

00:57:25.864 --> 00:57:27.144
<v Wes>But you could add it later, probably.

00:57:27.144 --> 00:57:32.524
<v Chris>Well, I tried that. I tried that. And I do get SDDM working. And I can log in.

00:57:32.704 --> 00:57:33.004
<v Brent>Okay.

00:57:33.224 --> 00:57:36.084
<v Chris>And then I get a blank session. Because there's some kind of bug that's preventing

00:57:36.084 --> 00:57:38.184
<v Chris>X11 from working under QMU on FreeBSD.

00:57:38.264 --> 00:57:38.704
<v Brent>Come on.

00:57:38.744 --> 00:57:41.464
<v Wes>See, I've got that working on. I don't have 15.1.

00:57:42.084 --> 00:57:43.224
<v Chris>Which one do you have 15.

00:57:43.224 --> 00:57:44.164
<v Wes>Yeah maybe.

00:57:44.164 --> 00:57:46.244
<v Chris>We should trade notes maybe i should try the 15.

00:57:46.244 --> 00:57:50.404
<v Wes>Although i did then end up just for convenience so i started using a vnc session

00:57:50.404 --> 00:57:52.024
<v Wes>so you could also try that so.

00:57:52.024 --> 00:57:52.804
<v Chris>You've been kicking tires.

00:57:52.804 --> 00:57:56.544
<v Wes>Yeah i got an i3 going um oh yeah on free bsd that.

00:57:56.544 --> 00:57:57.064
<v Chris>Seems like a good.

00:57:57.064 --> 00:58:00.544
<v Wes>Choice i took the cheating route though because i noticed that props to free

00:58:00.544 --> 00:58:04.244
<v Wes>bsd they provide a bunch of pre-built images and stuff ready to go like cloud

00:58:04.244 --> 00:58:08.644
<v Wes>in it minimal ones and like more full ones including with zfs set up in a pool

00:58:08.644 --> 00:58:09.924
<v Wes>already just as a thing yeah.

00:58:09.924 --> 00:58:11.644
<v Chris>I did do zfs on route why not.

00:58:11.644 --> 00:58:15.044
<v Wes>So actually i need to do it play with the installer because this just meant

00:58:15.044 --> 00:58:17.284
<v Wes>i haven't actually tried the installer yet because i was able to just sort of

00:58:17.284 --> 00:58:23.064
<v Wes>dd that right into memory and then boot that in qemu and start mucking around

00:58:23.064 --> 00:58:24.624
<v Wes>you know get my rc conf you and.

00:58:24.624 --> 00:58:25.564
<v Chris>Ram disc all the way.

00:58:25.564 --> 00:58:29.524
<v Wes>Yeah nice just as because it was an exploratory setup right i do so like i was

00:58:29.524 --> 00:58:33.764
<v Wes>trying to i did have some issues i do think there probably are some some things

00:58:33.764 --> 00:58:37.004
<v Wes>we could figure out or work around perhaps maybe i mean look into around the

00:58:37.004 --> 00:58:39.604
<v Wes>qmu stuff specifically especially for the graphics side i.

00:58:39.604 --> 00:58:41.424
<v Chris>Also at this point i could just

00:58:41.424 --> 00:58:43.784
<v Chris>give up i mean i'm ultimately for the week i'm gonna run it on hardware.

00:58:43.784 --> 00:58:44.404
<v Wes>Yeah so i could.

00:58:44.404 --> 00:58:48.544
<v Chris>I just i wanted to just try out a few options to see which one i wanted to commit

00:58:48.544 --> 00:58:54.064
<v Chris>to hardware i guess silly me but yeah all right i might i mean i don't know,

00:58:54.956 --> 00:58:58.676
<v Chris>So which one are you going with officially? 15? FreeBSD 15?

00:58:58.816 --> 00:59:01.936
<v Wes>Yeah, well, I wanted to try 15 one. I was just having some issues.

00:59:02.016 --> 00:59:04.616
<v Wes>Maybe I needed to do some setup, because I think they've made some changes to

00:59:04.616 --> 00:59:08.456
<v Wes>how some of the package and user land stuff is getting shipped.

00:59:09.816 --> 00:59:12.936
<v Wes>But I was using it slightly before the beta was officially out, so I don't know.

00:59:13.736 --> 00:59:15.616
<v Chris>Brantley, have you picked a BSD that you're going to roll?

00:59:16.136 --> 00:59:19.596
<v Brent>I think my choices may be less responsible than both of yours.

00:59:20.756 --> 00:59:24.576
<v Brent>I was under a car for most of the week, and then I had this brilliant thought

00:59:24.576 --> 00:59:29.796
<v Brent>while I was under there, as you do, that I might give Nick's BSD a try.

00:59:30.556 --> 00:59:30.916
<v Wes>Whoa.

00:59:31.276 --> 00:59:32.616
<v Chris>I can't believe we didn't think of that.

00:59:32.736 --> 00:59:34.876
<v Brent>Actually. I know. I know. I was waiting to see if either of you.

00:59:35.016 --> 00:59:38.136
<v Chris>So you're going to have a real advantage, possibly, here.

00:59:38.236 --> 00:59:39.936
<v Brent>Or disadvantage. We're going to find out.

00:59:39.936 --> 00:59:41.696
<v Wes>Yeah, he might have some compiling to do.

00:59:41.956 --> 00:59:42.916
<v Chris>Oh, I hope he does.

00:59:42.936 --> 00:59:48.036
<v Brent>I think I also probably need a backup, because I'm not sure.

00:59:48.156 --> 00:59:51.356
<v Brent>So I would love to hear from the audience.

00:59:51.396 --> 00:59:58.836
<v Brent>You vote, and I will honor this, vote for which BSD Brent needs to try.

00:59:59.036 --> 00:59:59.536
<v Chris>We better get in quick.

00:59:59.656 --> 01:00:00.476
<v Brent>If next BSD doesn't work.

01:00:00.676 --> 01:00:01.536
<v Chris>Gotta get in quick.

01:00:01.656 --> 01:00:05.896
<v Brent>Yeah. So send in a boost. We will read them ahead of time because I probably

01:00:05.896 --> 01:00:08.096
<v Brent>in a day or two will desperately need an option B.

01:00:08.416 --> 01:00:08.576
<v Chris>Yeah.

01:00:08.796 --> 01:00:11.776
<v Brent>Or send us an email, linuxunplugged.com slash contact.

01:00:12.056 --> 01:00:16.416
<v Brent>Or even if you're on Matrix, we've got the Linux Unplugged feedback room.

01:00:16.576 --> 01:00:17.976
<v Brent>So I'll keep an eye on all three of those.

01:00:18.156 --> 01:00:22.636
<v Brent>And I will honor whatever crazy BSD choice you guys send out there.

01:00:22.756 --> 01:00:26.496
<v Chris>Okay. I'm thinking, I'm thinking for me, I might go retro hardware too,

01:00:26.896 --> 01:00:28.616
<v Chris>which may increase the suffering.

01:00:29.076 --> 01:00:31.496
<v Chris>Now I have different degrees of retro.

01:00:31.776 --> 01:00:34.156
<v Brent>Uh, we got the whole museum over there. What are you choosing?

01:00:34.316 --> 01:00:37.556
<v Chris>PJ? I don't know if you remember, but did, is that Dell that,

01:00:37.596 --> 01:00:41.356
<v Chris>that prototype Dell laptop? Is that in working shape at the moment or did we

01:00:41.356 --> 01:00:43.556
<v Chris>have to harvest from that to make the Odroid work?

01:00:43.736 --> 01:00:47.036
<v Mumble>Uh, it should work fine. It just needs a drive actually.

01:00:47.316 --> 01:00:50.976
<v Chris>Okay. Okay. So I may try and power.

01:00:51.856 --> 01:00:58.556
<v Chris>Right, right. And it takes a lot of power. I may try running BSD. Oh, there we go.

01:00:58.556 --> 01:00:58.736
<v Wes>That's fine.

01:00:59.156 --> 01:01:01.356
<v Chris>I mean, this laptop is- Whoa.

01:01:01.416 --> 01:01:02.376
<v Wes>This is a chunker.

01:01:02.476 --> 01:01:07.716
<v Chris>It's a Dell prototype that was gifted to us when I toured Dell way back,

01:01:07.936 --> 01:01:09.756
<v Chris>I don't know, four, five, six, seven years ago.

01:01:10.136 --> 01:01:11.896
<v Wes>It needs 180 watts?

01:01:12.096 --> 01:01:13.776
<v Chris>It takes 180 watts of power.

01:01:14.016 --> 01:01:15.156
<v Brent>That's going to be the biggest issue.

01:01:15.256 --> 01:01:17.816
<v Chris>Because the reason is it has two Xeons in it.

01:01:17.916 --> 01:01:18.256
<v Brent>What?

01:01:18.256 --> 01:01:22.396
<v Chris>It has two Xeons. It can have up to something like three or four drives,

01:01:22.556 --> 01:01:25.536
<v Chris>an insane amount of RAM, although it doesn't have an insane amount of RAM in it.

01:01:25.676 --> 01:01:27.696
<v Wes>Oh, it's got that old docking connector of theirs.

01:01:27.876 --> 01:01:29.396
<v Chris>The old classic docking connector.

01:01:29.656 --> 01:01:31.056
<v Wes>Obviously came with Windows Pro.

01:01:32.096 --> 01:01:35.776
<v Chris>It's beautiful on the inside. When you open it up, it is absolutely beautiful.

01:01:35.936 --> 01:01:38.516
<v Chris>It's huge, too. Open up that. Open up. Just go ahead and.

01:01:39.036 --> 01:01:43.356
<v Chris>How would you describe the size of that, Wes? It's larger than any laptop probably on the market.

01:01:43.436 --> 01:01:44.516
<v Wes>I feel like I'm sinking into it.

01:01:44.776 --> 01:01:45.136
<v Brent>Monstrous.

01:01:45.376 --> 01:01:50.136
<v Chris>Yeah. I mean, it was a big one, so I don't think I were planning to ship a lot

01:01:50.136 --> 01:01:51.456
<v Chris>of them, so they just went crazy.

01:01:51.676 --> 01:01:52.456
<v Wes>Small trackpad.

01:01:52.836 --> 01:01:55.756
<v Chris>Yeah, tiny trackpad. Well, actually, it's a big trackpad. It does have a trackpoint.

01:01:55.876 --> 01:01:55.956
<v Wes>Though.

01:01:56.016 --> 01:02:00.836
<v Chris>It is actually a big trackpad. It's just a huge laptop. That's what's going on.

01:02:01.016 --> 01:02:02.136
<v Wes>The perspectives are all shipped.

01:02:03.736 --> 01:02:06.676
<v Chris>Because, look, it's got a full 10 key and a full QWERTY keyboard.

01:02:07.296 --> 01:02:09.976
<v Brent>I have a question. When's the last time this thing booted?

01:02:10.796 --> 01:02:11.916
<v Chris>The last couple days ago.

01:02:12.416 --> 01:02:12.716
<v Brent>Really?

01:02:12.916 --> 01:02:13.836
<v Chris>Jeff got it powered up.

01:02:13.996 --> 01:02:14.316
<v Brent>Whoa.

01:02:14.476 --> 01:02:14.636
<v Chris>Yeah.

01:02:14.636 --> 01:02:15.676
<v Brent>What did he power it with.

01:02:15.676 --> 01:02:18.876
<v Chris>Um some usbc battery thing some high power battery.

01:02:18.876 --> 01:02:20.736
<v Brent>And he didn't he didn't leave that for you well.

01:02:20.736 --> 01:02:21.376
<v Chris>It's his toy it.

01:02:21.376 --> 01:02:21.836
<v Brent>Was pulling.

01:02:21.836 --> 01:02:23.676
<v Mumble>Nearly 100 watts from that by the way.

01:02:23.676 --> 01:02:26.616
<v Brent>Oh this thing weighs a lot yeah.

01:02:26.616 --> 01:02:27.796
<v Chris>It's very heavy too.

01:02:27.796 --> 01:02:30.236
<v Brent>Holy yeah you've got hdmi though,

01:02:31.480 --> 01:02:31.800
<v Brent>Huh.

01:02:33.060 --> 01:02:34.100
<v Chris>It's a USB-C.

01:02:34.220 --> 01:02:34.860
<v Brent>This thing is...

01:02:34.860 --> 01:02:38.960
<v Chris>It does have USB-C. However, it's sort of an early implementation of USB-C due

01:02:38.960 --> 01:02:41.120
<v Chris>to the era, and it does not pull enough power.

01:02:41.460 --> 01:02:44.400
<v Chris>So you have to use the barrel connector to actually properly power it.

01:02:44.580 --> 01:02:44.800
<v Brent>Wow.

01:02:44.980 --> 01:02:46.060
<v Chris>And I don't know if I'm going to find that.

01:02:46.640 --> 01:02:47.640
<v Brent>Okay. Good luck.

01:02:47.780 --> 01:02:51.180
<v Chris>So that's my leading candidate for hardware, just because it'd be a lot of fun

01:02:51.180 --> 01:02:55.720
<v Chris>to get that old thing running again. It's been on the shelf for a long time, and it's a one-of-one.

01:02:56.120 --> 01:02:58.600
<v Chris>However, I don't know. I may have to go a different direction.

01:02:58.880 --> 01:03:02.600
<v Chris>So that all kicks off after the show. We have to officially start knocking off

01:03:02.600 --> 01:03:03.960
<v Chris>the points. We do have the details.

01:03:04.140 --> 01:03:08.140
<v Chris>We'd love you to participate and let us know how it goes. LinuxUnplugged.com slash BSD.

01:03:09.040 --> 01:03:16.300
<v Chris>And it will give you the details on the Linux Unplugged 666 BSD challenge.

01:03:16.660 --> 01:03:17.480
<v Wes>Join us, won't you?

01:03:17.620 --> 01:03:19.540
<v Chris>Oh, episode 666.

01:03:24.640 --> 01:03:28.740
<v Brent>Please send in your experiences because we want to know how it went for you

01:03:28.740 --> 01:03:32.160
<v Brent>as well. by that episode. You've got one week.

01:03:32.740 --> 01:03:35.140
<v Chris>Good luck. The scoring system is on the website.

01:03:39.860 --> 01:03:46.300
<v Chris>Ooh, Kongaroo Paradox kicks us off with a baller boost. 177,000 sats.

01:03:58.534 --> 01:04:02.374
<v Chris>Mr. Paradox writes, it's been a while since I boosted, so here's some value

01:04:02.374 --> 01:04:04.494
<v Chris>back for all the value you provide each week.

01:04:04.854 --> 01:04:08.114
<v Chris>I think you're also getting the right balance of your AI coverage. Keep it up.

01:04:08.234 --> 01:04:08.514
<v Brent>Nice.

01:04:08.734 --> 01:04:11.794
<v Chris>Woo-hoo! Thank you very much.

01:04:12.154 --> 01:04:14.714
<v Brent>Did you mention how much the boost was for?

01:04:15.254 --> 01:04:16.334
<v Chris>Yeah, $177,000.

01:04:16.354 --> 01:04:18.034
<v Brent>Okay, great. I missed that. That's unbelievable.

01:04:18.174 --> 01:04:18.494
<v Chris>It is.

01:04:18.534 --> 01:04:20.294
<v Brent>I just was in a state of, yeah.

01:04:20.454 --> 01:04:21.754
<v Chris>But you know what else is unbelievable?

01:04:21.974 --> 01:04:26.554
<v Wes>Oh, Derivation Ding is coming in with $102,767.

01:04:27.254 --> 01:04:27.694
<v Chris>What?

01:04:32.134 --> 01:04:33.194
<v Chris>Oh my goodness!

01:04:39.334 --> 01:04:43.134
<v Chris>Wow! All right. Also, we just got to see Derivation Dingus.

01:04:43.194 --> 01:04:43.994
<v Brent>Yeah, such a treat.

01:04:44.094 --> 01:04:47.034
<v Wes>So one of these is a live boost. Great seeing you guys. Linux Fest was a blast.

01:04:47.234 --> 01:04:49.254
<v Wes>I'm writing this while sitting directly in front of you.

01:04:49.374 --> 01:04:49.874
<v Brent>Oh, amazing.

01:04:50.014 --> 01:04:50.714
<v Chris>At our live show.

01:04:50.914 --> 01:04:51.094
<v Wes>Uh-huh.

01:04:51.434 --> 01:04:52.634
<v Chris>Right, right, right.

01:04:52.834 --> 01:04:56.954
<v Wes>And then also props to Dingus for sending us a really nice breakdown to some

01:04:56.954 --> 01:05:01.354
<v Wes>of the copy-fail stuff, including some neat disassembly visualization there.

01:05:01.474 --> 01:05:05.034
<v Chris>A little pre-value, because he saw the lit pending item, saw we were going to

01:05:05.034 --> 01:05:07.614
<v Chris>be talking about a copy-fail, and hooked us up with some 411.

01:05:07.934 --> 01:05:08.374
<v Wes>Great.

01:05:08.794 --> 01:05:12.954
<v Chris>Thank you, Derivation, for that. That's a double-layer value this episode. Very nice.

01:05:13.074 --> 01:05:15.094
<v Wes>And it was indeed great seeing you at LinuxFail.

01:05:15.094 --> 01:05:15.834
<v Chris>Yes, indeed.

01:05:16.894 --> 01:05:18.214
<v Brent>You know what else is unbelievable?

01:05:18.314 --> 01:05:18.734
<v Chris>What's that?

01:05:19.334 --> 01:05:24.214
<v Brent>A Dude Trying Stuff is also a booster with 100,000 sats.

01:05:24.614 --> 01:05:25.054
<v Chris>What?!

01:05:28.654 --> 01:05:31.554
<v Chris>Oh my goodness, what is going on?

01:05:36.722 --> 01:05:39.162
<v Brent>Boosting in to celebrate getting a new job.

01:05:39.542 --> 01:05:40.962
<v Chris>Hey, congratulations, buddy.

01:05:41.542 --> 01:05:45.942
<v Brent>It is rough out there, gents. Been applying for over six months.

01:05:46.782 --> 01:05:47.502
<v Chris>Way to stick with it.

01:05:47.662 --> 01:05:50.962
<v Brent>Thank you for doing the most to keep us updated on the happenings in the community

01:05:50.962 --> 01:05:56.182
<v Brent>and helping me keep my passion and remember how awesome software really can be. Cheers.

01:05:56.542 --> 01:06:00.302
<v Chris>Cheers to you and congratulations. Thanks for sending some value our way,

01:06:00.422 --> 01:06:01.862
<v Chris>dude. Nice to hear from you too.

01:06:02.002 --> 01:06:02.362
<v Brent>Keep trying stuff.

01:06:02.622 --> 01:06:09.162
<v Chris>Yeah. Keep trying stuff. The dude abides comes in with 65,432 satoshis.

01:06:12.404 --> 01:06:16.284
<v Chris>Quite nice as well. Hey, yo, I just realized the last time only a portion of

01:06:16.284 --> 01:06:18.364
<v Chris>my boost got to all you, so here's a little bit more.

01:06:18.864 --> 01:06:22.564
<v Chris>Live boost! Thank you. Very nice.

01:06:23.984 --> 01:06:30.504
<v Wes>Amunday boosts in Big Ducks, 22,222 cents.

01:06:31.084 --> 01:06:32.984
<v Wes>Live show, LinuxFest Northwest boost.

01:06:33.124 --> 01:06:37.744
<v Chris>Very nice. Thank you. Boosting right there from the audience. How about that?

01:06:37.804 --> 01:06:45.764
<v Brent>That was fun last week. Well, tomato or tomato or tomato boosts in 4,444 sats.

01:06:45.864 --> 01:06:46.564
<v Chris>You say tomato.

01:06:48.144 --> 01:06:54.644
<v Brent>Love the LinuxFest Northwest coverage. I've got Dragonfly BSD and OpenBSD both downloaded.

01:06:55.104 --> 01:06:58.144
<v Brent>I've never run either of them before, so let's see how this goes.

01:06:58.544 --> 01:07:01.504
<v Brent>666, devil horns, et cetera, et cetera.

01:07:01.584 --> 01:07:04.584
<v Chris>Ah, yes. Dragonfly BSD. I'm surprised that didn't come up.

01:07:04.644 --> 01:07:07.904
<v Wes>I don't know if you saw, Brant, but I started a little poll for you in the Matrix chat.

01:07:07.904 --> 01:07:10.104
<v Brent>Oh, thank you. That's very kind of you.

01:07:10.204 --> 01:07:14.364
<v Chris>Yes, good. Let's get to voting. And you know the mission. You know what the mission is here.

01:07:14.784 --> 01:07:15.924
<v Wes>NetBSD, all the way.

01:07:17.524 --> 01:07:21.244
<v Chris>So good. Hey, our buddicy, our buddicy, our buddicy, Odyssey.

01:07:22.484 --> 01:07:27.044
<v Chris>Odyssey Westriff from Spooking comes in with 5,151 sats.

01:07:28.964 --> 01:07:32.224
<v Chris>Great to see you all live. Odyssey, it is always great to see you live.

01:07:32.384 --> 01:07:36.184
<v Chris>I was saying to the guys and to Angela, it's like, it's not a Linux fest unless Albert shows up.

01:07:36.184 --> 01:07:41.284
<v Brent>Oh, and I got a little 3D printed gift from Albert as well. These little tiny,

01:07:41.744 --> 01:07:43.784
<v Brent>really impressively printed penguins.

01:07:43.884 --> 01:07:45.744
<v Chris>Super smooth 3D printed penguins.

01:07:45.824 --> 01:07:47.004
<v Brent>Yeah, super nice. Thank you.

01:07:47.204 --> 01:07:49.184
<v Chris>And he gave me 3D gift to the kids, which I did.

01:07:49.344 --> 01:07:50.684
<v Brent>I saw them a little all over.

01:07:50.864 --> 01:07:51.344
<v Chris>Yeah, yeah.

01:07:51.524 --> 01:07:56.524
<v Brent>Also, Odyssey Westra is in the live chat right now saying, I'm just trying to

01:07:56.524 --> 01:07:58.864
<v Brent>get Ghost BSD to boot on this damn Chromebook.

01:07:59.244 --> 01:08:03.944
<v Brent>Can't get it to boot though. Can't mount the U2F mount.

01:08:03.944 --> 01:08:07.864
<v Chris>Well, it is famous for its wide variety of Chromebook support.

01:08:08.584 --> 01:08:10.464
<v Chris>Thanks for the value, Albert. We appreciate it.

01:08:11.365 --> 01:08:16.485
<v Wes>Moon and I boots in with 2,000 sets. I've been using Ventoy for a while,

01:08:16.485 --> 01:08:20.165
<v Wes>and I'm curious what baggage and edge cases y'all are referring to in this episode.

01:08:20.365 --> 01:08:23.045
<v Chris>I don't know. These two guys don't like Ventoy.

01:08:23.325 --> 01:08:23.585
<v Brent>Zero.

01:08:24.345 --> 01:08:25.185
<v Chris>I love it.

01:08:25.325 --> 01:08:30.025
<v Brent>I have never had success with Ventoy. I don't know what I'm doing wrong.

01:08:30.645 --> 01:08:34.725
<v Brent>I've tried several times, but I always run into an issue where it can't boot

01:08:34.725 --> 01:08:36.545
<v Brent>the specific ISO I want to be booting.

01:08:36.825 --> 01:08:42.045
<v Brent>And I don't know if it's a hardware issue. I don't know. I don't know.

01:08:42.045 --> 01:08:44.125
<v Wes>We should try maybe one that we make.

01:08:44.125 --> 01:08:45.045
<v Chris>Yeah maybe I mean the.

01:08:45.045 --> 01:08:45.845
<v Wes>Long time No I.

01:08:45.845 --> 01:08:49.965
<v Brent>Have He has one on a like really fancy USB drive.

01:08:49.965 --> 01:08:51.565
<v Wes>With SSD in there Oh even that doesn't work Still.

01:08:51.565 --> 01:08:54.465
<v Chris>Using that by the way from the very first time we covered it I'm still.

01:08:54.465 --> 01:08:56.245
<v Wes>Using that same thing That's true NVMe.

01:08:56.245 --> 01:08:57.625
<v Chris>In there and it rocks It's got

01:08:57.625 --> 01:09:01.665
<v Chris>C on one end A on the other end It works on every machine ever Not at all.

01:09:01.665 --> 01:09:02.545
<v Wes>Wow Yeah.

01:09:02.545 --> 01:09:04.385
<v Chris>So let us know what you think about Ventoy.

01:09:04.385 --> 01:09:09.025
<v Wes>I will add so there's the some people struggle with it seems like maybe some

01:09:09.025 --> 01:09:14.125
<v Wes>firmwares or UFI setups similar just don't like it so mileage may vary but then

01:09:14.125 --> 01:09:17.985
<v Wes>separately there's some concern around binary blobs that are present in the

01:09:17.985 --> 01:09:22.125
<v Wes>code base and so it's been brought up it hasn't ever really been fully addressed,

01:09:22.745 --> 01:09:27.345
<v Wes>there's been more tension about it over time so some folks have sort of provenance

01:09:27.345 --> 01:09:30.945
<v Wes>and trust issues with the delivery of how you get Ventoy you.

01:09:30.945 --> 01:09:32.345
<v Chris>Can pivot to that now that.

01:09:32.345 --> 01:09:33.845
<v Brent>Makes me feel slightly better.

01:09:33.845 --> 01:09:38.505
<v Chris>But thank you for that question clearly Moon and Night it needs addressing and

01:09:38.505 --> 01:09:40.385
<v Chris>I'd like to hear what people think about Ventoy.

01:09:40.385 --> 01:09:45.245
<v Wes>I guess last year the dev did have some response saying that the blobs come

01:09:45.245 --> 01:09:48.125
<v Wes>from other open source and propose to build them from GitHub CI.

01:09:48.425 --> 01:09:51.425
<v Wes>I don't know if any of that's actually really happened yet.

01:09:52.545 --> 01:09:53.605
<v Chris>Maybe instead of blobs.

01:09:53.645 --> 01:09:55.805
<v Wes>Make your own judgment. I don't know. It kind of depends on what your trust.

01:09:55.825 --> 01:10:00.205
<v Chris>What if we called them magic boxes instead of blobs? And then it's not so bad.

01:10:00.425 --> 01:10:03.105
<v Chris>You know, it's got some magic boxes. It ships with a few magic boxes.

01:10:03.525 --> 01:10:06.485
<v Chris>I mean, I'd like to know how it works, but it's magic. Okay,

01:10:06.545 --> 01:10:08.585
<v Chris>I'll accept that. And then we don't call them blobs.

01:10:09.750 --> 01:10:14.750
<v Chris>Blobs is something you fight in a video game. Distro Stu comes in with 3,333.

01:10:15.930 --> 01:10:19.390
<v Chris>And says, you're doing a great job. Well, thank you, Distro.

01:10:20.010 --> 01:10:25.970
<v Chris>You're doing a great job. Should we, you want to play a little, I got that for you.

01:10:27.310 --> 01:10:30.210
<v Chris>I do like the Leonard Nimoy clips from time to time.

01:10:35.730 --> 01:10:36.510
<v Wes>Indeed it does.

01:10:36.590 --> 01:10:40.410
<v Chris>That's a good one. And then, as distrust to be requested, there you go.

01:10:40.910 --> 01:10:43.730
<v Brent>I just need to let that steep for a bit.

01:10:44.610 --> 01:10:50.010
<v Wes>Well, Monty comes in with a row of ducks. Thanks for the push to get my rescue

01:10:50.010 --> 01:10:52.290
<v Wes>drive system updated and in place.

01:10:52.570 --> 01:10:52.850
<v Brent>Nice.

01:10:53.050 --> 01:10:57.950
<v Wes>I added a rescue Nix config with boot to RAM now to my flake and have a USB

01:10:57.950 --> 01:10:59.830
<v Wes>drive plugged into my Proxmox host.

01:11:00.030 --> 01:11:05.170
<v Wes>From my laptop, I can update the config, build it, and flash it over the network to the USB drive.

01:11:05.350 --> 01:11:06.670
<v Chris>Nice. with.

01:11:06.670 --> 01:11:10.950
<v Wes>Just file so i don't forget and i can then boot a vm on proxmox that has the

01:11:10.950 --> 01:11:13.390
<v Wes>usb drive passed through to test it.

01:11:13.390 --> 01:11:15.170
<v Chris>Now that's using your kidneys that's.

01:11:15.170 --> 01:11:20.170
<v Wes>Fancy i can pull the rescue drive out whenever i need it and then we get a link to monty's config.

01:11:20.170 --> 01:11:27.290
<v Chris>Oh monty's a baller you know we love the configs thank you oh yeah oh i'm just

01:11:27.290 --> 01:11:31.430
<v Chris>saying i like up front he's got the structure listed in the readme a real quick

01:11:31.430 --> 01:11:33.570
<v Chris>blurb for 30 plus hosts my goodness,

01:11:34.530 --> 01:11:40.490
<v Chris>and then even MIT licensing on there well done it's a clean lean machine.

01:11:41.490 --> 01:11:45.410
<v Brent>Whomever whiz boosts in 10,011 sats,

01:11:51.081 --> 01:11:54.761
<v Brent>Eric here. I had the best time at LinuxFest Northwest.

01:11:55.201 --> 01:11:59.161
<v Brent>The brilliant and creative members of this community are intellectually inspiring,

01:11:59.621 --> 01:12:02.741
<v Brent>funny, astute, inclusive, and generous.

01:12:03.101 --> 01:12:07.561
<v Brent>I even managed to hook up on Matrix before I left this year so I can stay connected

01:12:07.561 --> 01:12:09.401
<v Brent>and keep that conversation going.

01:12:09.781 --> 01:12:15.301
<v Brent>Thank you so much for showing me the way to find my people. Fun will now commence.

01:12:16.081 --> 01:12:19.981
<v Chris>Yeah, it really is great, isn't it, Eric? It's more than you can even imagine

01:12:19.981 --> 01:12:22.881
<v Chris>from afar, and I'm really glad that you had a chance to share that with us.

01:12:23.081 --> 01:12:24.301
<v Chris>Thank you for the value, too.

01:12:25.261 --> 01:12:29.281
<v Chris>Mr. Mayhem is here with 6,660 sats.

01:12:30.721 --> 01:12:34.601
<v Chris>Week one is done, and he posted a full write-up so far. He's started,

01:12:34.781 --> 01:12:37.621
<v Chris>and he is going for maximum points.

01:12:37.921 --> 01:12:44.121
<v Chris>The madman is repurposing what he calls a bad luck NixOS machine into a fresh free BSD setup.

01:12:45.181 --> 01:12:49.721
<v Chris>He's avoiding past ghost BSD concerns. He's going for full graphical desktop.

01:12:49.781 --> 01:12:53.761
<v Chris>He's got a browser. He's got his user count and mounts. Audio are already working. He's got that done.

01:12:54.601 --> 01:12:57.701
<v Chris>System administration tasks include package updates, OS updates,

01:12:57.861 --> 01:12:59.081
<v Chris>SSH, service, and scripts.

01:13:00.081 --> 01:13:03.101
<v Chris>And apparently he has a BSD jail with NGINX running inside of it.

01:13:03.221 --> 01:13:05.641
<v Chris>We're going to need to see. Oh, we're going to need to see the submission. I don't know.

01:13:05.741 --> 01:13:08.461
<v Wes>Yeah, I just think it's sounding like Mayhem is winning.

01:13:08.761 --> 01:13:12.621
<v Chris>Yeah, so far. Stretch goals include a PF firewall rule, beehive virtualization,

01:13:13.021 --> 01:13:16.701
<v Chris>ZFS snapshots, and Dragonfly BSD.

01:13:16.981 --> 01:13:17.801
<v Wes>And tailscale. Oh, yeah.

01:13:18.981 --> 01:13:19.741
<v Brent>So Mayhem, if you want to.

01:13:19.741 --> 01:13:21.921
<v Wes>I mean, that's a good playbook right there if you just want to join the challenge.

01:13:22.041 --> 01:13:23.181
<v Chris>Do you want to just set mine up too?

01:13:23.341 --> 01:13:24.421
<v Brent>If you want to be my challenge buddy.

01:13:24.421 --> 01:13:26.801
<v Wes>Yeah, send us a disc image. Boost it in.

01:13:27.501 --> 01:13:32.721
<v Chris>That would be great. Thank you, everybody, who boosted in.

01:13:33.061 --> 01:13:36.021
<v Chris>Also, thank you, everybody who streamed sats. 18 of you streamed sats as you

01:13:36.021 --> 01:13:40.081
<v Chris>listened, and collectively, you stacked 25,350 sats.

01:13:41.600 --> 01:13:44.580
<v Chris>When you combine that with our baller boosters and everybody who boosted,

01:13:44.600 --> 01:13:48.020
<v Chris>and we had some great ballers this week, it turned out to be a tremendous episode.

01:13:48.160 --> 01:13:51.120
<v Chris>And this is the interesting thing about Value for Value. About three days ago,

01:13:51.200 --> 01:13:53.120
<v Chris>it looked like it was going to be a rather low episode.

01:13:53.420 --> 01:13:56.540
<v Chris>And then just a couple of members in the community stepped up.

01:13:56.820 --> 01:13:57.760
<v Wes>Huge value storm.

01:13:57.900 --> 01:14:00.720
<v Chris>It's one of our better episodes. And it's funny how that can happen sometimes.

01:14:00.960 --> 01:14:04.360
<v Chris>And we just ride the wave, and we're so grateful. So thank you, everybody.

01:14:04.620 --> 01:14:11.080
<v Chris>We stacked a grand total of 526,592 sats.

01:14:11.600 --> 01:14:12.020
<v Brent>Thank you.

01:14:12.700 --> 01:14:15.660
<v Chris>That is very, very great. We really do appreciate that.

01:14:15.920 --> 01:14:19.580
<v Chris>And if you would like to boost in, Fountain FM makes it really easy these days

01:14:19.580 --> 01:14:25.000
<v Chris>with Fiat or Sats, including multiple ways to do that and connecting to your own AlbiHub.

01:14:25.200 --> 01:14:28.540
<v Chris>Now, if you go AlbiHub, you can integrate with lots of different applications,

01:14:29.260 --> 01:14:31.680
<v Chris>including the podcast index, and you can just boost from the web.

01:14:32.040 --> 01:14:36.420
<v Chris>It's a great way to support the show, or you can become a member and put your support on Autopilot.

01:14:36.800 --> 01:14:41.220
<v Chris>Thank you, everybody who supported episode 665, and we look forward to hearing

01:14:41.220 --> 01:14:43.660
<v Chris>from you and you boosted in on the BSD challenge.

01:14:43.900 --> 01:14:46.800
<v Chris>Let us know how it goes with a boost or the contact page.

01:14:47.000 --> 01:14:47.620
<v Wes>BSD boost.

01:14:48.660 --> 01:14:53.000
<v Chris>We should have, yeah, 6,666 that's. Is that the BSD boost or something like that?

01:14:53.000 --> 01:14:54.260
<v Wes>Any number of sixes will do.

01:14:54.800 --> 01:14:57.660
<v Chris>All right, so we got a different kind of pick for you this week.

01:14:57.800 --> 01:15:01.060
<v Chris>This is kind of, we're going to ask you to try it and report back.

01:15:01.320 --> 01:15:03.380
<v Chris>Since we're busy with the BSD challenge.

01:15:03.540 --> 01:15:05.980
<v Wes>Ask not what your show can pick for you, something like that?

01:15:06.881 --> 01:15:10.241
<v Chris>I like that. Yeah. But what you can pick for your podcast.

01:15:10.361 --> 01:15:10.721
<v Wes>There we go.

01:15:11.321 --> 01:15:18.421
<v Chris>We'd like you to get nasty. N-A-S-T-Y. It is a NAS operating system built on NixOS and BcacheFS.

01:15:18.841 --> 01:15:22.301
<v Chris>It turns your hardware into a storage appliance that serves NFS,

01:15:22.381 --> 01:15:25.101
<v Chris>Samba, iSCSI, NVMe over Ethernet.

01:15:25.281 --> 01:15:27.921
<v Chris>Managed all from a nice web UI.

01:15:28.221 --> 01:15:32.261
<v Chris>Updated automatically. Has rollback support. New version just came out that

01:15:32.261 --> 01:15:35.601
<v Chris>integrates a complete backup system using Rustic Core.

01:15:35.601 --> 01:15:39.081
<v Chris>So you can go to anything basically rustic supports, which is a lot of the things

01:15:39.081 --> 01:15:43.461
<v Chris>the new log viewer in the UI as services page with unified services configuration

01:15:43.461 --> 01:15:47.921
<v Chris>for NFS, Samba, iSCSI, MVME, over networking, UPS stuff, SSH,

01:15:48.001 --> 01:15:48.941
<v Chris>Docker, backup server, etc.

01:15:49.321 --> 01:15:55.961
<v Chris>And ARM support. It's GPL3. So if you are not participating in the BSD challenge.

01:15:56.864 --> 01:15:57.964
<v Chris>and have some time.

01:15:58.184 --> 01:16:00.064
<v Wes>An alternate B-based challenge.

01:16:00.384 --> 01:16:04.704
<v Chris>Try out nasty. And report in, because what we're trying to essentially get to

01:16:04.704 --> 01:16:06.524
<v Chris>is if it's worth us giving it a full go.

01:16:07.324 --> 01:16:09.124
<v Wes>Finally a NAS built on BcashFS.

01:16:09.224 --> 01:16:12.584
<v Brent>Yeah. Wes, is this your project? It feels like something you would want.

01:16:12.604 --> 01:16:15.644
<v Wes>I am interested. I will also just sneak in here.

01:16:15.824 --> 01:16:21.064
<v Wes>BcashFS a day ago had V138.2 come out. A bunch of performance stuff.

01:16:21.284 --> 01:16:23.644
<v Wes>Cycle detector and six locks improvements.

01:16:24.204 --> 01:16:28.304
<v Wes>Btree write buffer multi-threading. btree node merge attempt thrashing fixed

01:16:28.304 --> 01:16:35.444
<v Wes>so now uh kent writes if you've got a workload where we're slower than butterfs or zfs let me know.

01:16:35.444 --> 01:16:38.444
<v Chris>Oh it's open all right we'll ride

01:16:38.444 --> 01:16:42.084
<v Chris>that wave with nasty and let us know how it goes and if we should try it out

01:16:42.084 --> 01:16:46.784
<v Chris>now we do have a pick that i think is very handy it's one of those legacy pick

01:16:46.784 --> 01:16:50.104
<v Chris>here you know a standard pick but it's one of those you need it when you need

01:16:50.104 --> 01:16:56.244
<v Chris>it it's called diffuse and it allows you to remove backgrounds from images locally on your desktop.

01:16:56.284 --> 01:17:01.004
<v Chris>It's a GTK4-based application written in Python using Libidwadia,

01:17:01.004 --> 01:17:07.364
<v Chris>and it just uses web GPU acceleration on x86-64 systems.

01:17:07.404 --> 01:17:13.104
<v Chris>So it's using web GPU to do an accelerated GPU removal of the background on

01:17:13.104 --> 01:17:16.544
<v Chris>just a little simple purpose-built application. You don't need to go to a website.

01:17:16.544 --> 01:17:19.604
<v Chris>You don't need to go to a service. You can just use Diffuse.

01:17:20.535 --> 01:17:24.475
<v Wes>Processing is performed using the ISNet general model through Onyx Runtime.

01:17:24.715 --> 01:17:27.255
<v Chris>And it is also GPL3.

01:17:27.495 --> 01:17:29.475
<v Wes>Neat. Have you tried it? How does it work?

01:17:29.615 --> 01:17:33.715
<v Chris>It's pretty good. It does have some challenges on hair, but for some of the

01:17:33.715 --> 01:17:36.835
<v Chris>stuff, I had a funny picture of Brent to make a sticker. I wanted to use it to make a sticker.

01:17:37.055 --> 01:17:37.255
<v Wes>Oh, good.

01:17:37.395 --> 01:17:37.795
<v Brent>Hey, no.

01:17:37.955 --> 01:17:38.935
<v Wes>Yeah, we need Brent stickers.

01:17:39.015 --> 01:17:42.375
<v Chris>And then there's also, I have this picture of Jeff when he's holding a long

01:17:42.375 --> 01:17:44.955
<v Chris>pole, and that made for a great sticker.

01:17:46.195 --> 01:17:49.915
<v Chris>I have them for when I need them, you know? If you get a moment, you make a sticker.

01:17:50.015 --> 01:17:51.515
<v Wes>That's right. that's responsible sticker.

01:17:51.515 --> 01:17:55.115
<v Chris>It's also available on flathub and no

01:17:55.115 --> 01:17:57.975
<v Chris>no diffuse we'll put a link to that in the show notes

01:17:57.975 --> 01:18:00.895
<v Chris>link to nass link to everything we talked about today will be

01:18:00.895 --> 01:18:06.135
<v Chris>in the show notes you can find those over at linuxunplugged.com slash six six

01:18:06.135 --> 01:18:11.715
<v Chris>five and of course you know what next week's it is the result of the bsd challenge

01:18:11.715 --> 01:18:15.375
<v Chris>and we'd love to hear how it went for you too and wes some pro tips for people

01:18:15.375 --> 01:18:18.135
<v Chris>before we get out of here you got any yeah um.

01:18:18.135 --> 01:18:21.035
<v Wes>I'm hooked on structured metadata, maybe you are too.

01:18:21.555 --> 01:18:25.175
<v Wes>So we have an XML file. And in that XML file, we have a JSON file.

01:18:26.035 --> 01:18:27.015
<v Wes>Actually, maybe several.

01:18:27.235 --> 01:18:27.335
<v Brent>What?

01:18:27.595 --> 01:18:29.215
<v Wes>Yeah, and that has chapters.

01:18:29.475 --> 01:18:30.175
<v Chris>Oh, nice.

01:18:30.315 --> 01:18:32.455
<v Wes>Yeah, which is metadata about the show.

01:18:32.535 --> 01:18:32.755
<v Chris>Uh-huh.

01:18:32.935 --> 01:18:35.475
<v Wes>And we have even more metadata if you want like.

01:18:35.575 --> 01:18:35.895
<v Chris>We do?

01:18:36.095 --> 01:18:37.915
<v Wes>Yeah, well, if you want like an SRT file.

01:18:38.035 --> 01:18:38.215
<v Chris>Mm.

01:18:38.535 --> 01:18:40.135
<v Wes>Yeah, or a VTT file.

01:18:40.315 --> 01:18:40.455
<v Chris>Oh.

01:18:40.475 --> 01:18:42.515
<v Wes>And then that's like, who said what? When?

01:18:42.995 --> 01:18:43.495
<v Chris>In there.

01:18:43.815 --> 01:18:44.175
<v Wes>Right?

01:18:44.375 --> 01:18:44.555
<v Chris>Ready.

01:18:44.595 --> 01:18:46.195
<v Wes>Right, embedded. I mean, it's like a.

01:18:46.395 --> 01:18:46.735
<v Chris>Good to go.

01:18:46.735 --> 01:18:51.195
<v Wes>You go to the XML, and then that points you to the SRT, and then you got the data.

01:18:51.435 --> 01:18:51.795
<v Chris>You got it.

01:18:51.875 --> 01:18:51.995
<v Wes>Yeah.

01:18:52.095 --> 01:18:52.555
<v Chris>I got it. All right.

01:18:52.735 --> 01:18:55.915
<v Wes>But there's these things called podcast apps.

01:18:56.075 --> 01:18:56.235
<v Chris>Yeah.

01:18:56.755 --> 01:18:57.995
<v Wes>A lot of them do that for you.

01:18:58.155 --> 01:18:59.555
<v Chris>Oh, what a great idea.

01:18:59.695 --> 01:19:04.135
<v Wes>Yeah. It's quite the ecosystem. They call it podcasting 2.0.

01:19:04.275 --> 01:19:05.635
<v Chris>They also support live streams.

01:19:09.040 --> 01:19:13.560
<v Chris>Yeah, that's right. We are live on a Sunday. You can make it a Tuesday by joining

01:19:13.560 --> 01:19:20.640
<v Chris>us over at jblive.tv or jblive.fm or like Wes said, in your podcasting 2.0 app of choice.

01:19:20.860 --> 01:19:23.300
<v Chris>A lot of them just support the live streaming. In there we go.

01:19:23.600 --> 01:19:26.740
<v Chris>We have it pending so you know like a day before the show when it's going to

01:19:26.740 --> 01:19:28.800
<v Chris>be. Boom, you hit the button, you're listening. It's incredible.

01:19:28.940 --> 01:19:30.160
<v Chris>It's amazing. It's a podcast app.

01:19:30.360 --> 01:19:34.040
<v Chris>We also got the website, linuxunplugged.com. That uses HTML and CSS.

01:19:34.040 --> 01:19:36.240
<v Chris>It looks pretty good and it gives you links to stuff. Check it out.

01:19:36.320 --> 01:19:38.940
<v Chris>You're going to love it. But thank you so much for joining us on this week's

01:19:38.940 --> 01:19:40.720
<v Chris>episode of your Unplugged program.

01:19:41.940 --> 01:19:44.280
<v Chris>Hope you enjoyed it. Let us know what you thought. This is a big episode,

01:19:44.300 --> 01:19:48.860
<v Chris>and we'll see you right back here next Tuesday, as in Sunday!

