WEBVTT

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

00:00:16.147 --> 00:00:16.947
<v Wes>My name is Wes.

00:00:16.947 --> 00:00:17.920
<v Brent>And my name is Brent.

00:00:18.500 --> 00:00:21.557
<v Chris>Well, hello, gentlemen. Coming up on the show today, we're chatting with John

00:00:21.557 --> 00:00:25.257
<v Chris>Seeger from Canonical about all of the big changes coming to Ubuntu.

00:00:25.257 --> 00:00:27.817
<v Chris>And then we're going to round out the show with some great picks and boosts

00:00:27.817 --> 00:00:30.186
<v Chris>and a little look at something special and a lot more.

00:00:30.575 --> 00:00:33.857
<v Chris>So before we get to that, we've got to do the right thing and say hello to our

00:00:33.857 --> 00:00:37.307
<v Chris>crew that's sticking with us through a long Sunday. Time-appropriate greetings.

00:00:37.307 --> 00:00:39.357
<v Chris>Virtual lug. Hello, mobile rope. Hello.

00:00:40.337 --> 00:00:41.807
<v Brent>Hello. That's better.

00:00:41.807 --> 00:00:43.212
<v Chris>There we go. Yeah, yeah.

00:00:43.804 --> 00:00:45.627
<v Wes>Been with us all day and we appreciate it.

00:00:45.842 --> 00:00:48.997
<v Chris>Also, you know who's been with us for a while? Our friends over at Defined Networking.

00:00:48.997 --> 00:00:52.808
<v Chris>Go to defined.net slash unplugged and check out Manage Nebula.

00:00:53.162 --> 00:00:56.657
<v Chris>When it comes to your network, when it comes to something as important as your

00:00:56.657 --> 00:01:02.193
<v Chris>mesh network, I want you, I implore you to own that stack. That's why I love Nebula.

00:01:02.576 --> 00:01:06.077
<v Chris>It's based on the open source decentralized VPN that they created many years

00:01:06.077 --> 00:01:08.549
<v Chris>ago to solve some very, very big problems.

00:01:08.979 --> 00:01:14.018
<v Chris>And it doesn't depend on any third party staying online or special dashboard, nothing like that.

00:01:14.384 --> 00:01:16.857
<v Chris>Because you can host your own dashboards. You can host your own,

00:01:17.177 --> 00:01:20.067
<v Chris>make dashboards for days if you want. You can make your own lighthouses.

00:01:20.067 --> 00:01:20.804
<v Chris>You can do the whole thing.

00:01:21.913 --> 00:01:24.397
<v Chris>And you don't have to worry about any third party. But I understand that can

00:01:24.397 --> 00:01:26.725
<v Chris>be, that can be a bit much.

00:01:27.079 --> 00:01:30.277
<v Chris>So I want you to check out Manage Nebula because Manage Nebula,

00:01:30.277 --> 00:01:33.637
<v Chris>you can start it with 100 hosts, absolutely free, no credit card required.

00:01:33.637 --> 00:01:37.766
<v Chris>And they now also will provide a lighthouse to really make things easy. It's great.

00:01:38.126 --> 00:01:41.907
<v Chris>So check it out at defined.net slash unplugged. You can come and go from the

00:01:41.907 --> 00:01:44.546
<v Chris>hosted lighthouse. You're going to really be impressed with the flexibility,

00:01:44.720 --> 00:01:47.193
<v Chris>the simplicity, the speed, and the security.

00:01:47.431 --> 00:01:53.172
<v Chris>Defined.net slash unplugged. Thank you to Defined for sponsoring the Unplugged program.

00:01:54.519 --> 00:01:58.959
<v Chris>Now, you know that it's reaching the end of the year when we make this announcement.

00:02:04.038 --> 00:02:09.959
<v Chris>Ladies and gentlemen, if you can believe it, the great holiday home lab is coming back,

00:02:12.397 --> 00:02:13.692
<v Chris>for a second year.

00:02:15.851 --> 00:02:19.839
<v Chris>Ladies and gentlemen, we want your home labs. We want them. We want your home labs.

00:02:20.054 --> 00:02:21.447
<v Brent>Mostly just your RAM, really.

00:02:22.928 --> 00:02:23.663
<v Chris>Send us your RAM.

00:02:26.289 --> 00:02:30.443
<v Chris>Just send RAM. We're going to have the criteria for you. We just want you to

00:02:30.443 --> 00:02:33.923
<v Chris>be ready for this. We're going to set up the submission page at linuxunplugged.com.

00:02:34.223 --> 00:02:36.076
<v Chris>Was it holiday? I think it was what it was.

00:02:36.639 --> 00:02:39.753
<v Chris>It's as we record, not live, but it should be live, hopefully,

00:02:39.753 --> 00:02:42.305
<v Chris>by the time you hear this, or there will be a placeholder there.

00:02:42.630 --> 00:02:46.583
<v Chris>And we'll have all the criterion for you, and we're going to have a few more

00:02:46.583 --> 00:02:48.934
<v Chris>details. We're changing things up just a little bit.

00:02:49.456 --> 00:02:54.396
<v Chris>And it will be our last episode of the year will be the great holiday home lab special.

00:02:54.742 --> 00:02:57.543
<v Chris>It's back. It's going to be fantastic. You're going to love it.

00:02:57.543 --> 00:03:00.635
<v Chris>It was a lot of fun last year, and we love senior setups.

00:03:01.029 --> 00:03:04.543
<v Chris>And we encourage messy setups. We also encourage pristine setups.

00:03:04.543 --> 00:03:06.167
<v Chris>We love all of the setups.

00:03:06.683 --> 00:03:11.623
<v Chris>And it turns out last year's episode was one of our most popular episodes of

00:03:11.623 --> 00:03:14.224
<v Chris>the year. So, you know, we got to do it again.

00:03:26.496 --> 00:03:29.983
<v Chris>So get ready get your home lab ready tidied if you need to or make a bigger

00:03:29.983 --> 00:03:34.193
<v Chris>mess and send it in we'll have more details and again when it's ready it'll

00:03:34.193 --> 00:03:35.613
<v Chris>be at linuxunplugged.com.

00:03:35.613 --> 00:03:40.893
<v Wes>Slash holiday yeah i think right that sends to the old google form right now so it's not Shh.

00:03:40.893 --> 00:03:43.723
<v Chris>No, it doesn't. No, I just think what we'll do is, before we leave,

00:03:43.723 --> 00:03:47.603
<v Chris>we'll just replace it with a standby page, and then when we have it ready, we'll...

00:03:47.643 --> 00:03:48.583
<v Wes>That makes perfect sense.

00:03:48.583 --> 00:03:49.222
<v Chris>Yeah, there you go.

00:03:53.488 --> 00:03:58.552
<v Chris>Thank you. Ubuntu has been in the news these last couple of weeks.

00:03:58.552 --> 00:04:00.976
<v Chris>And Canonical has been giving everybody a lot to talk about.

00:04:01.354 --> 00:04:05.800
<v Chris>First of all, Ubuntu 26.10, the stonking stingray, was released on October 15th.

00:04:06.561 --> 00:04:08.792
<v Chris>Very fancy. Got the new GNOME in there and all of that.

00:04:08.872 --> 00:04:09.832
<v Wes>Yeah, we played with a little bit.

00:04:10.752 --> 00:04:14.452
<v Chris>And in the past week, John Seeger and,

00:04:15.030 --> 00:04:21.452
<v Chris>Ubuntu announced plans to restart the Ubuntu core desktop with an aim to make

00:04:21.452 --> 00:04:26.373
<v Chris>the default Ubuntu desktop in the future eventually use Ubuntu Core one day.

00:04:26.820 --> 00:04:31.862
<v Chris>No timelines there yet, but that was the stated goal, which is no small thing.

00:04:31.862 --> 00:04:33.403
<v Wes>I think that means we better pay attention.

00:04:33.513 --> 00:04:38.932
<v Chris>That could be a huge, huge shift. So we wanted to have John back on the show

00:04:38.932 --> 00:04:40.764
<v Chris>to help sort through all of this.

00:04:41.687 --> 00:04:46.470
<v Jon>John joined Canonical back in March of 2021. It's been that long.

00:04:46.987 --> 00:04:52.146
<v Jon>As product lead and became VP of engineering back in February of 2022.

00:04:52.721 --> 00:04:57.341
<v Jon>He's, of course, a longtime Linux enthusiast, hands-on open source developer.

00:04:57.725 --> 00:05:02.092
<v Jon>John has also worked extensively with NixOS, Kubernetes, Rust,

00:05:02.092 --> 00:05:04.307
<v Jon>Snaps, and Cloud Automation.

00:05:05.167 --> 00:05:09.149
<v Jon>He's currently also helping to drive Ubuntu's modernization,

00:05:09.732 --> 00:05:14.396
<v Jon>including Rust adoption, security improvements, and that revival of Ubuntu Core

00:05:14.571 --> 00:05:16.012
<v Jon>desktop that you mentioned, Chris.

00:05:16.012 --> 00:05:20.882
<v Jon>That's especially exciting to me because I think I said I would try this for

00:05:20.882 --> 00:05:22.412
<v Jon>like a month when it came out.

00:05:22.772 --> 00:05:27.423
<v Jon>I think I remember something vaguely like that. So I'm counting on you, John.

00:05:31.085 --> 00:05:35.651
<v Chris>Back on the show right now, John Seeger returning. John, welcome back to the

00:05:35.651 --> 00:05:37.493
<v Chris>Unplugged program. We're thrilled to have you.

00:05:37.673 --> 00:05:39.508
<v Jon>Thank you very much for having me. I'm glad to be here.

00:05:39.943 --> 00:05:44.483
<v Chris>Well, your timing is perfect because you've been making a lot of news recently.

00:05:44.889 --> 00:05:48.951
<v Chris>And there's a couple of projects that we want to dig into. I thought maybe just

00:05:48.951 --> 00:05:53.051
<v Chris>because I think it's the topic du jour right now, let's start with just all

00:05:53.051 --> 00:05:54.611
<v Chris>of the security stuff going on.

00:05:54.611 --> 00:05:59.471
<v Chris>There's been a lot of discussion about the recent IPv4 vulnerability in the

00:05:59.471 --> 00:06:03.041
<v Chris>Linux kernel and all of that and I know you guys are still as we record now

00:06:03.041 --> 00:06:06.221
<v Chris>working on a fix how's all that going what's going on there.

00:06:07.672 --> 00:06:11.540
<v Jon>It has definitely been a pretty wild ride over the last few months.

00:06:11.540 --> 00:06:15.800
<v Jon>I think anybody who is shipping software at the moment is dealing with this,

00:06:16.480 --> 00:06:20.400
<v Jon>not least the kernel project itself, of course, but it is kind of replicated

00:06:20.400 --> 00:06:21.900
<v Jon>across all of the packages we maintain.

00:06:22.905 --> 00:06:25.850
<v Jon>The pace at which vulnerabilities are discovered and reported has obviously

00:06:25.850 --> 00:06:27.084
<v Jon>increased dramatically.

00:06:27.769 --> 00:06:31.600
<v Jon>The example you're showing there, of course, is one where we didn't cover ourselves

00:06:31.600 --> 00:06:37.340
<v Jon>in glory, but it is against a backdrop of quite an impressive story,

00:06:37.340 --> 00:06:40.560
<v Jon>I think. So the news on that one is the fixes are in proposed.

00:06:40.960 --> 00:06:44.987
<v Jon>There are some instructions out on a blog on Ubuntu.com that tell you how to get those fixes.

00:06:46.467 --> 00:06:49.430
<v Jon>One of the interesting stories that I heard from our kernel team,

00:06:49.430 --> 00:06:51.400
<v Jon>we've all just come back from two weeks in Mexico.

00:06:51.400 --> 00:06:54.656
<v Jon>We had a product roadmap sprint followed by an engineering sprint where we took,

00:06:55.660 --> 00:06:58.750
<v Jon>over 1,100 engineers to a place in Mexico, which was kind of wild.

00:06:58.750 --> 00:07:01.500
<v Jon>The whole company was only 500 when I joined five years ago.

00:07:02.480 --> 00:07:07.370
<v Jon>But there was an interesting statistic presented to me, which was that in the

00:07:07.370 --> 00:07:11.760
<v Jon>last six months, our kernel team have shipped more security patches than in

00:07:11.760 --> 00:07:13.621
<v Jon>the prior 20 years of Ubuntu.

00:07:14.800 --> 00:07:18.760
<v Jon>And so that's not an excuse for the vulnerability that we missed and perhaps

00:07:18.760 --> 00:07:22.510
<v Jon>were less timely than people would have liked. But it is to try and give some

00:07:22.510 --> 00:07:26.490
<v Jon>confidence that the machine is being built and the machine is mostly working.

00:07:26.490 --> 00:07:30.570
<v Wes>You have taken a lot of steps recently. I mean, just over the past year to sort

00:07:30.570 --> 00:07:31.889
<v Wes>of advance those timelines.

00:07:32.557 --> 00:07:35.400
<v Wes>I think maybe people don't appreciate that you're already shipping some of those

00:07:35.400 --> 00:07:37.996
<v Wes>things even if it may have not applied fully in this case.

00:07:38.728 --> 00:07:42.076
<v Jon>Yes, we are essentially now committed to shipping kernels on a much tighter

00:07:42.076 --> 00:07:46.866
<v Jon>timeline. And I think often the scale of the maintenance burden that our kernel

00:07:46.866 --> 00:07:52.462
<v Jon>team have is perhaps underappreciated. So for Ubuntu, we ship over 160 kernels.

00:07:54.076 --> 00:07:59.176
<v Jon>That is a combination of cloud kernels and OEM kernels and partner kernels.

00:07:59.176 --> 00:08:02.456
<v Jon>We've obviously got the vert kernels, all of the kernels, essentially.

00:08:02.976 --> 00:08:06.260
<v Jon>And we have to essentially keep all of them patched and up to date.

00:08:07.196 --> 00:08:12.988
<v Jon>I think the number I saw was something like 23,000 or 25,000 security patches in the last few months.

00:08:13.661 --> 00:08:17.196
<v Jon>And so the team has had to ramp up really fast. I think a year ago,

00:08:17.556 --> 00:08:20.302
<v Jon>it would have been fair to say that we were feeling the heat a little bit,

00:08:20.697 --> 00:08:26.160
<v Jon>but I am increasingly confident that team has built a machine that will serve us well.

00:08:26.816 --> 00:08:29.976
<v Jon>There will, of course, always be vulnerabilities that we miss.

00:08:30.516 --> 00:08:34.542
<v Jon>They've committed to a much tighter release cadence. And so they are essentially

00:08:34.873 --> 00:08:37.606
<v Jon>on a two-week release cadence for kernels, but staggered.

00:08:37.606 --> 00:08:38.636
<v Jon>So there are essentially new

00:08:38.636 --> 00:08:41.706
<v Jon>kernels dropping every week, but they kind of lag by a week, essentially.

00:08:41.706 --> 00:08:46.086
<v Jon>And that's because we run thousands of tests on quite literally thousands of

00:08:46.086 --> 00:08:49.696
<v Jon>real machines, like over 2,000 machines in a lab somewhere that are being driven

00:08:49.696 --> 00:08:52.739
<v Jon>autonomously through our kernel release and test QA process.

00:08:53.152 --> 00:08:56.526
<v Jon>And so the idea is that fresh kernels should be arriving near enough every week,

00:08:56.526 --> 00:08:59.176
<v Jon>which is something that Canonical has never committed to before.

00:08:59.176 --> 00:09:05.146
<v Jon>So imagine 164 kernels, thousands of tests over 2 000 machines essentially every

00:09:05.146 --> 00:09:09.686
<v Jon>week and so i don't want to make excuses for the vulnerability that got lots

00:09:09.686 --> 00:09:12.418
<v Jon>of attention this week that was obviously a miss on our part.

00:09:13.684 --> 00:09:17.946
<v Jon>And i think it's safe to say we could have communicated more effectively but

00:09:17.946 --> 00:09:21.076
<v Jon>i you know that's now on the way to fix and i hope that people hearing this

00:09:21.076 --> 00:09:21.967
<v Jon>will have a bit of faith that,

00:09:22.757 --> 00:09:25.868
<v Jon>you know going forward they are in safe hands we have some good numbers to support,

00:09:26.391 --> 00:09:31.376
<v Jon>i think the level of scrutiny that goes into our kernels perhaps we'll do some

00:09:31.376 --> 00:09:32.289
<v Jon>writing about that shortly.

00:09:33.194 --> 00:09:36.173
<v Brent>With the accelerated pace of the kernels that you mentioned,

00:09:36.173 --> 00:09:43.343
<v Brent>which is crazy numbers, is that, from a more philosophical perspective, a welcome change?

00:09:43.343 --> 00:09:49.993
<v Brent>Because all these bugs are being found that presumably existed and were undiscovered.

00:09:49.993 --> 00:09:50.997
<v Brent>How do you feel about that?

00:09:51.636 --> 00:09:54.043
<v Jon>How do I feel about it? I mean, I don't suppose it really matters whether it's

00:09:54.043 --> 00:09:55.863
<v Jon>welcome or not in reality.

00:09:56.263 --> 00:10:00.143
<v Jon>It's the reality that we're in, and we have to respond. I think the Kernel team

00:10:00.143 --> 00:10:01.887
<v Jon>is one of the largest teams at Canonical.

00:10:03.994 --> 00:10:07.326
<v Jon>And like I said, perhaps a year ago, we were feeling less confident.

00:10:07.472 --> 00:10:11.433
<v Jon>But with some collaboration from some of our partners, some pressure from some

00:10:11.433 --> 00:10:14.914
<v Jon>of our partners, some, I think, fair pressure from our partners,

00:10:15.332 --> 00:10:18.113
<v Jon>it has been very interesting to see that team step up.

00:10:18.113 --> 00:10:21.593
<v Jon>And I think despite the fact the workload has gone up because of the sheer volume

00:10:21.593 --> 00:10:26.173
<v Jon>of security vulnerabilities, I think even against that backdrop,

00:10:26.173 --> 00:10:28.773
<v Jon>the machinery they have built has allowed them to be more ambitious,

00:10:28.773 --> 00:10:30.442
<v Jon>if that makes sense, than they have been before.

00:10:30.610 --> 00:10:33.673
<v Wes>There's a lot of times, I think, where sort of having to adapt,

00:10:33.673 --> 00:10:38.043
<v Wes>move faster, automate more does sort of expose hidden bottlenecks in your process

00:10:38.043 --> 00:10:40.303
<v Wes>or things you have to change, things you've always wanted to change.

00:10:40.303 --> 00:10:45.673
<v Jon>That's right. You'll notice you might have seen that in the run up to 2610,

00:10:45.673 --> 00:10:48.673
<v Jon>we squeaked in the 7.3 kernel kind of at the last minute.

00:10:48.673 --> 00:10:53.143
<v Jon>We committed publicly to the 7.2 and we essentially switched fairly last minute

00:10:53.143 --> 00:10:57.620
<v Jon>to 7.3, which is, I think, a testament to the kernel team's confidence in their process.

00:10:57.892 --> 00:11:01.733
<v Chris>Well, why don't we talk about Ubuntu 26.10 really quick, since that is also

00:11:01.733 --> 00:11:05.166
<v Chris>the new release. And there's a couple of things in here that are pretty great.

00:11:05.596 --> 00:11:10.103
<v Chris>We've mentioned GNOME 51 on the show, of course, which has a few really nice

00:11:10.103 --> 00:11:12.463
<v Chris>things in there, including some nice remote desktop improvements.

00:11:13.090 --> 00:11:18.419
<v Chris>But there was a couple of items that I think we've been tracking for a while that jump out to us.

00:11:18.796 --> 00:11:22.263
<v Chris>Number one, obviously, is the transition to Rust Core Utils,

00:11:22.263 --> 00:11:24.276
<v Chris>I guess, is complete in this release. Is that true?

00:11:25.234 --> 00:11:29.092
<v Jon>That's right. So in 2604, it was complete apart from three utilities.

00:11:29.092 --> 00:11:33.222
<v Jon>And holding those three utilities back was kind of an abundance of caution.

00:11:33.802 --> 00:11:37.002
<v Jon>I don't think anyone would have got into real trouble, but we were aware of

00:11:37.002 --> 00:11:42.078
<v Jon>some slightly edge casey time of check, time of use errors. So we held those back.

00:11:42.519 --> 00:11:47.732
<v Jon>Those issues got fixed by the upstream. And so it felt like 2610 was the time

00:11:47.732 --> 00:11:49.009
<v Jon>to take the lead off and just commit.

00:11:49.421 --> 00:11:50.176
<v Chris>How's it been going?

00:11:50.640 --> 00:11:53.802
<v Jon>It's been hard. Core Utils has been hard. There's so many utilities.

00:11:54.162 --> 00:11:57.769
<v Jon>It's so baked into F1 shell scripts, I think it's been successful.

00:11:57.943 --> 00:12:00.682
<v Jon>I remain committed to it. I was reading an article today from somebody who I

00:12:00.682 --> 00:12:05.942
<v Jon>think was at the University of Toronto who was pretty upset that sudo-rs had

00:12:05.942 --> 00:12:07.498
<v Jon>broken one of their workflows.

00:12:08.702 --> 00:12:11.842
<v Jon>That's a slightly different prospect to core utils because with sudo-rs,

00:12:11.842 --> 00:12:16.142
<v Jon>the promise was never 100% compatibility. It was a modern reimplementation that

00:12:16.142 --> 00:12:19.038
<v Jon>skewed some of the choices that were made by the original project.

00:12:19.636 --> 00:12:24.592
<v Jon>Whereas in new utils, the goal is bug for bug, 100% compatibility.

00:12:24.592 --> 00:12:27.482
<v Jon>And that project has really risen to the challenge. The test coverage,

00:12:28.002 --> 00:12:32.232
<v Jon>the sort of test parity, if you will, between UUtils and GNU has continued to

00:12:32.232 --> 00:12:33.353
<v Jon>go up release after release.

00:12:33.638 --> 00:12:37.032
<v Jon>And what's also really pleasing is I consistently see Sylvester,

00:12:37.032 --> 00:12:40.472
<v Jon>who's the lead maintainer of UUtils, appearing as one of the top contributors

00:12:40.472 --> 00:12:44.432
<v Jon>to GNU CoreUtils as he works on his own project and discovers bugs and inconsistencies

00:12:44.432 --> 00:12:48.492
<v Jon>and maybe emissions in the docks and things like that.

00:12:48.492 --> 00:12:52.212
<v Jon>So I think it has gone, you know, it's been tough, but it's also been worth it.

00:12:52.212 --> 00:12:57.252
<v Jon>And I never expected such a transition to be very easy and very fast.

00:12:57.252 --> 00:13:03.952
<v Jon>In reality, we were first, and that comes with a responsibility for us to respond quickly to issues.

00:13:03.952 --> 00:13:09.072
<v Jon>We've also committed to backporting new versions of the Uutils package to 2604,

00:13:09.072 --> 00:13:12.662
<v Jon>which we wouldn't normally do unless there was a critical kind of security issue.

00:13:12.662 --> 00:13:16.202
<v Jon>But we're doing that because we recognize that the software was early and some

00:13:16.202 --> 00:13:19.014
<v Jon>people will be facing issues that we want to resolve for them as a kind of...

00:13:20.006 --> 00:13:21.852
<v Jon>You know, exception policy in this case.

00:13:22.148 --> 00:13:26.815
<v Chris>So now that we're here, what is the goal going forward? Or I guess another way

00:13:26.815 --> 00:13:29.645
<v Chris>for me to phrase that is what are you hoping the dividends that pay off now

00:13:29.645 --> 00:13:31.436
<v Chris>that you're on a Rust core utils?

00:13:33.380 --> 00:13:39.103
<v Jon>So in the long term, it should be less maintenance for a certain class of bug.

00:13:40.015 --> 00:13:44.765
<v Jon>I'm not exaggerating or making stuff up when I say that the vast,

00:13:44.765 --> 00:13:48.125
<v Jon>vast majority of security vulnerabilities out in the wild have been up to this

00:13:48.125 --> 00:13:50.095
<v Jon>date due to memory corruption issues.

00:13:50.095 --> 00:13:53.125
<v Jon>And I hope is that we will cease to see that with core utils.

00:13:53.125 --> 00:13:56.735
<v Jon>I also think we're starting to see some nice features. So the latest release

00:13:56.735 --> 00:14:00.790
<v Jon>has this nice trick where if you type an argument slightly wrong, you put the

00:14:00.906 --> 00:14:03.385
<v Jon>argument value in the wrong format or you slightly mistype it,

00:14:03.385 --> 00:14:06.865
<v Jon>it gives you a Rust compiler style warning and highlights exactly where it was

00:14:06.865 --> 00:14:08.790
<v Jon>that you typed it wrong and relates to the help.

00:14:09.498 --> 00:14:14.555
<v Jon>There's some nice performance improvements coming. And so my view is that that

00:14:14.555 --> 00:14:19.105
<v Jon>is just those sorts of UX changes and improvements are very difficult to land,

00:14:19.105 --> 00:14:20.035
<v Jon>I think, in the original.

00:14:20.035 --> 00:14:22.725
<v Jon>There's no appetite to do so, and I respect that. I think that's absolutely

00:14:22.725 --> 00:14:28.132
<v Jon>fine. But the user experience that I aspire to for Ubuntu is more than that,

00:14:28.341 --> 00:14:31.278
<v Jon>ultimately. And I think a project like EU Tools will enable us to get there,

00:14:31.755 --> 00:14:34.179
<v Jon>even if in the short term there's a few rough edges.

00:14:34.499 --> 00:14:36.687
<v Chris>Do you think you're on track for the LTS? Yes.

00:14:39.009 --> 00:14:39.996
<v Jon>In what sense?

00:14:41.156 --> 00:14:44.988
<v Chris>In shipping and making the transition to the Rust utilities in the LTS.

00:14:45.371 --> 00:14:48.206
<v Jon>I mean, it was done in 2604, apart from three tools.

00:14:48.206 --> 00:14:53.536
<v Chris>Oh, it is. So this last three. Okay. So then I'm presuming then the answer is

00:14:53.536 --> 00:14:55.576
<v Chris>yes. By the next LTS, these last three will make it.

00:14:56.056 --> 00:15:00.386
<v Jon>100%. And so by the next LTS, you'll also have NTPDRS by default.

00:15:00.386 --> 00:15:02.299
<v Jon>And that will be the first time, I think.

00:15:02.595 --> 00:15:06.516
<v Jon>So it's NTPDRS plus some new stuff, which we're funding the development of.

00:15:06.516 --> 00:15:12.736
<v Jon>And so that will get you a single binary NTP client server that also speaks

00:15:12.736 --> 00:15:16.896
<v Jon>NTS and also does PTP without an additional tool, like precision time,

00:15:16.896 --> 00:15:17.821
<v Jon>without an additional tool.

00:15:19.376 --> 00:15:23.609
<v Jon>We are dropping BZIP2RS in by default early in 2704.

00:15:24.423 --> 00:15:28.857
<v Jon>And we're evaluating Z-Standard RS, Z-Lib, and various other compression tools,

00:15:28.857 --> 00:15:32.187
<v Jon>which are actually very exciting because,

00:15:32.867 --> 00:15:37.777
<v Jon>that is where the efficiency gains that one might seek from a Rust rewrite could

00:15:37.777 --> 00:15:40.377
<v Jon>have enormous global scale impact.

00:15:40.377 --> 00:15:45.287
<v Jon>So imagine all of the Ubuntu machines on the planet suddenly got 5% more efficient

00:15:45.287 --> 00:15:48.232
<v Jon>at doing Z-Standard or Z-Lib decompression, for example.

00:15:48.349 --> 00:15:49.335
<v Chris>Right, right.

00:15:49.922 --> 00:15:50.937
<v Jon>Quite a meaningful change.

00:15:50.937 --> 00:15:55.407
<v Chris>A lot of them out there doing that. So is there a transition taking in place

00:15:55.407 --> 00:15:58.367
<v Chris>with the internal tooling that Canonical is writing? Are you writing that in

00:15:58.367 --> 00:16:00.330
<v Chris>Rust? What's the direction there?

00:16:01.247 --> 00:16:05.307
<v Jon>Some. So Canonical has always taken quite a disciplined approach to the languages

00:16:05.307 --> 00:16:08.561
<v Jon>used internally. So traditionally, it was lots of Python, lots of Go.

00:16:09.171 --> 00:16:13.897
<v Jon>Now it's lots of Python, lots of Go, and some Rust. And we're increasingly trying

00:16:13.897 --> 00:16:17.937
<v Jon>to be discerning about where we use those tools. It's not, as some might have

00:16:17.937 --> 00:16:21.408
<v Jon>suggested, a religious game. There are things for which Go is very good.

00:16:21.785 --> 00:16:23.907
<v Jon>Go has very powerful primitives for concurrency.

00:16:24.387 --> 00:16:28.217
<v Jon>If you're writing web services and doing HTTP handling and things like that,

00:16:28.217 --> 00:16:32.012
<v Jon>Go is a phenomenal choice still. Even some of our systems tools like SnapD are written in Go.

00:16:32.407 --> 00:16:38.647
<v Jon>But equally, if you want to write very low-level compositors and database protocols

00:16:38.647 --> 00:16:41.757
<v Jon>and things like that, Rust is a very compelling choice. So we try to use the

00:16:41.757 --> 00:16:42.612
<v Jon>right tools for the right job.

00:16:42.746 --> 00:16:46.647
<v Jon>And so we are definitely seeing more and more Rust projects popping up around Canonical.

00:16:47.518 --> 00:16:51.207
<v Chris>Okay, so you mentioned Snaps. You boys all right if we transition to this one?

00:16:51.207 --> 00:16:55.227
<v Chris>You ready for this? Okay. So the big news that you made recently,

00:16:55.647 --> 00:17:01.705
<v Chris>and this is pretty exciting, is that, quote, you are accelerating the Ubuntu Core desktop,

00:17:02.291 --> 00:17:08.752
<v Chris>the immutable and attestable Linux distribution, and you say specifically the desktop, too.

00:17:09.344 --> 00:17:14.180
<v Chris>So we all know Ubuntu Core, and it kind of seems to have faded a little bit, so it's,

00:17:15.160 --> 00:17:18.602
<v Chris>back john what's going on what are the details tell us the story here.

00:17:19.055 --> 00:17:23.968
<v Jon>Yeah so ubuntu core itself has been pretty widely deployed on sort of iot class

00:17:23.968 --> 00:17:27.449
<v Jon>devices digital signage robots those kind of things,

00:17:28.168 --> 00:17:32.768
<v Jon>uh and continues to to be deployed as such you'll remember 2023 there was a

00:17:32.768 --> 00:17:35.087
<v Jon>sort of proof of concept core desktop

00:17:35.366 --> 00:17:38.288
<v Jon>and then it sort of all went a bit quiet and that coincided with about the time

00:17:38.288 --> 00:17:41.217
<v Jon>that i took over ubuntu and it's one of it's been one of the things i have been

00:17:41.600 --> 00:17:43.208
<v Jon>most desperate to get back to.

00:17:43.208 --> 00:17:47.521
<v Jon>But the sort of cold, hard reality of it was that I didn't feel like we had,

00:17:48.061 --> 00:17:53.238
<v Jon>the right team or resources to commit to that on that timescale.

00:17:53.238 --> 00:17:58.238
<v Jon>And a combination of some exceptional hiring from my team and kind of growth

00:17:58.238 --> 00:18:01.028
<v Jon>in the department has meant that I now feel pretty confident that we can tackle it.

00:18:01.028 --> 00:18:05.668
<v Jon>And honestly, I think this is the most exciting thing I have or maybe will get

00:18:05.668 --> 00:18:11.638
<v Jon>to announce at Canonical. Because for me, it is the most prolific kind of reimagining

00:18:11.638 --> 00:18:14.416
<v Jon>of Ubuntu's architecture and makeup in its history.

00:18:14.538 --> 00:18:19.501
<v Jon>It is replacing the bootloader as a snap, the kernel as a snap,

00:18:20.428 --> 00:18:21.778
<v Jon>the desktop environment as a snap.

00:18:21.778 --> 00:18:26.098
<v Jon>And so we have revived that original POC, which still has some architectural

00:18:26.098 --> 00:18:29.408
<v Jon>deficiencies, but is now rebased on core 26. And if you know where to look on

00:18:29.408 --> 00:18:30.901
<v Jon>GitHub, you can get the images and boot them.

00:18:32.381 --> 00:18:35.528
<v Jon>We're working on a kind of daily release pipeline and now we'll aim to break

00:18:35.528 --> 00:18:39.997
<v Jon>down some of the more monolithic aspects of that proof of concept into component parts.

00:18:40.276 --> 00:18:43.080
<v Chris>Okay, so there's a lot about this that really bakes our noodle.

00:18:43.335 --> 00:18:46.008
<v Chris>It's a huge job, and I do want to get into some of the aspects that seem like

00:18:46.008 --> 00:18:47.236
<v Chris>they're going to be challenging, but...

00:18:48.230 --> 00:18:53.137
<v Chris>Man, it seems like if swapping out a few CLI tools was controversial,

00:18:53.137 --> 00:18:57.843
<v Chris>this is really going to rock the boat when people actually wrap their head around what's coming.

00:18:58.190 --> 00:19:01.347
<v Chris>Because, John, you're coming right at it and you're saying this is going to

00:19:01.347 --> 00:19:02.980
<v Chris>be the future of Ubuntu one day.

00:19:03.305 --> 00:19:07.277
<v Chris>And in a way, for a lot of people, I think Ubuntu is kind of like the bastion

00:19:07.277 --> 00:19:10.287
<v Chris>of a traditional distro where I can install it and I can just run anything I

00:19:10.287 --> 00:19:12.221
<v Chris>would download and et cetera, et cetera.

00:19:12.547 --> 00:19:15.387
<v Chris>There's got to be at least a portion of the user base and so many of the things

00:19:15.387 --> 00:19:19.217
<v Chris>that are based off Ubuntu that kind of have this expectation just baked in of

00:19:19.217 --> 00:19:20.400
<v Chris>how a Linux system works.

00:19:21.016 --> 00:19:24.301
<v Chris>This is going to be a pretty big transition. Like, are you crazy?

00:19:25.073 --> 00:19:25.420
<v Jon>A little.

00:19:27.057 --> 00:19:27.577
<v Chris>All right.

00:19:27.577 --> 00:19:32.197
<v Jon>But here's the thing. So traditional Ubuntu, Ubuntu as it sounds today,

00:19:32.197 --> 00:19:35.767
<v Jon>is not going anywhere. Like, no one should read into this that this signals

00:19:35.767 --> 00:19:37.600
<v Jon>death for Ubuntu as we know it today.

00:19:37.757 --> 00:19:41.704
<v Jon>For a start, Ubuntu Core cannot exist without the packages that we build,

00:19:41.954 --> 00:19:43.987
<v Jon>that we inherit and sync and patch from Debian, right?

00:19:43.987 --> 00:19:48.367
<v Jon>So Ubuntu, as you know it today, if you are someone who has absolutely no interest

00:19:48.367 --> 00:19:50.887
<v Jon>in Immutable Linux and Snaps, Ubuntu is going to stick around.

00:19:50.887 --> 00:19:54.157
<v Jon>You can carry on using it. Don't panic. I hope that there are no plans on any

00:19:54.157 --> 00:19:56.815
<v Jon>timeline to stop doing Ubuntu as we're doing it today.

00:19:57.343 --> 00:20:04.930
<v Jon>There is a plan that over the next couple few years, Core will become the default Ubuntu experience.

00:20:05.243 --> 00:20:08.277
<v Jon>And in my opinion, there are very good reasons for that. I know I don't need

00:20:08.277 --> 00:20:12.697
<v Jon>to sell you folks on immutable Linux distributions, but Ubuntu Core has some

00:20:12.697 --> 00:20:13.875
<v Jon>really interesting properties,

00:20:14.809 --> 00:20:18.965
<v Jon>even among the current drop-off Linux distributions. So one of the first criticisms

00:20:18.965 --> 00:20:22.975
<v Jon>I heard on this post was, well, I've used an immediate Linux system,

00:20:22.975 --> 00:20:25.525
<v Jon>and every time I update a package, I have to rebuild an image and reboot the

00:20:25.525 --> 00:20:26.632
<v Jon>system and redeploy the whole thing.

00:20:26.875 --> 00:20:30.242
<v Jon>Not true on Ubuntu core. Just refresh the snap in place. We can live patch the kernel.

00:20:30.695 --> 00:20:36.225
<v Jon>So that's not a drawback. It also brings that lovely, I want to switch the desktop

00:20:36.225 --> 00:20:40.860
<v Jon>environment for a day and see what happens type effect without crapping all over your system.

00:20:41.775 --> 00:20:46.745
<v Jon>You can just install the KDE snap, boot that for a while remove the KDE snap

00:20:46.745 --> 00:20:50.835
<v Jon>and go back to GNOME I hope that there will be cosmic snaps and you know NERI

00:20:50.835 --> 00:20:55.076
<v Jon>snaps and all the rest of it and I think.

00:20:56.737 --> 00:21:00.187
<v Jon>2026 has never been a better time to think about what confinement might look

00:21:00.187 --> 00:21:04.353
<v Jon>like on your workstation. I think it is only a matter of time before we see.

00:21:06.855 --> 00:21:11.946
<v Jon>Very influential people having their credentials leaked because an agent did something silly.

00:21:12.213 --> 00:21:16.567
<v Jon>And the way I run my machine is I have very little installed on it.

00:21:16.567 --> 00:21:20.427
<v Jon>I have a browser, I have a chat client, I have a terminal, and pretty much everything

00:21:20.427 --> 00:21:23.087
<v Jon>I do is in a LexD container or a VM or something like that.

00:21:25.347 --> 00:21:29.327
<v Jon>And And there is a story here on the compatibility front that really has come

00:21:29.327 --> 00:21:33.547
<v Jon>into focus in the last year that I couldn't have told two and a half years ago

00:21:33.547 --> 00:21:35.885
<v Jon>when I kind of regrettably put a pause on things.

00:21:36.785 --> 00:21:40.277
<v Jon>And so where I am moving towards is why not use Canonical Workshop,

00:21:40.277 --> 00:21:44.677
<v Jon>which is this nice little utility that we shipped about six to eight months

00:21:44.677 --> 00:21:48.447
<v Jon>ago for building little reproducible developer environments.

00:21:48.691 --> 00:21:54.200
<v Jon>Use that as the sort of compatibility story. So today I have been using Firefox

00:21:54.530 --> 00:21:55.691
<v Jon>installed in a workshop.

00:21:56.626 --> 00:21:59.482
<v Jon>I launch it from my GNOME launcher and it pops up on my desktop.

00:22:00.247 --> 00:22:03.497
<v Jon>It's wired up to D-Bus through D-Bus proxy. It's wired up to Pipewire through

00:22:03.497 --> 00:22:05.827
<v Jon>Pipewire container. The notifications work. The camera works.

00:22:06.965 --> 00:22:12.177
<v Jon>Web Serial even worked. And that Firefox is installed as a dev running in a workshop.

00:22:12.177 --> 00:22:16.627
<v Chris>Okay. So, okay, I got it. This is a lot. So first of all, what I caught in there

00:22:16.627 --> 00:22:20.247
<v Chris>is it doesn't sound like alternative desktops are out. Still going to be able

00:22:20.247 --> 00:22:22.654
<v Chris>to run Plasma and Cosmic. That's all going to be still a thing.

00:22:22.887 --> 00:22:26.207
<v Jon>We're actually working with the KDE folks right from the start.

00:22:26.207 --> 00:22:29.317
<v Jon>So we are paying a company who's

00:22:29.317 --> 00:22:32.836
<v Jon>quite heavily involved in the KDE Neon community to work alongside us,

00:22:33.695 --> 00:22:39.167
<v Jon>in our teams day to day to basically develop the KDE, like cutting edge KDE

00:22:39.167 --> 00:22:41.427
<v Jon>track alongside what we're doing with the GNOME track.

00:22:41.427 --> 00:22:44.987
<v Jon>So right from day one, we essentially put ourselves in a position where we can't

00:22:44.987 --> 00:22:48.257
<v Jon>make decisions that would inhibit us to just one desktop environment or one

00:22:48.257 --> 00:22:49.595
<v Jon>login manager or something like that.

00:22:52.277 --> 00:22:55.993
<v Wes>What kept me from having a proper website for a long time was it just felt expensive

00:22:55.993 --> 00:22:59.313
<v Wes>and time-consuming. I mean, for some folks, it means you have to hire someone.

00:22:59.650 --> 00:23:04.189
<v Wes>For others like me, it means at least a weekend of research to look at a stack of tools.

00:23:04.706 --> 00:23:08.893
<v Wes>Hostinger's AI Builder flips that. Describe what you want, and it builds a working

00:23:08.893 --> 00:23:10.923
<v Wes>version of the entire site in minutes.

00:23:11.178 --> 00:23:14.203
<v Wes>No coding, no design skills required.

00:23:14.534 --> 00:23:17.279
<v Wes>And you can start from a mock-up before you even make an account.

00:23:17.586 --> 00:23:20.006
<v Wes>That's the part that actually got me to try it, I'll be honest.

00:23:20.314 --> 00:23:23.553
<v Wes>What I also like is that it's kind of an all-in-one place for the domain,

00:23:23.553 --> 00:23:26.573
<v Wes>the website, the email, the marketing that makes it easy for you to get started

00:23:26.573 --> 00:23:27.779
<v Wes>or a friend or a family member.

00:23:28.186 --> 00:23:32.353
<v Wes>One Hostinger account covers it all, so no stitching together five different

00:23:32.353 --> 00:23:33.950
<v Wes>subscriptions in your domain provider.

00:23:34.380 --> 00:23:37.513
<v Wes>And if you already have a site somewhere else, Hostinger makes migration quick

00:23:37.513 --> 00:23:40.608
<v Wes>and easy. You're not locked into whatever you started with years ago.

00:23:41.328 --> 00:23:45.862
<v Wes>And right now, Black Friday and Cyber Monday pricing is live.

00:23:46.030 --> 00:23:48.817
<v Wes>A premium plan is just $1.99 a month.

00:23:49.275 --> 00:23:52.803
<v Wes>Snag Hostinger's service at their lowest prices before the sale ends.

00:23:52.803 --> 00:23:55.904
<v Wes>Create your website today for just $1.99.

00:23:56.259 --> 00:24:01.233
<v Wes>Go to hostinger.com slash unplugged and use the code unplugged for an additional

00:24:01.233 --> 00:24:04.322
<v Wes>10% off Black Friday and Cyber Monday pricing.

00:24:04.455 --> 00:24:07.242
<v Wes>Hostinger.com slash unplugged.

00:24:10.307 --> 00:24:13.571
<v Chris>Okay, then the other thing, it sounds like you called it a workshop.

00:24:13.571 --> 00:24:18.451
<v Chris>This is almost kind of like a separate contained environment where you could,

00:24:18.951 --> 00:24:22.311
<v Chris>essentially sideload applications that aren't snapped or for some reason you

00:24:22.311 --> 00:24:23.354
<v Chris>didn't want a snapped version.

00:24:23.744 --> 00:24:28.481
<v Jon>That's right. So think, I'm just going to say this, various parts of the internet

00:24:28.481 --> 00:24:29.786
<v Jon>are about to explode. So strap in.

00:24:30.083 --> 00:24:33.229
<v Jon>Think Windows subsystem for Linux with the graphics bit.

00:24:33.363 --> 00:24:37.722
<v Jon>So you can install, like you could even install a Flatpak in a container and

00:24:37.907 --> 00:24:41.691
<v Jon>the window can appear on your Ubuntu Core desktop as if it was running on your

00:24:41.691 --> 00:24:43.532
<v Jon>desktop, except it's not, it's running in a container.

00:24:44.311 --> 00:24:50.051
<v Jon>And that is essentially the, that's the escape patch. So obviously I see this as an escape patch.

00:24:50.051 --> 00:24:52.981
<v Jon>If we do our job right, all the software vendors in the world are going to want

00:24:52.981 --> 00:24:57.111
<v Jon>to ship their stuff for snaps because the security story, the update story,

00:24:57.111 --> 00:25:00.681
<v Jon>the kind of usage metric story should be so compelling for them and for their

00:25:00.681 --> 00:25:02.741
<v Jon>users that they want to ship their stuff for snaps.

00:25:03.218 --> 00:25:06.891
<v Jon>But it is no good for us to go out in the world when none of the apps are snaps

00:25:06.891 --> 00:25:09.191
<v Jon>and tell everyone that this is the future of Ubuntu when they boot it up for

00:25:09.191 --> 00:25:11.261
<v Jon>the first time and can't get the stuff done they need to get done.

00:25:11.261 --> 00:25:16.671
<v Jon>And so workshops and containers and the appropriate kind of wiring and polish

00:25:16.671 --> 00:25:20.081
<v Jon>around how you wire those apps into the desktop are kind of the escape hatch.

00:25:20.081 --> 00:25:21.205
<v Jon>And that's going to be a focus.

00:25:21.774 --> 00:25:24.711
<v Jon>I mean, I'm running a sort of prototype of it today, in a sense.

00:25:24.711 --> 00:25:27.611
<v Chris>Is this essentially like LXD under the hood, kind of wired up?

00:25:27.611 --> 00:25:28.051
<v Jon>It is LXD.

00:25:28.051 --> 00:25:28.921
<v Chris>Okay, yeah, okay.

00:25:28.921 --> 00:25:29.371
<v Wes>Awesome.

00:25:29.371 --> 00:25:30.161
<v Chris>That's great.

00:25:30.161 --> 00:25:33.511
<v Jon>So workshop, canonical workshop is this super nice little thing that we actually

00:25:33.511 --> 00:25:38.376
<v Jon>imagined three years ago for basically confining...

00:25:39.340 --> 00:25:43.117
<v Jon>A board vendor SDK. So often if you're doing IoT development or board bring

00:25:43.117 --> 00:25:47.087
<v Jon>up enablement stuff, you end up with these kind of large SDKs,

00:25:47.087 --> 00:25:49.147
<v Jon>lots of files, lots of libraries, lots of utilities.

00:25:49.147 --> 00:25:52.967
<v Jon>And if you're working on boards from five different vendors,

00:25:52.967 --> 00:25:55.457
<v Jon>this stuff can end up all over your system and conflict and be a bit of a pain.

00:25:55.457 --> 00:25:58.758
<v Jon>So Workshops was basically a way of like, how can we wrap up an XD container

00:25:58.961 --> 00:26:02.450
<v Jon>in a nice declarative kind of YAML format that can be shared among teams?

00:26:02.670 --> 00:26:05.817
<v Jon>And so the idea is in your repo, you have a workshop.yaml, you type workshop

00:26:05.817 --> 00:26:08.507
<v Jon>launch, and you get the same developer environment as the rest of your teammates,

00:26:08.507 --> 00:26:11.517
<v Jon>makes much like a nix shell right much like a nix flake shell something like

00:26:11.517 --> 00:26:13.247
<v Jon>that could be interesting in a desktop.

00:26:13.247 --> 00:26:15.504
<v Chris>Environment for sharing those workshop environments around.

00:26:16.369 --> 00:26:19.427
<v Jon>And that's what our teams are doing and and some of our customers and users

00:26:19.427 --> 00:26:22.687
<v Jon>are starting to do so we've built this product and it sort of only recently

00:26:22.687 --> 00:26:23.846
<v Jon>occurred to me that we could,

00:26:24.624 --> 00:26:28.067
<v Jon>extend the set of interfaces and integrations that we have with workshops to

00:26:28.067 --> 00:26:32.077
<v Jon>make it very easy to say well when desktop apps launch in this workshop the

00:26:32.077 --> 00:26:35.537
<v Jon>app needs to show up on my desktop and make that very seamless.

00:26:35.537 --> 00:26:38.155
<v Jon>So that's the kind of, that's the get out of jail free card.

00:26:38.410 --> 00:26:43.067
<v Jon>But actually what's really important to me is that we get the first class experience, right?

00:26:43.067 --> 00:26:47.727
<v Jon>Because I don't love the idea of running a totally unconfined browser on my system.

00:26:47.727 --> 00:26:53.207
<v Jon>I certainly don't love the idea of running codecs or open code on my system

00:26:53.207 --> 00:26:56.147
<v Jon>where all my credentials are. Like, I think we all agree probably that that's

00:26:56.147 --> 00:27:02.112
<v Jon>not great hygiene. And the problem is it is very easy for people to do that today on Ubuntu.

00:27:02.449 --> 00:27:05.287
<v Jon>You have to know what you're doing. You have to know that you don't want to

00:27:05.287 --> 00:27:07.307
<v Jon>do that in order to not fall into that trap.

00:27:07.307 --> 00:27:12.409
<v Jon>And I think for me, one of the attractive things about Core Desktop is we don't,

00:27:12.931 --> 00:27:16.417
<v Jon>give our users the option to put themselves in that position.

00:27:16.417 --> 00:27:18.947
<v Jon>They will have the flexibility to get done what they need to get done,

00:27:18.947 --> 00:27:21.197
<v Jon>and it should feel smooth and seamless, and we shouldn't get in their way,

00:27:21.197 --> 00:27:24.127
<v Jon>but they can't accidentally install an agent that's going to root their system

00:27:24.127 --> 00:27:25.592
<v Jon>on the machine. It doesn't work.

00:27:27.862 --> 00:27:30.941
<v Jon>So that's kind of the thinking. And there's three use cases I outlined.

00:27:30.941 --> 00:27:33.330
<v Jon>One was the kind of Chromebook use case.

00:27:33.991 --> 00:27:37.041
<v Jon>Boot to a browser, lots of users. For lots of home users, that's going to be

00:27:37.041 --> 00:27:41.891
<v Jon>enough, I think. Just a very nicely optimized, accelerated browser that automatically

00:27:41.891 --> 00:27:43.871
<v Jon>updates in the background without you ever doing anything. Like,

00:27:43.871 --> 00:27:46.321
<v Jon>we can achieve that today, right now. Like, I could send you an image,

00:27:46.321 --> 00:27:47.245
<v Jon>you could boot it, it will work.

00:27:49.497 --> 00:27:53.481
<v Jon>The other two are interesting for two different reasons. So one of them is a

00:27:53.481 --> 00:27:56.851
<v Jon>developer workstation. So that's, you run VS Code, you've got workshops,

00:27:56.851 --> 00:27:58.511
<v Jon>You know, you do all your development in containers.

00:27:58.871 --> 00:28:02.221
<v Jon>We have a nice VS Code extension for Workshops. It's aware of all the Workshops

00:28:02.221 --> 00:28:04.863
<v Jon>in your machine. You can remotely attach to them, all that kind of stuff.

00:28:05.943 --> 00:28:09.511
<v Jon>And then the third one is a bit of a wild card, a bit of an underappreciated

00:28:09.511 --> 00:28:12.481
<v Jon>part of the world in Ubuntu so far, which is a gaming variant.

00:28:12.481 --> 00:28:16.919
<v Jon>So this is boot Ubuntu Core straight to Steam or the new Epic Games launcher.

00:28:17.284 --> 00:28:19.165
<v Chris>This one feels the most ambitious.

00:28:20.251 --> 00:28:22.431
<v Jon>Well, is it though? I mean, we have a Steam Snap and it works.

00:28:22.431 --> 00:28:27.281
<v Chris>You know what I mean? Tell me if I'm wrong. John, it feels a little bit like

00:28:27.281 --> 00:28:30.671
<v Chris>you're saying to Val, like, hey, take a look at this. You could be doing it

00:28:30.671 --> 00:28:33.149
<v Chris>this way. We got something over here you could use.

00:28:33.370 --> 00:28:35.059
<v Chris>That's the part that feels a bit ambitious to me.

00:28:37.044 --> 00:28:39.580
<v Jon>I'm not not saying that, but I'm also not saying that. And so,

00:28:39.824 --> 00:28:43.304
<v Jon>well, I guess what I'm trying to say is this is not about going after Valve.

00:28:43.304 --> 00:28:46.424
<v Jon>This is about we have a huge user base.

00:28:46.424 --> 00:28:46.624
<v Chris>Yeah, yeah.

00:28:47.365 --> 00:28:51.864
<v Jon>I would love, so my view is it is on us to make this thing so good that they want it.

00:28:52.183 --> 00:28:54.656
<v Jon>When they built SteamOS, we didn't have the thing they wanted,

00:28:55.585 --> 00:28:57.464
<v Jon>clearly, or they would have spoken to us about it, right?

00:28:58.272 --> 00:29:04.634
<v Jon>And I think if I were Valve, do I want to be maintaining a mirror of Arch Linux

00:29:04.634 --> 00:29:07.764
<v Jon>and all this kind of AB boot and Atomic update? Do I want to be maintaining that?

00:29:08.184 --> 00:29:11.627
<v Jon>Is that the USB for Valve? I don't know. Maybe it is. Maybe they are a Linux company.

00:29:12.167 --> 00:29:14.727
<v Jon>For me, we're going to build Ubuntu Core anyway.

00:29:15.923 --> 00:29:20.050
<v Jon>And people have desktop machines, increasingly desktop machines on Linux that they play games on.

00:29:20.503 --> 00:29:23.624
<v Jon>We already have a Steam Snap. We are going to have a Snap for the new launches

00:29:23.624 --> 00:29:25.571
<v Jon>that are coming out from other games companies.

00:29:25.931 --> 00:29:30.714
<v Jon>And so why not also have the ability to make that experience great on a Steam

00:29:30.714 --> 00:29:33.624
<v Jon>Deck or on a Legion Go or on a whatever, right?

00:29:34.344 --> 00:29:36.020
<v Jon>I think there's lots of opportunities there.

00:29:36.165 --> 00:29:40.908
<v Chris>It could make sense, too, from a desktop compatibility story for the non-Steam Deck devices as well.

00:29:41.111 --> 00:29:44.104
<v Chris>That's the bit that feels a bit ambitious, and I like that you're going for

00:29:44.104 --> 00:29:48.364
<v Chris>it. It's also going to push all of the edge cases on drivers and all of that stuff.

00:29:48.364 --> 00:29:52.564
<v Jon>That's kind of why I'm doing it, should I mean. So these three initial use cases,

00:29:52.564 --> 00:29:55.014
<v Jon>I've had people say, well, it seems a bit limited. Why just those three?

00:29:55.362 --> 00:29:59.024
<v Jon>But if you look at the three use cases, they are three use cases that are going

00:29:59.024 --> 00:30:04.184
<v Jon>to push the implementation in different ways and highlight to us where we still

00:30:04.184 --> 00:30:06.228
<v Jon>need to do work before we can make this the default.

00:30:06.588 --> 00:30:12.854
<v Jon>So my goal is that very soon, as in on the order of the next three to four weeks,

00:30:12.854 --> 00:30:15.964
<v Jon>there will be images that people can get their hands on. They actually are already

00:30:15.964 --> 00:30:17.600
<v Jon>out there hiding on GitHub if you look somewhere.

00:30:17.786 --> 00:30:20.264
<v Jon>But daily images that we are a bit more polished.

00:30:20.648 --> 00:30:25.584
<v Jon>By 2804, I would like us to be releasing Ubuntu core images alongside the standard

00:30:25.584 --> 00:30:28.020
<v Jon>Ubuntu. And then we'll see what happens after that.

00:30:28.223 --> 00:30:31.613
<v Chris>So let's say some guys found those images previously.

00:30:32.437 --> 00:30:37.505
<v Chris>And they took a look uh i was surprised i think the entire base for the desktop

00:30:37.505 --> 00:30:40.379
<v Chris>is only 20 snaps right now i thought it'd be like 100 snaps.

00:30:40.959 --> 00:30:45.275
<v Jon>Well therein lies the problem so that original proof of concept does indeed

00:30:45.275 --> 00:30:48.180
<v Jon>it's a few things that we have to sort of quite desperately fix uh

00:30:48.585 --> 00:30:51.705
<v Jon>one is that in that original proof of concept which we have basically taken

00:30:51.705 --> 00:30:56.885
<v Jon>and just lifted into 2026 so there's a few few patches that needed to be rebased on snap d there's,

00:30:57.525 --> 00:31:02.623
<v Jon>all of the snaps got lifted from core 22 up to core 26 but what the cheat is

00:31:02.907 --> 00:31:05.445
<v Jon>it kind of jams the whole of gnome into a single snap yeah okay,

00:31:06.165 --> 00:31:09.575
<v Jon>and that's obviously not the answer right so the whole desktop not even just

00:31:09.575 --> 00:31:14.015
<v Jon>the whole of gnome like essentially the whole desktop so our primary kind of

00:31:14.015 --> 00:31:16.984
<v Jon>piece of work over the next few months is going to be figuring out like what is,

00:31:17.605 --> 00:31:20.525
<v Jon>the correct decomposition of a desktop clearly we're going to have pipe wire

00:31:20.525 --> 00:31:24.165
<v Jon>and wire plumber do they live in a single snap do they live side by side in

00:31:24.165 --> 00:31:28.405
<v Jon>the same snap we're going to have things like lib camera we'll have gdm we'll

00:31:28.405 --> 00:31:30.811
<v Jon>have sddm where do they live also,

00:31:31.409 --> 00:31:34.765
<v Jon>for a login manager that needs quite a lot more permissions than a standard

00:31:34.765 --> 00:31:38.275
<v Jon>snap and so we'll have to do custom work in snap d to enable new interfaces

00:31:38.275 --> 00:31:40.465
<v Jon>and allow login managers right because.

00:31:40.645 --> 00:31:45.425
<v Chris>As of right now that the login manager actually is not snapped is it or it's not confined at the.

00:31:45.425 --> 00:31:50.115
<v Jon>Moment uh so that is one of the things on the images we've just made i believe

00:31:50.115 --> 00:31:54.325
<v Jon>is true so certainly for gdm we have managed to make that confine but with patches

00:31:54.325 --> 00:31:57.465
<v Jon>to snapd so it's a upstream version.

00:31:57.465 --> 00:31:59.335
<v Chris>Of snapd at the moment to make it work i.

00:31:59.335 --> 00:32:04.229
<v Jon>See yes so it's all very custom so the idea is so one of the reasons i haven't widely,

00:32:04.758 --> 00:32:08.605
<v Jon>distributed those images and the build tooling is because we're just doing some work there's a new,

00:32:09.076 --> 00:32:13.035
<v Jon>tool that we have been building in alongside all of our other craft tools called

00:32:13.035 --> 00:32:16.875
<v Jon>image craft image craft much like snap craft and rock craft will be a single

00:32:16.875 --> 00:32:20.338
<v Jon>yaml format if you know those formats it will look incredibly familiar to you

00:32:20.779 --> 00:32:24.477
<v Jon>and we have a working image craft for Ubuntu core desktop which is,

00:32:25.603 --> 00:32:29.168
<v Jon>beautiful like so much nicer than anything i've ever seen to build an ubuntu

00:32:29.168 --> 00:32:31.025
<v Jon>image and as soon as that is ready,

00:32:31.623 --> 00:32:36.058
<v Jon>essentially it will be possible for anybody to cut their own custom image custom

00:32:36.058 --> 00:32:39.658
<v Jon>ubuntu core desktop image by editing like a hundred line yaml file which is

00:32:39.658 --> 00:32:44.028
<v Jon>kind of wild that it's it's almost in the kind of almost as easy to cut your

00:32:44.028 --> 00:32:46.468
<v Jon>own images nixos kind of territory declarative.

00:32:46.468 --> 00:32:48.348
<v Chris>Images i mean i love it all right all.

00:32:48.348 --> 00:32:49.555
<v Jon>Right yeah yeah.

00:32:49.769 --> 00:32:52.928
<v Chris>Okay so it sounds like you're going to be hitting a lot of the edges that will

00:32:52.928 --> 00:32:59.098
<v Chris>be pushing probably on snap and snap d itself to get here yeah well that's probably almost worth.

00:32:59.098 --> 00:33:03.098
<v Jon>It and i mean so we have work in the kernel to do we have work in app armor

00:33:03.098 --> 00:33:06.298
<v Jon>to do we have work in snap d to do we likely will have to patch bits of the

00:33:06.298 --> 00:33:09.958
<v Jon>desktop itself like this is not something that is going to land in six months

00:33:10.091 --> 00:33:12.860
<v Jon>right and it is going to be quite the challenge but i,

00:33:13.749 --> 00:33:18.148
<v Jon>i have to believe that this is the future of ubuntu if you look at what is going

00:33:18.148 --> 00:33:22.968
<v Jon>on in the world right now with security and agents and and confidential compute

00:33:22.968 --> 00:33:27.128
<v Jon>and verified boot, measured boot, I have to believe that this is the answer.

00:33:27.568 --> 00:33:32.198
<v Jon>There are so many of those things that we can do to an extent on traditional

00:33:32.198 --> 00:33:35.570
<v Jon>Ubuntu, but we'll always be hampered by the fact that the file system is kind of floppy.

00:33:36.057 --> 00:33:39.378
<v Jon>Every process can kind of access everything, modular some file system permissions

00:33:39.378 --> 00:33:40.318
<v Jon>and some AppArmor rules.

00:33:40.968 --> 00:33:43.406
<v Jon>And I think the way we tidy that up is with Core.

00:33:43.778 --> 00:33:48.448
<v Wes>I mean, it seems like we started this interview talking about the security story, right?

00:33:48.448 --> 00:33:52.008
<v Wes>And there is a security story with this change. I think maybe also there's a

00:33:52.008 --> 00:33:56.108
<v Wes>velocity story because the securities have kind of is also moving faster,

00:33:56.108 --> 00:33:59.867
<v Wes>right? So does core change what you can do and how you can deliver updates?

00:34:00.779 --> 00:34:03.351
<v Jon>Yeah, I mean, firstly, most of the system will be on autopilot.

00:34:03.693 --> 00:34:06.776
<v Jon>Like, you know, snaps update in the background automatically.

00:34:06.776 --> 00:34:09.536
<v Jon>We can choose that cadence. They also have this nice property where you can

00:34:09.536 --> 00:34:15.916
<v Jon>say, well, I want to be on Ubuntu 2604, but I want Gnome from 2804 or from 2710, for example.

00:34:15.916 --> 00:34:19.796
<v Jon>And that's quite hard to achieve on a normal Ubuntu system without doing quite

00:34:19.796 --> 00:34:23.786
<v Jon>messy things with apt that might result in you wedging your system with a snap.

00:34:24.226 --> 00:34:27.056
<v Jon>You can just say, actually, I want to point the desktop stack at a different

00:34:27.056 --> 00:34:29.526
<v Jon>track and pull that in. And there's no reason why it shouldn't work.

00:34:31.206 --> 00:34:35.086
<v Jon>Same with for example lib camera and pipewire so often one of the things that

00:34:35.086 --> 00:34:40.366
<v Jon>happens is users of the lts as we're getting towards the next lts so 18 months

00:34:40.366 --> 00:34:41.838
<v Jon>nearly two years after the last one

00:34:42.215 --> 00:34:46.743
<v Jon>they download the lts that is currently supported and the shiny new camera module that was just,

00:34:47.219 --> 00:34:50.865
<v Jon>just built six months ago doesn't have support because it's got the wrong version of lib camera,

00:34:51.498 --> 00:34:53.599
<v Jon>maybe the wrong kernel version whereas with,

00:34:54.400 --> 00:34:58.646
<v Jon>with core it's much easier to kind of pick and choose bits and and the oems

00:34:58.646 --> 00:35:01.289
<v Jon>will be able to do the same so dell would be able to say for example

00:35:01.609 --> 00:35:05.636
<v Jon>ship their new laptop with the 2604 lts but in their image they could pick up

00:35:05.636 --> 00:35:08.536
<v Jon>the snaps and have the support for that camera without having to do kind of

00:35:08.536 --> 00:35:11.596
<v Jon>like a hacked up frank and buntu thing that's really hard to support right some custom.

00:35:11.596 --> 00:35:15.726
<v Wes>Right oh it sounds like a much more composable system that's impressive.

00:35:15.726 --> 00:35:18.478
<v Jon>That's exactly the word i would use it's composable.

00:35:18.664 --> 00:35:23.290
<v Brent>John with this aggressive timeline you mentioned 2804 as being the default.

00:35:23.911 --> 00:35:25.186
<v Jon>No not for the default,

00:35:27.386 --> 00:35:32.556
<v Jon>so i i haven't yet said this publicly but i don't see any harm in doing it other

00:35:32.556 --> 00:35:35.496
<v Jon>than perhaps raising the cortisol levels of my team slightly so i would like

00:35:35.496 --> 00:35:38.940
<v Jon>the images to be available for people to play with in 2804,

00:35:39.620 --> 00:35:44.066
<v Jon>my like stretchy stretchy stretch goal is to have this ready for being the default

00:35:44.066 --> 00:35:47.936
<v Jon>in 304 but i would like to caveat that with that is an incredibly aggressive

00:35:47.936 --> 00:35:50.596
<v Jon>timeline given the amount of work we have to do what a great release that.

00:35:50.596 --> 00:35:53.766
<v Chris>Would be what a great number that would be that's so great.

00:35:53.766 --> 00:35:59.181
<v Jon>I love that ambition right uh and so that's what i'd like to do now,

00:36:01.242 --> 00:36:05.430
<v Jon>I think the reception has been really interesting, more positive than I thought

00:36:05.430 --> 00:36:08.230
<v Jon>when you say to someone, hey, you know those snaps that Reddit loves?

00:36:08.230 --> 00:36:10.630
<v Jon>We're going to put them everywhere. It's the only way you can install stuff.

00:36:12.266 --> 00:36:15.296
<v Jon>But I think in reality, the narrative is starting to shift there.

00:36:15.505 --> 00:36:18.651
<v Jon>You know, I think I've said this before, and I'll say it again.

00:36:19.011 --> 00:36:23.590
<v Jon>Having explored the Boot C ecosystem for some time, I spent a long time running

00:36:23.590 --> 00:36:27.960
<v Jon>Nix, even while working at Canonical. My first three and a half years at Canonical,

00:36:27.960 --> 00:36:29.408
<v Jon>I was daily driving NixOS.

00:36:31.236 --> 00:36:33.489
<v Jon>The things that Snaps are good at, they're very, very good at.

00:36:33.715 --> 00:36:37.940
<v Jon>And the things they're not good at are not existential limitations.

00:36:37.940 --> 00:36:39.613
<v Jon>They're things that we have yet to implement.

00:36:39.834 --> 00:36:44.920
<v Jon>And I think one of the reasons we haven't implemented them is because it hasn't

00:36:44.920 --> 00:36:46.509
<v Jon>been the goal to make it the default.

00:36:46.631 --> 00:36:51.415
<v Jon>And now I am going to be orienting the teams internally very much towards this goal.

00:36:53.521 --> 00:36:57.113
<v Jon>This is absolutely the focus for the Ubuntu Engineering. Org is going to be landing this.

00:36:58.170 --> 00:37:00.460
<v Jon>So maybe that changes the calculus

00:37:00.460 --> 00:37:03.116
<v Jon>slightly. The SnapD team is also in the best shape I've ever seen it.

00:37:03.470 --> 00:37:06.210
<v Jon>The leads there are doing a phenomenal job. They're very excited.

00:37:07.429 --> 00:37:10.592
<v Jon>And so I have to believe that this is possible.

00:37:10.924 --> 00:37:18.130
<v Brent>Okay. Reframing then, 30.04 as the default, given that still accelerated timeline

00:37:18.130 --> 00:37:24.250
<v Brent>for something so, let's say, different than current Ubuntu, it's going to be

00:37:24.250 --> 00:37:25.610
<v Brent>snaps everywhere, as you mentioned.

00:37:26.365 --> 00:37:28.010
<v Brent>Yeah. What does that mean for

00:37:28.010 --> 00:37:34.990
<v Brent>the Snap infrastructure and delivering Snaps to users in a reliable way?

00:37:34.990 --> 00:37:40.510
<v Brent>Is that obviously a backend that's going to need to scale, but do you have ambitions

00:37:40.510 --> 00:37:42.137
<v Brent>to have that backend be Snaps as well?

00:37:44.319 --> 00:37:49.375
<v Jon>Yes. It's no secret that we have had our fair share of infrastructure difficulties over the last year.

00:37:49.664 --> 00:37:55.143
<v Jon>Some mostly inflicted by some bad actors hurling traffic at us in all kinds

00:37:55.143 --> 00:37:56.603
<v Jon>of shapes and sizes at critical points.

00:37:56.903 --> 00:38:00.745
<v Jon>Some of it is our fault, and we're working hard to fix that.

00:38:01.064 --> 00:38:04.103
<v Jon>We have quite a lot of new infrastructure coming online over the coming weeks

00:38:04.103 --> 00:38:06.063
<v Jon>and indeed a plan on how we will

00:38:06.063 --> 00:38:10.724
<v Jon>do a more comprehensive job of global distribution of snaps if you will

00:38:11.118 --> 00:38:16.500
<v Jon>so more points of presence in more parts of the world the store itself is already,

00:38:17.039 --> 00:38:19.993
<v Jon>quite scalable it's built in such a way that i'm very confident we'll be able

00:38:19.993 --> 00:38:23.373
<v Jon>to scale it it's already i mean it's grown arms and legs it's no longer really

00:38:23.373 --> 00:38:27.634
<v Jon>the snap store it's the snap store it's the charm store It's the image store.

00:38:28.503 --> 00:38:33.603
<v Jon>There's a bunch of store backends that all essentially collect artifacts from

00:38:33.603 --> 00:38:38.243
<v Jon>RockCraft, CharmCraft, SnapCraft, ImageCraft, SDKCraft, etc.

00:38:38.623 --> 00:38:43.986
<v Jon>So the underlying engineering there, I think, is strong.

00:38:44.346 --> 00:38:49.433
<v Jon>How we deploy it and how we scale it to satisfy this is an obvious question,

00:38:49.433 --> 00:38:51.224
<v Jon>but a question to which I think we have an answer.

00:38:51.410 --> 00:38:55.961
<v Chris>Sure, sure. I think what I what I always think is absolutely wild about what

00:38:56.228 --> 00:39:00.738
<v Chris>you do at Canonical as a company is these just absolute insane support timelines,

00:39:01.226 --> 00:39:03.408
<v Chris>for enterprise customers that absolutely demand it.

00:39:03.728 --> 00:39:09.852
<v Chris>And it feels like if you're lucky and you get there, then like the 2030 versions,

00:39:10.328 --> 00:39:16.623
<v Chris>of an Ubuntu LTS could be versions that are truly supportable for a really,

00:39:16.623 --> 00:39:20.260
<v Chris>really, really long time in a way that's actually sustainable by the company.

00:39:20.893 --> 00:39:23.713
<v Chris>And that just is clearly a feature enterprises want. So, yeah,

00:39:23.713 --> 00:39:27.763
<v Chris>we've been talking a lot about the desktop, but this has to totally change the

00:39:27.763 --> 00:39:32.155
<v Chris>game for LTS enterprise support once they start making the transition, right? Right.

00:39:33.374 --> 00:39:36.642
<v Jon>I think so. And I think the cell for Ubuntu core is kind of more clear in the

00:39:36.642 --> 00:39:40.682
<v Jon>enterprise setting. So I want to be very clear that it is absolutely my intention

00:39:40.682 --> 00:39:44.583
<v Jon>to make this great for the tinkerers, the hackers, the Linux enthusiasts. I am one.

00:39:44.862 --> 00:39:47.242
<v Jon>Do you know what I mean? And all the time I'm doing this job,

00:39:47.242 --> 00:39:49.722
<v Jon>I'm somewhat committed to using Ubuntu and I don't want to build a thing I don't

00:39:49.722 --> 00:39:53.862
<v Jon>want to use. We've had nerdy conversations about the weird crimes I used to

00:39:53.862 --> 00:39:56.752
<v Jon>commit with NixOS and Arch and all kinds of other things. I don't want to build

00:39:56.752 --> 00:39:57.701
<v Jon>a thing I don't want to use.

00:39:58.582 --> 00:40:03.952
<v Jon>But I think the cell for enterprise is much clearer a system that where every

00:40:03.952 --> 00:40:05.277
<v Jon>application is confined

00:40:05.689 --> 00:40:08.862
<v Jon>there are very clear models about what every binary on the system can and can't

00:40:08.862 --> 00:40:13.012
<v Jon>do it's easy to roll out updates completely automatically the updates are atomic

00:40:13.012 --> 00:40:14.742
<v Jon>they're transactional right the,

00:40:15.242 --> 00:40:18.512
<v Jon>user user data is kind of backed up and snapshotted before apps are updated

00:40:18.512 --> 00:40:20.712
<v Jon>there's this kind of composability of okay well,

00:40:21.177 --> 00:40:24.762
<v Jon>my my workstations over there all have nvidia gpus in them because they're the

00:40:24.762 --> 00:40:27.842
<v Jon>ml people and the servers over here have melanux cards in them and they need

00:40:27.842 --> 00:40:31.254
<v Jon>something weird in the Enit ID, all of those problems,

00:40:32.376 --> 00:40:34.982
<v Jon>should be easier to solve with core.

00:40:35.115 --> 00:40:39.147
<v Chris>And then there's the application support levels too like all of that too yeah that's.

00:40:39.147 --> 00:40:44.147
<v Jon>Very right i think especially like legacy in quotes applications yeah you know

00:40:44.147 --> 00:40:45.527
<v Jon>the the whole point about snaps

00:40:45.527 --> 00:40:49.540
<v Jon>of course is they bring their runtime the base with them and so it is

00:40:49.969 --> 00:40:53.737
<v Jon>eminently possible to keep either very old versions of software working on very

00:40:53.737 --> 00:40:57.587
<v Jon>new linux or very new versions of software working on very old linux and the

00:40:57.587 --> 00:40:59.717
<v Jon>whole point is that the machinery takes care of that.

00:40:59.717 --> 00:41:03.948
<v Jon>And we see, like, that is something that is proven. Like, I am happy to be,

00:41:04.499 --> 00:41:08.357
<v Jon>you know, I'm happy for people to dispute snaps on the desktop where they,

00:41:08.717 --> 00:41:12.632
<v Jon>you know, I don't want to minimize that people have had bad experience with snaps on the desktop.

00:41:13.073 --> 00:41:15.467
<v Jon>I've seen apps that don't work. Some apps don't work. It's hard to make them

00:41:15.467 --> 00:41:19.917
<v Jon>work in the same way that, you know, you NixOS loving folks will recognize that

00:41:19.917 --> 00:41:22.917
<v Jon>sometimes packaging apps for Nix is hard. Like you have to patch them and they

00:41:22.917 --> 00:41:25.060
<v Jon>do unexpected things. And we have all of those problems.

00:41:25.734 --> 00:41:30.209
<v Jon>But I have to be honest with you, I run a basically stock Ubuntu system,

00:41:30.418 --> 00:41:33.227
<v Jon>and every single app that I interact with on a daily basis for the last year

00:41:33.227 --> 00:41:38.696
<v Jon>and a half has been a snap, and it has bitten me once or twice, and not for very long.

00:41:41.331 --> 00:41:45.509
<v Jon>And not only is support for snaps getting better, but the way that we understand

00:41:45.509 --> 00:41:46.931
<v Jon>them and facilitate them is getting better.

00:41:47.210 --> 00:41:50.999
<v Jon>And I think my hope is that we can build a system that's genuinely very compelling.

00:41:50.999 --> 00:41:52.789
<v Jon>Like I want an Ubuntu core home assistant.

00:41:53.050 --> 00:41:53.829
<v Chris>Yeah. No kidding.

00:41:54.019 --> 00:41:56.869
<v Jon>That automatically updates and snapshots the data and takes care of all the

00:41:56.869 --> 00:41:58.135
<v Jon>backups. Like I want that.

00:41:59.179 --> 00:42:03.644
<v Jon>And I think we can make something fun for the non-enterprise community too.

00:42:03.864 --> 00:42:07.409
<v Chris>Well, here's what I'm hearing. So we started talking about the recent security

00:42:07.409 --> 00:42:11.479
<v Chris>issues, and you mentioned the pipeline that you've been building out at Canonical

00:42:11.479 --> 00:42:13.083
<v Chris>to deliver patches faster.

00:42:13.489 --> 00:42:18.129
<v Chris>And then we talked about delivering Ubuntu core experience where individual

00:42:18.129 --> 00:42:19.779
<v Chris>components can be updated and swapped out.

00:42:19.779 --> 00:42:23.479
<v Chris>And with the rate of security issues we're seeing today, that just seems like

00:42:23.479 --> 00:42:26.889
<v Chris>a thing that not only enterprise users are going to want, but eventually regular

00:42:26.889 --> 00:42:29.729
<v Chris>users are going to appreciate the ability to have a stable base where those

00:42:29.729 --> 00:42:31.926
<v Chris>components can be updated when security issues come out.

00:42:32.326 --> 00:42:35.389
<v Chris>Like they're really, if you think about it, is a pretty complete security picture

00:42:35.389 --> 00:42:39.501
<v Chris>here from production of patches to deployment to end users that,

00:42:39.681 --> 00:42:41.504
<v Chris>you know, if you can execute

00:42:41.926 --> 00:42:45.559
<v Chris>in the right timeline, you may be meeting the market right where they're at

00:42:45.559 --> 00:42:48.532
<v Chris>when they realize they need something like this. So that's pretty exciting for you guys.

00:42:49.681 --> 00:42:54.076
<v Jon>Yeah. And we do have genuine use cases in the market with real customers,

00:42:54.076 --> 00:42:55.336
<v Jon>big customers, customers whose

00:42:55.336 --> 00:42:58.092
<v Jon>names you will definitely know where snaps have proven to be the thing.

00:42:58.255 --> 00:43:00.966
<v Jon>They were, they were reticent. They lean into it. We help them.

00:43:05.926 --> 00:43:08.606
<v Jon>And so, you know, I accept that there have been difficulties,

00:43:08.606 --> 00:43:13.726
<v Jon>but I also, I flatly reject the idea that they are just unsuitable for the desktop

00:43:13.726 --> 00:43:18.398
<v Jon>and they don't work because I have no evidence to support that in 2026.

00:43:18.648 --> 00:43:22.466
<v Chris>Sounds like you're going to try to prove it. You're going to try to prove it works.

00:43:22.466 --> 00:43:23.408
<v Jon>I'm not going to try, Chris.

00:43:25.226 --> 00:43:28.796
<v Chris>I love it, John. Very good. Well, thank you so much for coming on and updating

00:43:28.796 --> 00:43:30.676
<v Chris>us on everything. You guys have been super busy.

00:43:30.686 --> 00:43:35.786
<v Chris>There's been a lot going on. And we're absolutely going to follow the new core

00:43:35.786 --> 00:43:38.246
<v Chris>work with super interest.

00:43:38.246 --> 00:43:40.796
<v Chris>We're going to be trying it. We've already pulled down the images and been poking

00:43:40.796 --> 00:43:44.796
<v Chris>around. So we're already pretty excited. So keep up the great work,

00:43:44.796 --> 00:43:45.837
<v Chris>John. And thank you for joining us.

00:43:46.133 --> 00:43:47.463
<v Jon>Thank you very much for having me. I appreciate it.

00:44:00.239 --> 00:44:04.926
<v Brent>Canonical has introduced Mina, an open source privacy focused speech to text

00:44:04.926 --> 00:44:11.066
<v Brent>tool that runs entirely on your own Linux desktop without requiring cloud services.

00:44:12.685 --> 00:44:15.385
<v Chris>And you can get your hands on it right now.

00:44:15.623 --> 00:44:16.180
<v Brent>Right now.

00:44:16.778 --> 00:44:21.149
<v Chris>It's not installed by default on Ubuntu 26.10, but it is very easy to get up and going.

00:44:21.265 --> 00:44:22.954
<v Wes>Yeah, technical preview, I think, right?

00:44:23.088 --> 00:44:23.676
<v Chris>Mm-hmm.

00:44:23.676 --> 00:44:24.686
<v Wes>Technology preview.

00:44:24.686 --> 00:44:28.146
<v Chris>It's a snap, obviously, when you try it on Ubuntu. I think the goal is to try

00:44:28.146 --> 00:44:33.421
<v Chris>to have this thing in production shape by 2804, which will be the next LTS.

00:44:34.832 --> 00:44:38.355
<v Chris>And you can also get it installed outside of Ubuntu if you'd like.

00:44:39.225 --> 00:44:44.734
<v Chris>Like Brent said, it is entirely local. Speech recognition happens on your device. It's offline capable.

00:44:45.431 --> 00:44:48.229
<v Chris>And it supports multiple different backends, depending on the best fit for your

00:44:48.229 --> 00:44:50.592
<v Chris>hardware. And hardware accelerators if you got it.

00:44:50.940 --> 00:44:54.417
<v Brent>It feels to me like they've really been listening to their crowd with this one.

00:44:55.139 --> 00:45:00.029
<v Brent>Going all local is, of course, going to get the, well, dear folks of ours like

00:45:00.029 --> 00:45:04.679
<v Brent>PJ, who really, really, you know, that counts for a lot of people.

00:45:04.679 --> 00:45:07.914
<v Brent>So I feel like they're listening to their crowd, or at least our crowd.

00:45:08.558 --> 00:45:14.009
<v Chris>It feels like baby steps to me. But voice dictation is kind of,

00:45:14.009 --> 00:45:17.879
<v Chris>of all of the different local models that are pretty easy to run on different,

00:45:18.359 --> 00:45:20.989
<v Chris>grades of hardware, voice dictation is kind of where we're at.

00:45:20.989 --> 00:45:22.670
<v Chris>It's like the best showcase for that.

00:45:23.280 --> 00:45:26.159
<v Wes>Yeah, they've got it pretty nicely set up, especially if you're on Ubuntu.

00:45:26.159 --> 00:45:29.249
<v Wes>There's a wide, you know, the most recent few releases all support it because

00:45:29.249 --> 00:45:32.549
<v Wes>you can just do it in strictly confined snaps. So each piece,

00:45:32.549 --> 00:45:35.104
<v Wes>you know, there's Mina, Mina Whisper, Mina Parakeet.

00:45:35.302 --> 00:45:40.619
<v Wes>So you can have the inference side just attached via Snap. And Snap confinement

00:45:40.619 --> 00:45:43.991
<v Wes>is useful if you want to make sure that this kind of data is kept where it needs to go.

00:45:44.258 --> 00:45:47.109
<v Chris>Now, you can also install it by building it. You know, it's a Python app.

00:45:47.109 --> 00:45:49.259
<v Chris>You don't have to use Snaps if you don't want to.

00:45:49.719 --> 00:45:53.579
<v Wes>Yeah, it's got two parts. There's Python on the server. That does the inference

00:45:53.579 --> 00:45:57.615
<v Wes>part, right? So it's got adapters for Whisper, Parakeet, Fun ASR.

00:45:57.946 --> 00:46:01.005
<v Wes>You just kind of do pip extra. It's got UV in the repo there.

00:46:01.899 --> 00:46:04.354
<v Wes>All very standard, supports CPU as the default target.

00:46:05.619 --> 00:46:10.159
<v Wes>NVIDIA GPUs are also supported. There's plans to do other accelerators down the road.

00:46:10.159 --> 00:46:10.579
<v Brent>Nice.

00:46:10.579 --> 00:46:12.685
<v Wes>And then there's a client, which is Rust.

00:46:13.339 --> 00:46:14.246
<v Chris>Oh, wait for it.

00:46:14.908 --> 00:46:15.599
<v Wes>Yeah, come on.

00:46:15.883 --> 00:46:16.684
<v Chris>Sorry, sorry.

00:46:17.433 --> 00:46:24.341
<v Wes>Rust. Yeah, Mina Desktop Demon. No GTK, just Tokyo ZBus GetText,

00:46:24.637 --> 00:46:26.634
<v Wes>plus a little Mina Testbed CLI.

00:46:27.359 --> 00:46:32.469
<v Wes>There are GUI crates, too. So there is the pill, I think they call it,

00:46:32.469 --> 00:46:33.309
<v Wes>that you can get for the GUI.

00:46:33.359 --> 00:46:36.599
<v Wes>I haven't tried that yet. That needs GTK4 living with you.

00:46:37.761 --> 00:46:41.047
<v Wes>Kind of the interesting part on text injection, how it actually works,

00:46:41.772 --> 00:46:47.559
<v Wes>it's got the IBUS injector, which speaks the IBUS-DBUS wire protocol via that ZBUS library.

00:46:48.567 --> 00:46:54.117
<v Wes>No FFI. Registers the component and the engine and then becomes the global engine

00:46:54.117 --> 00:47:00.138
<v Wes>during dictation. So it hooks kind of right into how the system expects this to work and takes over.

00:47:00.463 --> 00:47:04.907
<v Wes>Yeah. It also has that, because of that, it has the smarts to reject password and pin fields.

00:47:04.907 --> 00:47:05.677
<v Brent>Oh, that's cool.

00:47:05.747 --> 00:47:07.187
<v Wes>I don't know if that's configurable. Mm-hmm.

00:47:07.802 --> 00:47:11.713
<v Chris>So functionally, the way this works is it's kind of like a push-to-talk system.

00:47:12.108 --> 00:47:16.777
<v Chris>And it sets up a hotkey on your box, and then it inputs the text into whatever

00:47:16.777 --> 00:47:18.569
<v Chris>is an active input field.

00:47:18.819 --> 00:47:25.117
<v Chris>And I have an Aurora Silverblue slash system here, and I've installed it on this system.

00:47:25.535 --> 00:47:30.167
<v Chris>And if I hold down super shift T, it should start working, and then it should

00:47:30.167 --> 00:47:33.208
<v Chris>transcribe and input whatever I say. So I'll give it a shot here.

00:47:33.579 --> 00:47:35.237
<v Chris>So what did I say? Super shift T?

00:47:35.237 --> 00:47:35.913
<v Wes>That's right.

00:47:37.277 --> 00:47:41.977
<v Chris>Okay i am now speaking and we'll see if it dictates whatever i say into the

00:47:41.977 --> 00:47:47.575
<v Chris>thingy hopefully it does and i'm going to release the super shift t now nothing happened.

00:47:47.726 --> 00:47:51.007
<v Wes>I don't see notifications because i was going to say if you don't install the gui part.

00:47:51.007 --> 00:47:52.097
<v Chris>You don't get the notification.

00:47:52.097 --> 00:47:56.207
<v Wes>Well no uh the main interface is system notifications which worked pretty well

00:47:56.207 --> 00:48:01.635
<v Wes>um i got it running on my system in plasma and so just pop up and say hey now transcribing and then.

00:48:01.838 --> 00:48:04.507
<v Chris>When it was done it would okay i'm going to try it again i because i do see

00:48:04.507 --> 00:48:07.357
<v Chris>it in my system tray i'm gonna try it again what i say was shift super shift

00:48:07.357 --> 00:48:12.287
<v Chris>t super shift t okay i'm trying you again and i do see my system tray icon changing,

00:48:12.804 --> 00:48:15.021
<v Chris>and i have firefox set as the input window,

00:48:16.548 --> 00:48:17.477
<v Chris>it didn't work this time.

00:48:17.715 --> 00:48:19.474
<v Wes>And for mine you didn't hold it it was just.

00:48:19.654 --> 00:48:22.377
<v Chris>Oh should i do that oh really i don't hold it maybe i'm doing it wrong.

00:48:22.377 --> 00:48:24.787
<v Wes>Yeah like triggers it it's press to talk again.

00:48:24.787 --> 00:48:27.879
<v Chris>Okay so with hex it's push to talk maybe that's what i'm thinking about,

00:48:29.672 --> 00:48:33.515
<v Chris>Okay, now I've just pressed it once. Oh, yeah. Oh, yeah, that was it.

00:48:34.123 --> 00:48:37.600
<v Chris>You only press it once. So it was capturing all of that,

00:48:39.673 --> 00:48:44.404
<v Chris>the entire time we were speaking. It was capturing all of that. So let's try it again.

00:48:45.623 --> 00:48:49.790
<v Chris>Okay, let's try it one more time. So I'll do super shift T, and then we'll see

00:48:49.790 --> 00:48:52.578
<v Chris>how it does, right? Super shift T.

00:48:54.117 --> 00:48:59.920
<v Chris>I am the captain of the USS Linux Unplugged, and I am trying to transcribe my

00:48:59.920 --> 00:49:01.756
<v Chris>text for future alien races.

00:49:02.458 --> 00:49:06.975
<v Chris>Then do I press it again to stop? Yep. Okay. Super shift T.

00:49:08.140 --> 00:49:10.818
<v Chris>Yeah, there it goes. Boom. Make it so it captured the whole thing.

00:49:12.600 --> 00:49:17.533
<v Chris>I am the captain of USS Linux Unplugged and I am trying to transcribe my text for future alien races.

00:49:17.807 --> 00:49:21.062
<v Chris>Then do I press it again to stop? Yep. Okay. Super shift.

00:49:22.137 --> 00:49:26.630
<v Wes>There we go. Yeah, I tested it over here earlier and from you talking way over there.

00:49:26.630 --> 00:49:27.250
<v Chris>You picked it up?

00:49:27.250 --> 00:49:27.478
<v Wes>Yeah.

00:49:27.622 --> 00:49:29.299
<v Chris>Huh. It's pretty quick.

00:49:30.460 --> 00:49:34.450
<v Wes>By default, it'll just auto-download Whisper Tiny. But you can change that.

00:49:34.450 --> 00:49:37.420
<v Wes>You can point it at local stuff if you want. It can do parakeet, too.

00:49:40.509 --> 00:49:44.270
<v Chris>I kind of prefer push-to-talk, but I think I could learn that. That seems fine to me.

00:49:44.839 --> 00:49:47.270
<v Chris>The thing is, I want to do it one more time. Brent, you try it,

00:49:47.270 --> 00:49:51.880
<v Chris>okay? And I want to watch while you do it. I want to watch what my CPU usage

00:49:51.880 --> 00:49:58.161
<v Chris>is. So before we start, my CPU usage is at a baseline of around 3.9% at the high end, all right?

00:49:58.521 --> 00:50:01.627
<v Chris>So I'm going to press it, super shift T, and then you speak now.

00:50:02.016 --> 00:50:05.348
<v Brent>Hello, I'm here reporting how many tabs I currently have open,

00:50:05.749 --> 00:50:10.961
<v Brent>but the counter that I'm using doesn't actually go that high, so I have no idea.

00:50:12.512 --> 00:50:18.169
<v Chris>Okay, super shift T again. And I saw it look like, I'm going to run it one more

00:50:18.169 --> 00:50:21.119
<v Chris>time, but it looked like CPU usage was only 10% there for a second.

00:50:21.119 --> 00:50:22.775
<v Chris>That doesn't seem right. Maybe that capture was too slow.

00:50:23.071 --> 00:50:24.145
<v Wes>It does, I think, use...

00:50:24.551 --> 00:50:24.939
<v Chris>The GPU?

00:50:25.259 --> 00:50:28.329
<v Wes>No, it's aimed at CPU by default. So they have kind of put some thought into that.

00:50:29.426 --> 00:50:30.719
<v Chris>Okay, so they've put thought into...

00:50:30.819 --> 00:50:34.419
<v Wes>Because if it's, you know, they're going for some sort of like intent-driven

00:50:34.419 --> 00:50:38.129
<v Wes>Ubuntu maybe in the future. So they want, if you ever wanted it to be a widely

00:50:38.129 --> 00:50:41.329
<v Wes>deployed feature, you're going to need it to be able to run ideally right across

00:50:41.329 --> 00:50:43.939
<v Wes>a lot like whatever people have, even if they don't have a nice.

00:50:44.450 --> 00:50:48.699
<v Chris>Okay. So if you, by the way, if you're dictating and it loses focus, it stops dictating.

00:50:49.703 --> 00:50:52.629
<v Chris>All right. I'm going to run it one more time. I'm now using a plasma system

00:50:52.629 --> 00:50:58.045
<v Chris>monitor and I'm going to do, okay, I'm going to do some dictation here, boys. Super shift T.

00:50:59.119 --> 00:51:03.583
<v Chris>Okay. I'm doing one more real world test here and my CPU usage is at 24%.

00:51:03.873 --> 00:51:07.838
<v Chris>So we went from about 4% to 24% and I'm going to do super shift T to stop it.

00:51:08.923 --> 00:51:15.839
<v Chris>Oh, now the, okay. Okay, CPU spiked to 60% after I stopped it for just two seconds

00:51:15.839 --> 00:51:17.898
<v Chris>maybe, maybe at that much, and then it's done.

00:51:18.716 --> 00:51:22.841
<v Chris>So after you release it, it takes on this system about one to two seconds.

00:51:22.841 --> 00:51:27.079
<v Chris>And then it gives you the whole everything you said all at once. It's pretty quick.

00:51:27.329 --> 00:51:30.721
<v Wes>Yeah. So I think that's the sort of Rust part running. And then it calls over

00:51:30.721 --> 00:51:32.521
<v Wes>to the Python server to do the inference.

00:51:32.521 --> 00:51:36.321
<v Chris>I mean, I maybe. So, I mean, if you're being fair, at the very highest end,

00:51:36.321 --> 00:51:40.651
<v Chris>I paid a 20% CPU tax. But actually watching it, my CPU is bouncing around 17%

00:51:40.651 --> 00:51:41.831
<v Chris>without this running at the moment.

00:51:41.831 --> 00:51:43.161
<v Brent>So who knows?

00:51:44.201 --> 00:51:48.751
<v Chris>Actually pretty darn impressive. That is pretty freaking impressive.

00:51:48.751 --> 00:51:52.941
<v Chris>Fast too it doesn't feel it doesn't feel like my system's heavy like i don't

00:51:52.941 --> 00:51:55.561
<v Chris>feel like i'm using a ton of system resources to have that run.

00:51:55.561 --> 00:51:57.011
<v Wes>It seemed like you could just have it sitting there.

00:51:57.011 --> 00:51:59.210
<v Chris>Yeah which is a real sweet spot.

00:51:59.396 --> 00:52:04.991
<v Brent>Do you think it's smooth enough to you know move to a new web page go to a new

00:52:04.991 --> 00:52:09.221
<v Brent>entry for i don't know sending a message or recording something and just like boop,

00:52:09.810 --> 00:52:13.541
<v Brent>say it and then boop out because we've been doing like the slow experimenting

00:52:13.541 --> 00:52:16.230
<v Brent>version but how do you think that would translate to just everyday use.

00:52:16.602 --> 00:52:19.661
<v Chris>I think as long as you have the act as long as a text field is the active input

00:52:19.661 --> 00:52:22.021
<v Chris>box and it doesn't switch in the middle of dictation you're good to go.

00:52:22.021 --> 00:52:26.371
<v Wes>Yeah i had to work with slack and open code i would say you might eventually

00:52:26.371 --> 00:52:29.191
<v Wes>want something bigger than whisper tiny i had a.

00:52:29.191 --> 00:52:29.720
<v Chris>Few things.

00:52:29.871 --> 00:52:34.102
<v Wes>Like it kind of struggled with mina itself a bit and it got my name is west at one point.

00:52:34.857 --> 00:52:39.031
<v Chris>So the one nice thing about hex that i'd love to see and i don't have the gtk

00:52:39.031 --> 00:52:44.201
<v Chris>toolkit stuff to install to see if this is an option but with hex you can go

00:52:44.201 --> 00:52:47.541
<v Chris>in there and there's like a technical database and a common miss,

00:52:49.044 --> 00:52:52.541
<v Chris>transcribed words and you can you can put in there and say when you pick up

00:52:52.541 --> 00:52:56.481
<v Chris>this word insert this word instead and when you when it mistakes you know apt

00:52:56.481 --> 00:52:59.661
<v Chris>get for you know something else replace it with actual app dash get,

00:53:00.306 --> 00:53:02.711
<v Chris>and so i like that feature i don't know if this has it just because i don't

00:53:02.711 --> 00:53:06.611
<v Chris>have the gdk4 dependencies to show that but i think the performance of this

00:53:06.611 --> 00:53:08.996
<v Chris>might be better than hex having tried that recently.

00:53:09.141 --> 00:53:12.531
<v Wes>So So there's some interesting technical... I mean, so there's like the style,

00:53:12.531 --> 00:53:18.603
<v Wes>push to talk versus, you know, toggle on to talk or however Brent said it. In a way...

00:53:20.174 --> 00:53:24.674
<v Wes>They take kind of very different approaches. So Mina is like the Linux desktop,

00:53:24.959 --> 00:53:27.074
<v Wes>you know, kind of makes sense because it's coming from Canonical.

00:53:27.074 --> 00:53:30.944
<v Wes>Like it plays inside like the sort of the proper way to do it.

00:53:30.944 --> 00:53:34.856
<v Wes>Like you would expect it to be done. It's in the input method framework, iBus, Dbus.

00:53:35.315 --> 00:53:39.984
<v Wes>So the sort of correct desktop citizen approach. Hex bypasses all of it.

00:53:39.984 --> 00:53:40.784
<v Chris>Of course.

00:53:40.784 --> 00:53:45.574
<v Wes>X test, synthetic key events, clipboard paste on X11. W type on WL roots,

00:53:45.574 --> 00:53:48.260
<v Wes>Wayland. Remote desktop portal on GNOME and KDE.

00:53:49.543 --> 00:53:52.248
<v Wes>So sort of cruder, but compositor agnostic.

00:53:52.248 --> 00:53:52.608
<v Chris>Yeah.

00:53:52.608 --> 00:53:55.818
<v Wes>So I think that makes it, you know, because it also supports Mac and Windows.

00:53:55.818 --> 00:53:59.876
<v Chris>Yeah, that's, I guess, Hex's advantage there, but I don't care about that too much.

00:54:00.752 --> 00:54:04.378
<v Chris>I care about this. I care about it being a better Linux citizen.

00:54:04.378 --> 00:54:08.238
<v Wes>Yeah, Hex might be a little farther along in some ways and a little more, you know, developed.

00:54:08.238 --> 00:54:12.467
<v Chris>Especially with the annotation features. I think it kind of pulled ahead there, but who cares?

00:54:12.937 --> 00:54:20.178
<v Wes>And I think mine is maybe putting more thought into some of the privacy security architecture.

00:54:20.178 --> 00:54:24.608
<v Wes>Not that that's a problem in Hex, but just like they've taken this modular snap-based

00:54:24.608 --> 00:54:27.948
<v Wes>approach. They're really being careful about that kind of thing and integrating

00:54:27.948 --> 00:54:29.528
<v Wes>with these first-class protocols.

00:54:30.228 --> 00:54:34.268
<v Chris>And seemingly picking very good models. I don't know where Hex is on that,

00:54:34.268 --> 00:54:36.957
<v Chris>but I like the model flexibility with Manure, however you say it.

00:54:37.386 --> 00:54:39.678
<v Wes>Yeah, they both seem to have pretty good model flexibility, which is great.

00:54:39.678 --> 00:54:42.094
<v Chris>Yeah, that is true. That is true. Both of them seem to do.

00:54:44.248 --> 00:54:45.194
<v Chris>Better than I expected.

00:54:45.740 --> 00:54:49.048
<v Wes>Yeah i got i was able to get it running uh yeah it wasn't packaged for nix but

00:54:49.228 --> 00:54:52.548
<v Wes>yeah just a rust and a python which are both pretty standard and then on kde

00:54:52.548 --> 00:54:57.548
<v Wes>you just register like a global shortcut and then you can tie it immediately

00:54:57.548 --> 00:54:59.770
<v Wes>into the rust side of things the rust client and then,

00:55:00.664 --> 00:55:05.018
<v Wes>away you go i think there is a bug on some older firefoxes that it can interact

00:55:05.018 --> 00:55:09.227
<v Wes>weirdly with like it just won't show up or i think some people had firefox crash

00:55:09.540 --> 00:55:13.830
<v Wes>but that was fixed in recent firefoxes so just be updated there which you probably want to do anyway.

00:55:14.457 --> 00:55:17.243
<v Chris>I feel like this is a workflow for you Brad.

00:55:17.551 --> 00:55:24.735
<v Brent>I remember about a year and a half of go I after one of the shows said hey Chris I really,

00:55:25.729 --> 00:55:31.248
<v Brent>am trying to get working a way to just talk at my computer and I tried for a

00:55:31.248 --> 00:55:36.613
<v Brent>little bit and never got it there well they're doing the work for me so bring it on.

00:55:37.698 --> 00:55:41.515
<v Chris>You're going to, if you try this, you're going to find the brain dump aspect

00:55:41.515 --> 00:55:44.585
<v Chris>of it so useful, especially if you're working with a clanker in an open code

00:55:44.585 --> 00:55:50.625
<v Chris>session, because they're really good at parsing a brain dump into structured information.

00:55:50.625 --> 00:55:56.105
<v Chris>Like they're really good at that. So you can just blah, and then it cleans it all up. Boom.

00:55:56.453 --> 00:56:00.295
<v Brent>I think even for like an everyday task, like journaling or something like that,

00:56:00.295 --> 00:56:04.267
<v Brent>or capturing some kind of memory or a note, like where you just,

00:56:04.813 --> 00:56:08.445
<v Brent>you want it in text, but actually you just want a stream of consciousness.

00:56:09.005 --> 00:56:11.460
<v Brent>This is a perfect tool, especially if you're just sitting at your desk.

00:56:11.628 --> 00:56:15.483
<v Chris>Pretty good. I think if this is the direction they're going, it bodes well.

00:56:16.353 --> 00:56:19.845
<v Chris>You'd really have to find something. You'd really have to dig to find something

00:56:19.845 --> 00:56:22.342
<v Chris>you don't like about what they're doing here. You really have to dig.

00:56:23.044 --> 00:56:25.335
<v Chris>And the fact that you don't even have to use snaps if you don't like snaps you

00:56:25.335 --> 00:56:28.125
<v Chris>can't even complain about that but if you do use a snap it's really easy to

00:56:28.125 --> 00:56:32.657
<v Chris>get going a gpl3 good work guys good work we're very impressed.

00:56:43.913 --> 00:56:48.418
<v Brent>We received some wonderful feedback recently and there's a bit of a theme here

00:56:48.545 --> 00:56:53.495
<v Brent>what are you building a little bit of a building report going on here and we've

00:56:53.495 --> 00:56:55.575
<v Brent>got a first note from pedro,

00:56:57.997 --> 00:57:00.818
<v Brent>Pager says, hey there, Linux team. Aw, Drew, you're included.

00:57:01.143 --> 00:57:05.535
<v Brent>After reading back in August about the teenager that got his HP printer working

00:57:05.535 --> 00:57:12.045
<v Brent>on macOS with CloudCode, I tried something similar with a BioKey side-touch fingerprint reader,

00:57:12.440 --> 00:57:15.085
<v Brent>which was Windows only, to get it working on Linux.

00:57:16.618 --> 00:57:21.015
<v Brent>Working with CloudCode and Codex, I've now built a native Linux driver that

00:57:21.015 --> 00:57:25.395
<v Brent>lets me enroll a fingerprint and authenticate through the normal Fedora and

00:57:25.395 --> 00:57:28.240
<v Brent>KDE desktop tools. It's still experimental.

00:57:29.045 --> 00:57:30.469
<v Brent>And I'm testing it on my own hardware.

00:57:31.740 --> 00:57:35.865
<v Chris>That is so neat. I've been wondering if things like fingerprint readers,

00:57:35.865 --> 00:57:36.945
<v Chris>the other thing unlock would be.

00:57:36.945 --> 00:57:38.065
<v Wes>You know, this one doesn't work.

00:57:38.065 --> 00:57:42.352
<v Chris>I know. You know what would be amazing is I have an LTE adapter in one of those Nix books.

00:57:42.845 --> 00:57:43.055
<v Brent>Oh, yeah.

00:57:43.165 --> 00:57:46.325
<v Chris>But they don't support no Linux. I know. I love that.

00:57:46.805 --> 00:57:47.755
<v Wes>Go for them. Go for them.

00:57:47.765 --> 00:57:51.750
<v Brent>We're in like the golden age of fix the little thing that's been bothering me forever.

00:57:52.418 --> 00:57:53.294
<v Chris>Golden age, brother.

00:57:53.520 --> 00:57:54.915
<v Wes>Pedro has a reality check for us.

00:57:55.125 --> 00:57:57.096
<v Chris>Oh, no, really? Oh, it was going so well.

00:57:57.230 --> 00:58:02.118
<v Brent>Page was continuing. Getting there was a much longer effort than I actually expected.

00:58:02.582 --> 00:58:06.843
<v Brent>Read, it was brutal. Plenty of false starts and dead ends.

00:58:07.342 --> 00:58:11.875
<v Brent>This isn't something someone could simply vibe code without a background in

00:58:11.875 --> 00:58:13.175
<v Brent>software architecture.

00:58:13.906 --> 00:58:17.435
<v Brent>It's given me enormous respect for the people who brought unsupported hardware

00:58:17.435 --> 00:58:19.775
<v Brent>to Linux, particularly before these LLMs.

00:58:19.775 --> 00:58:20.845
<v Chris>Yeah, I know.

00:58:21.445 --> 00:58:25.795
<v Brent>Missing features and incomplete hardware support are still barriers to adoption

00:58:25.795 --> 00:58:30.085
<v Brent>and I hope projects like this encourage others to help close these gaps.

00:58:30.526 --> 00:58:36.348
<v Brent>Happy to talk about what worked, where AI fell short and show the driver in use best.

00:58:36.703 --> 00:58:42.415
<v Chris>Pedro Man, how great would that be to sit down over a meal with Pedro and chat about it?

00:58:42.415 --> 00:58:43.205
<v Brent>That's so fun You know.

00:58:43.205 --> 00:58:44.235
<v Chris>That'd be a great convo.

00:58:44.235 --> 00:58:46.020
<v Wes>What can I need to find a meetup location?

00:58:46.350 --> 00:58:46.763
<v Chris>Good idea,

00:58:48.729 --> 00:58:49.679
<v Chris>Wes, we want to take Anton?

00:58:49.679 --> 00:58:55.169
<v Wes>Yeah, Anton writes in, hey, Linux Unplugged Crew. I set up an Intel N150 mini

00:58:55.169 --> 00:58:59.239
<v Wes>PC as a home server with Jellyfin, Sonar, Radar, Browler, and a request app.

00:58:59.239 --> 00:58:59.889
<v Chris>Oh, nice.

00:58:59.889 --> 00:59:02.040
<v Wes>To simplify that stack, I built Torsure.

00:59:02.197 --> 00:59:03.857
<v Chris>Wait, this is the developer of Torsure?

00:59:04.322 --> 00:59:04.647
<v Wes>Yeah.

00:59:04.838 --> 00:59:05.448
<v Brent>Wow.

00:59:06.075 --> 00:59:09.877
<v Wes>One Docker container with one database and one interface made for the TV first.

00:59:10.103 --> 00:59:12.189
<v Wes>Version 1.0 came out on October 26th.

00:59:12.189 --> 00:59:15.779
<v Chris>I've been watching. Well, my clanker found it the day you launched this and

00:59:15.779 --> 00:59:18.884
<v Chris>alerted me about this and said, this is right up your alley. And it was right.

00:59:19.640 --> 00:59:23.099
<v Wes>A few details. Playback starts while the file downloads, fetching a few minutes

00:59:23.099 --> 00:59:26.329
<v Wes>ahead and stopping when you close the player. How much have we been talking about that?

00:59:26.329 --> 00:59:27.866
<v Chris>Love that so much.

00:59:28.892 --> 00:59:36.306
<v Wes>TV interface for the browser engine of LG TVs from 2020 with LG WebOS app and Magic Remote Pointer.

00:59:36.676 --> 00:59:41.513
<v Wes>Library Jellyfin plaques Cody can read with hard links so kept files take no extra space.

00:59:41.919 --> 00:59:45.622
<v Wes>On-the-fly GPU transcoding when a TV can't play a file.

00:59:53.564 --> 00:59:58.229
<v Chris>So for those that are not quite following, what this is solving is typically

00:59:58.229 --> 01:00:01.019
<v Chris>with the home media stack, if you really want the full automated,

01:00:01.019 --> 01:00:05.673
<v Chris>like backing up off the internet stack, you're looking at anywhere from three to five containers.

01:00:06.613 --> 01:00:11.279
<v Chris>It's a lot. This is doing it all in a single stack and providing the interface

01:00:11.279 --> 01:00:13.589
<v Chris>as well. Really impressive.

01:00:13.589 --> 01:00:15.302
<v Wes>Turning it into one focus product.

01:00:16.489 --> 01:00:18.739
<v Chris>It was already on my, I should be looking at this and following it.

01:00:18.739 --> 01:00:19.589
<v Wes>Thanks for writing in.

01:00:19.589 --> 01:00:19.749
<v Chris>Yes.

01:00:19.829 --> 01:00:20.319
<v Wes>That's awesome.

01:00:20.319 --> 01:00:23.620
<v Chris>Yes. That's really great. Thank you, Anton. Appreciate that.

01:00:23.905 --> 01:00:29.089
<v Chris>We'll put a link to Torsher, T-O-R-S-H-E-R, in the show notes.

01:00:29.936 --> 01:00:34.299
<v Chris>Koya writes in, hi, Chris West and Brent. Your Oops All Shells episodes seem

01:00:34.299 --> 01:00:39.207
<v Chris>like a good reason to mention Koya Shell, a hyperlink shell built by my boss, Stefan.

01:00:39.514 --> 01:00:43.919
<v Chris>It brings desktop controls, launcher, and notifications together with a shared

01:00:43.919 --> 01:00:48.509
<v Chris>theme from login to lock screen underneath the JavaScript UI on Koya's own GPU

01:00:48.509 --> 01:00:50.132
<v Chris>render without a browser underneath.

01:00:51.519 --> 01:00:55.349
<v Chris>That is nice. There's a live ISO to try it from. Great.

01:00:55.709 --> 01:01:01.039
<v Chris>You can try it out when it boots. The shell is CEC by four, so it's Creative Commons 4.0.

01:01:01.509 --> 01:01:04.290
<v Chris>Runtime is an open source, but it is free for non-commercial use.

01:01:05.143 --> 01:01:07.829
<v Chris>Would you be having a play? Interested to hear where it's among the shells you've

01:01:07.829 --> 01:01:10.483
<v Chris>discussed? Well, I would be interested in taking a look at this.

01:01:10.610 --> 01:01:13.809
<v Wes>Yeah, I saw this float through. I just thought, like, maybe we can see what

01:01:13.809 --> 01:01:14.668
<v Wes>it looks like. I don't know.

01:01:14.906 --> 01:01:18.039
<v Chris>I have been pretty happy with the recent shell setup, but I think there's room

01:01:18.039 --> 01:01:19.649
<v Chris>for improvement in terms of efficiency.

01:01:19.649 --> 01:01:20.688
<v Wes>It seems very clean.

01:01:21.048 --> 01:01:24.169
<v Chris>Yeah. I do like the way it looks a lot.

01:01:24.529 --> 01:01:28.169
<v Wes>And it just seemed like worth seeing because there are clearly folks out there

01:01:28.169 --> 01:01:30.689
<v Wes>also experimenting with the shells.

01:01:30.689 --> 01:01:31.779
<v Chris>We're building our own shells.

01:01:31.779 --> 01:01:32.619
<v Wes>It's a whole new thing.

01:01:32.619 --> 01:01:36.593
<v Chris>It's absolutely crazy. It's absolutely crazy, and I'm here for it.

01:01:36.953 --> 01:01:37.998
<v Chris>I'm here for that craziness.

01:01:38.770 --> 01:01:42.375
<v Chris>Thank you very much, Koya. Or not Koya. The project name is Koya.

01:01:42.834 --> 01:01:43.931
<v Chris>Thank you very much for sending that in.

01:01:44.732 --> 01:01:50.569
<v Chris>Gentlemen, we did get a couple of uplinks as well, and we have a few that I

01:01:50.569 --> 01:01:54.239
<v Chris>have to play really we fell behind because I meant to play some more in we're.

01:01:54.239 --> 01:01:54.809
<v Wes>New at this.

01:01:55.189 --> 01:02:00.458
<v Chris>I know we're figuring it out so we'll let the agent pick one and we're going to clank away,

01:02:02.061 --> 01:02:09.530
<v Chris>All right. Up first is Matthew. Matthew is calling in about an agentic installer, I believe. Let's see.

01:02:09.570 --> 01:02:11.090
<v Clips>Hey, guys. My name is Matt Mangano.

01:02:11.090 --> 01:02:11.450
<v Chris>Hey, Matt.

01:02:11.450 --> 01:02:16.030
<v Clips>I'm an aerospace engineer by trade, and I work with AI workflows and helping,

01:02:16.690 --> 01:02:20.655
<v Clips>the company I work with work through that process.

01:02:21.154 --> 01:02:27.040
<v Clips>And I also am a big open cloth fan, try to contribute a little bit here and there.

01:02:27.331 --> 01:02:38.784
<v Clips>But I have just built a small little project where I just embedded an agent into a live ISO.

01:02:39.161 --> 01:02:46.250
<v Clips>So, you know, your girlfriend, your mom, your dad, a lot of people can't install

01:02:46.250 --> 01:02:48.304
<v Clips>Linux easily, especially Nix.

01:02:49.012 --> 01:02:56.953
<v Clips>So when you boot up the live ISO, you can sign in with your ChatGPT subscription or use an API.

01:02:57.650 --> 01:03:02.427
<v Clips>And basically just tell the agent what you want and the agent will install it.

01:03:02.799 --> 01:03:08.858
<v Clips>There's also some markdown files that, you know, kind of guide the agent to,

01:03:09.781 --> 01:03:13.070
<v Clips>make it a little bit easier for the user. So it's called...

01:03:16.689 --> 01:03:21.330
<v Clips>Agent-installer on my GitHub repo. So I'll try to send it to you guys.

01:03:21.330 --> 01:03:25.048
<v Clips>I don't know if I can paste it into this or not.

01:03:26.378 --> 01:03:28.769
<v Clips>Anyway, it's a great listen to you guys. Have a good one.

01:03:29.180 --> 01:03:32.880
<v Chris>Thank you, sir. Brent, I want you to build that for me. I'm going to play one

01:03:32.880 --> 01:03:35.885
<v Chris>more. I'm going to play one more and let the bot pick again.

01:03:37.405 --> 01:03:40.960
<v Chris>All right. I'm not even going to see who this one is, but I think this is one

01:03:40.960 --> 01:03:41.991
<v Chris>of the queue we needed to get to.

01:03:42.496 --> 01:03:44.670
<v Clips>Hey, guys. All right. 741 again.

01:03:44.670 --> 01:03:45.210
<v Chris>Hey, it's Ari.

01:03:45.710 --> 01:03:50.979
<v Clips>On the launch, you had mentioned that it seemed like your VR episode didn't

01:03:51.397 --> 01:03:54.671
<v Clips>get as much of a response as you were hoping.

01:03:55.333 --> 01:03:59.360
<v Clips>And I don't personally know how this will make you feel, but I think that that

01:03:59.360 --> 01:04:01.823
<v Clips>kind of was more of like a reference episode.

01:04:02.554 --> 01:04:05.910
<v Clips>And I think you've kind of had these types of reference episodes in the past,

01:04:05.910 --> 01:04:11.920
<v Clips>like the PCAE pass-through episode that you guys have done around being able

01:04:11.920 --> 01:04:15.487
<v Clips>to do PCAE pass-through with the Linux kernel. Um...

01:04:16.328 --> 01:04:21.017
<v Clips>Where it might not get very much signal at that time. But over the years,

01:04:21.017 --> 01:04:25.309
<v Clips>I think people will keep referring back to that type of content,

01:04:25.825 --> 01:04:31.578
<v Clips>for help and assistance as they end up either acquiring a VR headset or either.

01:04:32.873 --> 01:04:37.383
<v Clips>Wanting to perform the thing that you're talking about in the reference episode.

01:04:37.946 --> 01:04:43.257
<v Clips>So personally, I think that makes it a really sticky topic, even though it might

01:04:43.257 --> 01:04:46.471
<v Clips>not get as much immediate response as you're expecting.

01:04:46.816 --> 01:04:52.127
<v Clips>So I think long term that's really good for the show though but like I said

01:04:52.127 --> 01:04:53.498
<v Clips>I don't know how to make you feel.

01:04:54.009 --> 01:04:59.907
<v Clips>I actually ended up using the PCA pass through episode reference links whenever

01:04:59.907 --> 01:05:01.977
<v Clips>I was working on a project on my old job,

01:05:03.069 --> 01:05:07.957
<v Clips>that episode really gave me a lot more confidence in the technology and what

01:05:07.957 --> 01:05:13.277
<v Clips>I was doing because you all did your deep dive which was really helpful so I

01:05:13.277 --> 01:05:17.134
<v Clips>just wanted to say thank you for all the awesome content you guys have continued to make.

01:05:17.977 --> 01:05:22.937
<v Clips>I love being a member of the network and I've been really appreciative of all

01:05:22.937 --> 01:05:27.877
<v Clips>the new member features as well and even though the bootleg to me was enough

01:05:27.877 --> 01:05:31.657
<v Clips>in the first place I'm glad you guys have been able to find ways to make the

01:05:31.657 --> 01:05:32.917
<v Clips>membership more enticing,

01:05:33.677 --> 01:05:36.424
<v Clips>for new people. So thanks guys. See ya.

01:05:36.799 --> 01:05:39.657
<v Chris>Thank you sir and thank you again for all your work you did on the website and

01:05:39.657 --> 01:05:41.537
<v Chris>in the community. It's good to hear from you.

01:05:41.537 --> 01:05:42.604
<v Wes>Support all kinds of ways.

01:05:43.016 --> 01:05:47.337
<v Chris>Absolutely. And I like the idea of a reference episode. It does make me feel

01:05:47.337 --> 01:05:48.577
<v Chris>slightly better. I will be honest.

01:05:49.796 --> 01:05:52.837
<v Chris>So I haven't put this all together yet, but we want more of your uplinks.

01:05:52.837 --> 01:05:56.008
<v Chris>We'll try to feature them from time to time. And I think there's going to be,

01:05:57.070 --> 01:06:03.109
<v Chris>Probably some sort of trifecta of HomeLab submission and maybe an uplink to

01:06:03.109 --> 01:06:06.639
<v Chris>go with that where you can reference your HomeLab submission and then possibly

01:06:06.639 --> 01:06:08.859
<v Chris>to put in front of us a boost, especially if you're a member,

01:06:08.859 --> 01:06:10.629
<v Chris>that could be a great idea because you get it for free anyways.

01:06:11.919 --> 01:06:16.099
<v Chris>And that kind of trifecta could be, you know, that could be a way to get your

01:06:16.099 --> 01:06:20.619
<v Chris>HomeLab a little extra juice with a little uplink and a boost to go with it. I'm just saying.

01:06:20.959 --> 01:06:23.435
<v Chris>I'm just saying something to think about as you're strategizing out there.

01:06:24.282 --> 01:06:29.809
<v Chris>Because you know the winners of last year's home lab special they're still they're

01:06:29.809 --> 01:06:33.999
<v Chris>still glowing they're still like they still you know and brent still have a.

01:06:33.999 --> 01:06:35.381
<v Wes>Lot to glow about they were impressive.

01:06:35.538 --> 01:06:38.399
<v Chris>Brent still sending them their checks you know he's gonna get that yeah writing

01:06:38.399 --> 01:06:40.709
<v Chris>those checks so they're gonna get that any day behind.

01:06:40.709 --> 01:06:42.129
<v Brent>By one but we'll get.

01:06:42.129 --> 01:06:47.149
<v Chris>There yeah yeah we'll get gentlemen we do have some picks and i think this one

01:06:47.149 --> 01:06:56.882
<v Chris>wes found just for brent This is a tab management extension for the Firefox called List All Tabs.

01:06:57.682 --> 01:07:01.679
<v Chris>And like tab management tools, it offers a lot of your standard features,

01:07:01.679 --> 01:07:05.787
<v Chris>but it brings in something kind of new to the mix that caught my attention, Wes.

01:07:06.309 --> 01:07:10.768
<v Chris>And that's this dashboard, if you will, of your open tabs.

01:07:11.168 --> 01:07:12.599
<v Wes>Former dashboard guy. That makes sense.

01:07:12.599 --> 01:07:16.389
<v Chris>Yeah, well, I'm kind of a dashboard guy, and I noticed that this kind of looks

01:07:16.389 --> 01:07:20.229
<v Chris>like a dashboard of your tabs, And I thought, you must be thinking of Brent when you found this.

01:07:20.229 --> 01:07:24.639
<v Wes>Oh, yeah. Well, actually, someone sent it in for Brent. I've lost the name, unfortunately.

01:07:24.639 --> 01:07:26.591
<v Chris>It's almost like he has a reputation. It's just...

01:07:33.558 --> 01:07:35.996
<v Wes>Oh, Sudo Satur. That's who I found this from.

01:07:35.996 --> 01:07:39.666
<v Chris>Thank you, Sudo. Thank you. Appreciate that. List all tabs. This actually is

01:07:39.666 --> 01:07:42.266
<v Chris>really nice. What do you think of, as a tab connoisseur, Brent,

01:07:42.266 --> 01:07:43.363
<v Chris>what do you think of something like this?

01:07:43.595 --> 01:07:45.996
<v Brent>Well, Sudo sent this in and I was a little hesitant because,

01:07:45.996 --> 01:07:49.036
<v Brent>you know, tabs and precious and all that stuff.

01:07:49.036 --> 01:07:49.976
<v Chris>Yeah, obviously.

01:07:49.976 --> 01:07:51.046
<v Wes>You're very special tabs.

01:07:52.006 --> 01:07:58.118
<v Brent>I don't want to mess with my tabs. But Wes was like, come on, just try it. And so I did.

01:07:58.604 --> 01:08:01.322
<v Wes>Well, you're the QA guy. I send all the new stuff to you.

01:08:01.560 --> 01:08:03.540
<v Brent>Yeah, it turns out this thing's fantastic.

01:08:04.108 --> 01:08:08.125
<v Chris>Oh ladies and gentlemen ladies and gentlemen oh.

01:08:10.209 --> 01:08:16.655
<v Brent>It was super easy to install in Firefox because it's already set up as an extension that you can add.

01:08:17.255 --> 01:08:20.245
<v Brent>It's got raving reviews already.

01:08:20.965 --> 01:08:26.846
<v Brent>And also, I guess it's based on an older project, but there's been some modernization.

01:08:27.351 --> 01:08:32.705
<v Brent>And the interface on here, just to manage your tabs, is really nice.

01:08:32.705 --> 01:08:37.869
<v Brent>It's got an important thing right at the top. Somehow, that's exactly what I need.

01:08:38.635 --> 01:08:44.475
<v Brent>You can sort by like tab order or last recently used or least recently used,

01:08:44.975 --> 01:08:49.435
<v Brent>most recently used, which is that's just how did you get in my brain to design this thing?

01:08:49.815 --> 01:08:51.778
<v Chris>That is really clever. Yeah. Okay.

01:08:51.883 --> 01:08:59.794
<v Brent>It also lists, it can list all of your tabs by URL instead of by window, for instance.

01:09:00.089 --> 01:09:06.509
<v Brent>So if you have a, let's say a bunch of GitHub links, but open in various windows and tabs.

01:09:06.863 --> 01:09:09.995
<v Chris>Or for me, like a bunch of Wikipedia tabs, you know, the Wikipedia rabbit hole

01:09:09.995 --> 01:09:11.075
<v Chris>thing. Yeah, definitely.

01:09:11.075 --> 01:09:15.005
<v Brent>Combines them all in one place. So you can reference them all under one little

01:09:15.005 --> 01:09:17.725
<v Brent>section in the extension. It's fantastic.

01:09:17.835 --> 01:09:19.895
<v Wes>See, tabs is data. This is what I'm saying.

01:09:19.895 --> 01:09:20.429
<v Chris>You were right.

01:09:20.969 --> 01:09:21.685
<v Wes>This looks great.

01:09:21.685 --> 01:09:27.585
<v Brent>But I'm not done yet. It also has a little, you know, sleepy button,

01:09:27.585 --> 01:09:31.425
<v Brent>which unloads all of the tabs in that particular section.

01:09:31.425 --> 01:09:35.235
<v Brent>So for instance, I have github.com here and it's got a little Z beside it.

01:09:35.235 --> 01:09:37.867
<v Brent>So you hit that and they all get just...

01:09:38.681 --> 01:09:41.847
<v Brent>Automatically put to sleep instead of the browser trying to guess because like

01:09:41.847 --> 01:09:45.447
<v Brent>i know what i'm not using and i could just hit a nice little button here it's fantastic.

01:09:45.447 --> 01:09:46.657
<v Chris>I'll be dipped that's.

01:09:46.657 --> 01:09:51.767
<v Brent>Great right uh there's also an unload all button because if you have too many

01:09:51.767 --> 01:09:54.760
<v Brent>tabs then you need that which so that speaks to me,

01:09:55.427 --> 01:09:59.340
<v Brent>um but you can also look at them like listed by window which of course is handy,

01:09:59.886 --> 01:10:04.847
<v Brent>and there's a saved section so you can also save particular tabs into like a

01:10:05.247 --> 01:10:06.973
<v Brent>spot where for some reason,

01:10:07.531 --> 01:10:09.533
<v Brent>these are more important, which is awesome.

01:10:10.189 --> 01:10:11.167
<v Chris>I'm installing this right now.

01:10:11.167 --> 01:10:13.777
<v Brent>Oh, I'm telling you, it's great. And I could keep going. Like it has a recently

01:10:13.777 --> 01:10:17.137
<v Brent>closed part so that in case, you know, you did the wrong thing and you want

01:10:17.137 --> 01:10:18.637
<v Brent>to bring it back, you can do that.

01:10:18.637 --> 01:10:22.137
<v Brent>It also has a little trash icon so you can quickly delete tabs.

01:10:22.137 --> 01:10:25.897
<v Brent>It also has a save, you know, save button beside all the tabs so you can put

01:10:25.897 --> 01:10:28.115
<v Brent>them in that super great save section.

01:10:28.516 --> 01:10:28.947
<v Chris>Oh, all right.

01:10:29.547 --> 01:10:33.857
<v Brent>But best part is it also detects duplicates so that you're not,

01:10:33.857 --> 01:10:35.772
<v Brent>you know, saving the same page four times.

01:10:36.236 --> 01:10:39.267
<v Chris>Yeah, that's not a problem I have, but I could probably understand why you would have that problem.

01:10:39.747 --> 01:10:40.437
<v Wes>It seems handy.

01:10:40.437 --> 01:10:43.377
<v Brent>Also, these are just the features I've found so far. I've only used it for like

01:10:43.377 --> 01:10:48.557
<v Brent>12 minutes. So really huge thank you, SayShirt. I will, well,

01:10:48.557 --> 01:10:52.924
<v Brent>I'm already using this. So great. It works for my brain. I hope it works for other people too.

01:10:53.116 --> 01:10:57.547
<v Chris>Okay. All right. Our next pick is to reduce your browser dependence.

01:10:57.547 --> 01:10:59.635
<v Chris>And I understand it's hard.

01:11:00.564 --> 01:11:04.685
<v Chris>I get it. There's a lot of good web apps or bad web apps that you have to use

01:11:04.981 --> 01:11:06.421
<v Chris>every single day. I'm there with you.

01:11:07.350 --> 01:11:11.471
<v Chris>So what if I could get you to try out Tangram?

01:11:11.814 --> 01:11:12.627
<v Wes>Tangram.

01:11:12.967 --> 01:11:13.567
<v Brent>Tangram. Yeah.

01:11:14.281 --> 01:11:14.531
<v Chris>Yeah.

01:11:15.535 --> 01:11:21.751
<v Chris>This is another take at the attempt to make one browser for all of the web apps

01:11:21.751 --> 01:11:26.141
<v Chris>you have to use, where you can kind of have separate,

01:11:26.739 --> 01:11:30.628
<v Chris>isolated environments, and they are each one individually sandboxed,

01:11:31.266 --> 01:11:33.240
<v Chris>persistent, independent tabs.

01:11:33.838 --> 01:11:38.071
<v Chris>You can change their position. It supports smart notifications for desktop integration.

01:11:38.071 --> 01:11:40.701
<v Chris>So, like, if you've got to be in, like, a work messaging application. That's nice.

01:11:41.141 --> 01:11:44.450
<v Chris>It's got that. It's got touchpad and touchscreen support.

01:11:46.429 --> 01:11:51.089
<v Chris>And the idea is that you put your Discord in here, your web telegram,

01:11:51.455 --> 01:11:57.422
<v Chris>your WhatsApp, if you use Element in the web, whatever it might be, your Mastodon.

01:11:57.817 --> 01:12:03.021
<v Chris>You put it all in here as individual isolated tabs that this thing then keeps

01:12:03.021 --> 01:12:05.207
<v Chris>persistent and independently manages them for you.

01:12:05.637 --> 01:12:09.761
<v Chris>And then gives you an interface to see an overview of those or pop through the different tabs.

01:12:10.381 --> 01:12:12.421
<v Wes>A browser for your pin tabs. I like it.

01:12:13.021 --> 01:12:13.700
<v Brent>I have a question.

01:12:14.176 --> 01:12:14.483
<v Chris>Yeah.

01:12:15.075 --> 01:12:16.431
<v Brent>Oh, that little tagline, browser

01:12:16.431 --> 01:12:20.550
<v Brent>for your pin tabs. I don't really know what a pin tab is. Can you...

01:12:28.259 --> 01:12:31.004
<v Brent>Do you think this will maybe nudge me into the pin tabs era?

01:12:31.968 --> 01:12:34.743
<v Chris>I mean, you could think of it as another way to have a bunch of tabs.

01:12:35.776 --> 01:12:38.553
<v Wes>Well, I was thinking maybe the ones that work for you in here is how you learn

01:12:38.553 --> 01:12:42.273
<v Wes>what a pin tab is. Like if it works for you in Tangram, then it would have been

01:12:42.273 --> 01:12:44.216
<v Wes>a pin tab if you ever had learned those.

01:12:44.395 --> 01:12:46.369
<v Chris>But GPL3 and available on FlatHub.

01:12:46.943 --> 01:12:48.323
<v Wes>So pretty convenient, what's your excuse?

01:12:48.343 --> 01:12:54.298
<v Chris>Okay. All right. Now this next one, we're getting a little serious here.

01:12:55.744 --> 01:13:00.423
<v Chris>Your boy here has been using Pinch Flat. as a way to download YouTube videos

01:13:00.423 --> 01:13:07.550
<v Chris>offline and then present them as first-class citizens in Jellyfinnerplex.

01:13:08.067 --> 01:13:11.733
<v Chris>And when I say first-class, what I mean by that is they look like every other

01:13:11.733 --> 01:13:18.743
<v Chris>TV episode or movie with a poster, metadata, description, even skip intro,

01:13:19.163 --> 01:13:20.793
<v Chris>skip commercial, all this.

01:13:20.793 --> 01:13:21.500
<v Wes>It feels native.

01:13:21.977 --> 01:13:25.941
<v Chris>Feels like a native thing. And it's a fantastic way for me to watch YouTube

01:13:26.382 --> 01:13:29.363
<v Chris>because I kind of got sketchy internet at home from time to time.

01:13:29.363 --> 01:13:31.252
<v Chris>Sometimes we're on the go and we're on LTE.

01:13:31.606 --> 01:13:34.166
<v Chris>And so watching YouTube is a chore on those kind of connections.

01:13:34.567 --> 01:13:37.662
<v Chris>So if you just got things you watch, a few channels you watch on the regular,

01:13:38.057 --> 01:13:41.499
<v Chris>you throw them into old pinch flat here and it pulls them down,

01:13:41.743 --> 01:13:45.083
<v Chris>saves them, gets all the NFO and metadata information, saves which ones it's

01:13:45.083 --> 01:13:46.704
<v Chris>viewed, all that. Beautiful.

01:13:48.317 --> 01:13:49.857
<v Chris>Unfortunately, YouTube's been

01:13:49.857 --> 01:13:53.773
<v Chris>making it harder and harder for good old classic YTDLP to work properly.

01:13:54.355 --> 01:13:57.947
<v Chris>And this has impacted the performance of Pinchflat and related projects.

01:13:58.395 --> 01:14:00.688
<v Chris>And so more and more, I'm missing videos.

01:14:01.534 --> 01:14:06.887
<v Chris>And so Pinchflat NGX comes into the picture here. Pinchflat NGX.

01:14:08.036 --> 01:14:12.467
<v Chris>An enhanced self-hostable version of Pinchflat with a YouTube media manager

01:14:12.467 --> 01:14:13.533
<v Chris>and metadata built in here.

01:14:14.091 --> 01:14:17.117
<v Chris>And one of the things it does do differently, besides some UI changes that I

01:14:17.117 --> 01:14:20.859
<v Chris>think look quite nice, is it uses a different download pipeline.

01:14:21.805 --> 01:14:25.797
<v Chris>And it uses a tool that I'm not super familiar with, but seems to be producing

01:14:25.797 --> 01:14:30.879
<v Chris>better results, and they kind of go through all of it in their description of how it all works.

01:14:31.582 --> 01:14:37.237
<v Chris>And it uses something called bgutil, which integrates with like a token you

01:14:37.237 --> 01:14:42.181
<v Chris>get from YouTube or something like that, and bypasses some of the issues that YTDLP runs into.

01:14:43.742 --> 01:14:46.860
<v Chris>Really nice. And it's one of these things that once you set it up,

01:14:47.562 --> 01:14:50.180
<v Chris>not only do you generally not have to think about it as long as it doesn't break,

01:14:51.057 --> 01:14:57.670
<v Chris>but it makes the experience of watching YouTube not feel like YouTube, right?

01:14:57.670 --> 01:15:01.627
<v Chris>It just, there's a couple of channels I want to watch and I don't want the rest of that crap.

01:15:02.330 --> 01:15:08.770
<v Chris>And because it does also integrate things like skip intro or things like that,

01:15:08.770 --> 01:15:11.432
<v Chris>it feels more like an actual TV series that I watch.

01:15:11.595 --> 01:15:14.820
<v Wes>Uh it's you know because i think the original development of pinflat kind of

01:15:14.820 --> 01:15:19.280
<v Wes>stopped right seemingly um so this is a continuation in a few ways including

01:15:19.280 --> 01:15:24.290
<v Wes>i mean like original sqlite only this one adds postgres support yes uh it adds

01:15:24.290 --> 01:15:26.570
<v Wes>oauth and oidc support yeah,

01:15:28.754 --> 01:15:32.280
<v Wes>before you kind of got a basic worker pool now it has live diagnostics granular

01:15:32.280 --> 01:15:36.370
<v Wes>worker tuning it also has better support for single video sources one-off direct

01:15:36.370 --> 01:15:41.020
<v Wes>video downloads if you want to do that too which is pretty convenient so big upgrade.

01:15:41.269 --> 01:15:43.780
<v Chris>And then you know you just plumb it in you have it saved to a directory that

01:15:43.780 --> 01:15:47.360
<v Chris>you have jellyfin or plex index you add that as a library so i just have a youtube

01:15:47.360 --> 01:15:50.388
<v Chris>library and if you were to browse it you'd be like this is great,

01:15:51.073 --> 01:15:54.750
<v Chris>um but with pinch flat having some issues and kind of not getting updated much

01:15:54.750 --> 01:16:00.396
<v Chris>it was really great to see pinch flat ngx come along and it's also gpl3 as well,

01:16:03.014 --> 01:16:07.641
<v Chris>Big recommend, and especially if you need to archive some videos,

01:16:07.641 --> 01:16:10.211
<v Chris>like if there's a channel that has really helpful instruction videos that you

01:16:10.211 --> 01:16:11.280
<v Chris>want to archive offline.

01:16:11.826 --> 01:16:16.644
<v Chris>The other reason I started using this is there's some videos that I don't mind at all my kids watch.

01:16:16.998 --> 01:16:20.661
<v Chris>There's other videos, not a big fan. And so this is a way to kind of get access

01:16:20.661 --> 01:16:24.841
<v Chris>for the family to YouTube in a way that doesn't leak into the other videos that

01:16:24.841 --> 01:16:25.787
<v Chris>maybe you're worried about.

01:16:26.060 --> 01:16:28.961
<v Chris>So it's nice from a parental standpoint too. So it's Pinch Flat NGX.

01:16:29.541 --> 01:16:30.951
<v Wes>90% Elixir.

01:16:30.951 --> 01:16:32.300
<v Chris>No, that's cool.

01:16:32.480 --> 01:16:33.426
<v Wes>We need a sound for that one.

01:16:33.926 --> 01:16:37.234
<v Chris>Something cool, like an Excalibur kind of sound or something.

01:16:37.943 --> 01:16:41.285
<v Chris>But we will have links to all of this in the show notes, Wes.

01:16:41.436 --> 01:16:43.236
<v Chris>And where do people find those show notes? Well,

01:16:43.520 --> 01:16:47.328
<v Chris>that's on our website at linuxunplugged.com. And this is episode 692.

01:16:47.955 --> 01:16:51.111
<v Chris>Or you can find it over at jupiterbroadcasting.com. Either website,

01:16:51.111 --> 01:16:52.355
<v Chris>you'll have our RSS feed.

01:16:52.680 --> 01:16:55.881
<v Chris>That's the pro move. Grab that feed, put it in your podcast catcher of choice.

01:16:55.881 --> 01:16:57.556
<v Chris>Get the episode every week, obviously.

01:16:58.015 --> 01:16:59.971
<v Chris>But take a look at it, too. There's some useful stuff in there.

01:16:59.971 --> 01:17:01.301
<v Wes>Mm-hmm. Cloud chapters. Yeah.

01:17:01.721 --> 01:17:01.721
<v Chris>Json,

01:17:04.406 --> 01:17:06.206
<v Chris>json json json.

01:17:06.368 --> 01:17:11.251
<v Wes>We also have transcripts vtt and srt srt and you put something special in.

01:17:11.251 --> 01:17:15.314
<v Chris>There's an mp4 in there too i don't know why but there is don't do it.

01:17:15.471 --> 01:17:16.241
<v Wes>Don't even look at it.

01:17:16.241 --> 01:17:19.691
<v Chris>Don't don't do it don't do it don't do it although brent's so damn handsome.

01:17:20.213 --> 01:17:21.081
<v Wes>Sometimes there's cats.

01:17:21.661 --> 01:17:25.911
<v Chris>Yeah and dogs there's that too all right that's everything for us guess what

01:17:25.911 --> 01:17:29.951
<v Chris>and we will be back live at a regular time back from texas linux fest and i'm

01:17:29.951 --> 01:17:31.405
<v Chris>sure with stories to share,

01:17:35.230 --> 01:17:40.926
<v Chris>So, why don't you head on over to jblive.tv and make it a Tuesday on a Sunday.

01:17:40.926 --> 01:17:46.072
<v Chris>We get together over at jblive.tv and jblive.fm if you're on the go at 10 a.m. Pacific.

01:17:46.693 --> 01:17:50.461
<v Chris>Convert it at your local time at jupiterbroadcasting.com slash calendars.

01:17:50.769 --> 01:17:54.368
<v Chris>Don't forget our members get the full bootleg, and it's usually a whopper.

01:17:54.687 --> 01:17:56.928
<v Wes>And don't forget to get your home labs decorated.

01:17:57.044 --> 01:17:57.256
<v Chris>Yes.

01:17:57.276 --> 01:17:58.206
<v Wes>Prepare for submission.

01:17:58.206 --> 01:18:02.193
<v Chris>That's right. Coming soon, we'll have more information, and I'll be on the website as well.

01:18:02.849 --> 01:18:06.846
<v Chris>Thank you so much for joining us on this week's episode of Your Unplugged Program.

01:18:06.846 --> 01:18:08.300
<v Chris>Thank you to John for joining us.

01:18:08.810 --> 01:18:12.626
<v Chris>Good luck to all of their endeavors. And with that, we will see you right back

01:18:12.626 --> 01:18:15.991
<v Chris>here next Tuesday, as in Sunday.

