Tech Over Tea - From Budgie To Solus, To Clear Linux To Serpent OS | Ikey Doherty
Episode Date: February 14, 2025Today we have Ikey Doherty on the show, creator of many distros in the past but now running the SerpertOS distro on the show today to talk about the project, some of his history with these prior proje...cts and what else he has in store.==========Support The Channel==========► Patreon: https://www.patreon.com/brodierobertson► Paypal: https://www.paypal.me/BrodieRobertsonVideo► Amazon USA: https://amzn.to/3d5gykF► Other Methods: https://cointr.ee/brodierobertson==========Guest Links==========SerpentOS: https://serpentos.com/Twitter: https://x.com/ikey_doherty==========Support The Show==========► Patreon: https://www.patreon.com/brodierobertson► Paypal: https://www.paypal.me/BrodieRobertsonVideo► Amazon USA: https://amzn.to/3d5gykF► Other Methods: https://cointr.ee/brodierobertson=========Video Platforms==========🎥 YouTube: https://www.youtube.com/channel/UCBq5p-xOla8xhnrbhu8AIAg=========Audio Release=========🎵 RSS: https://anchor.fm/s/149fd51c/podcast/rss🎵 Apple Podcast:https://podcasts.apple.com/us/podcast/tech-over-tea/id1501727953🎵 Spotify: https://open.spotify.com/show/3IfFpfzlLo7OPsEnl4gbdM🎵 Google Podcast: https://www.google.com/podcasts?feed=aHR0cHM6Ly9hbmNob3IuZm0vcy8xNDlmZDUxYy9wb2RjYXN0L3Jzcw==🎵 Anchor: https://anchor.fm/tech-over-tea==========Social Media==========🎤 Discord:https://discord.gg/PkMRVn9🐦 Twitter: https://twitter.com/TechOverTeaShow📷 Instagram: https://www.instagram.com/techovertea/🌐 Mastodon:https://mastodon.social/web/accounts/1093345==========Credits==========🎨 Channel Art:All my art has was created by Supercozmanhttps://twitter.com/Supercozmanhttps://www.instagram.com/supercozman_draws/DISCLOSURE: Wherever possible I use referral links, which means if you click one of the links in this video or description and make a purchase we may receive a small commission or other compensation.
Transcript
Discussion (0)
Good morning, good day, and good evening.
I'm as always your host, Brodie Robertson, and today we have a name who has been in the Linux world for a very, very long time.
You've probably heard of him from one of the projects he's been involved in, whether that was the creation of Budgie,
whether that's from Solace, whether that's from Clear Linux, or now the latest thing you're working on, SerpentOS.
Welcome to the show. How about you introduce yourself and, you know, say a bit about yourself. What do you do?
Um, I'm Ike Daugherty as some of you may know from some of those projects mentioned.
Um, I think I'm probably the number one serial distro hotpot
on the planet at this point.
So I think I could benefit from it, it's a shame.
Mm-hmm, mm-hmm.
Yeah, that's, whenever I go and like look up
like the history of someone, whether it's you
or anyone else, you'll run into people that have,
especially people who are known, they'll have opinions
of you or of anyone else out there. And the thing that I commonly ran across
is you like to start projects and then at some point you disappear and another project
starts. And I don't know how you feel about that and like your stance on it, but that
seems to be like the public perception of what you've done.
Yeah, I gotta admit that one is always a little bit...
Should we say Ericsson? I don't know if you have swearing on the channel. Go right ahead, yeah it's really fine.
Just don't say anything you don't want a recording of, like anything else is fine.
My job's all remember good.
Like that's anything else is fine.
My job's all remember good.
So, yeah, I mean, it's quite easy to say that someone's had a few projects, therefore, you know, like abandonment and whatever.
But the way it's portrayed really plays like.
It plays like some daddy issue trauma that I've inflicted upon the world.
I mean, in reality, if you look how long I was in, say, in say for example Solace I was in there for a good number of years.
While I'm not going to go into the specifics of leaving whatever I'm sure you know people can
people can use their own brains there. That said it's also not recognized much the
myself and others within the former and current Solus team and
Serpent team. We're the ones who actually rescued Solus when they had the great
downtime. We used the Serpent infrastructure to bring it back online
getting a strategy for getting everything back online so people can
probably figure out from that but if there was perhaps any unresolved
variables that at that point they were
resolved. I mean as for the whole timeline, what people always get confused about, but he had a
Volvo S and then he had Solus and then he had the other version of Solus and then it was Claren Linux
and so Claren Linux was a job, sorry to break it you guys. I worked for Intel. They paid me for a while.
I left, you know?
Yeah, that's understandable.
People did different jobs.
Yeah, I mean, yeah, I did enjoy doing
some of the cool stuff there, but you know,
at the end of the day, lads, it was a job.
You know, man's gotta get fit.
That's all it fucking comes down to.
Like, I was taking a paycheck.
If you wanna put it another way,
like no one would get angry at whoever started
Rell when they left Red Hat.
Like that it's the same sort of thing.
How dare you!
Loyalty!
Yeah, to what?
You know, like there's no friendship in money, sorry.
That's just nature of it.
But yeah, like a very, very compacted history of the whole solders thing.
Years ago, many, many, many, many, many, many moons ago, you know, as I've been reminded of, I'm fucking ancient.
Do you remember what year it was?
Do you want to say what year it was?
Do you want to think about it?
I'm going to go within the year of our Lord for starters.
It's a whole race of nation.
So yeah, it started out originally as like this whole Debian thing because I started
out years ago when I first was publicly involved in this show.
I was involved in Linux Mint and helped them bring Linux Mint Debian Edition into the world.
This is again chronically years ago.
But I always felt that it was a different way that I could do it.
And that's what led to the original birth of like Solso West back in the day. Then there was a version 2 because we had the, originally we had the PAE version, oh
yeah it was I3A6 and PAE version and then we was looking at actual AMD 64 bits. So between
those two builds we had from Debian stable we had a diff of I think 7200 packages
on top of Debian stable to maintain on top of sorry did I mention stable
um and it just it shat the bed every time you looked at it so I just I couldn't deal with it
like that was not the life for me anymore so we went went on to the whole like solace West to that's how I came across the
I'm gonna say pie say
Package manager. Well, I saw the paper read it. Yeah, we're all reading its pissy. Let's be
Pisa your packages installed successfully as intended or something like that. I don't know. OK. He named it eventually.
But yeah, it was at the time it was like light years ahead of everything else.
It was greatly influenced by Jim to it was from the the paradise of this project.
But obviously paradise, they lost all their funding because government changed.
Blah, blah. I was like, OK, let's use this package manager.
And wouldn't it just be easier if we built this thing from scratch? I said nobody ever. I did. I figured
it had to be easier to maintain it than having to curse on somebody breaking the packages
I was dependent on. So that's how we let down that but there was a slight schism in the
community when I said we're going to go independent, we'll do everything great.
I mean, back then we had, you know,
like glossy 3D graphics on the website.
There was bright blue here, silver there,
and you know, pictures of actual boxes
with the Solusworth logo on it,
because it worked out of the box, you know,
like pre-Amazon marketing.
If I went to archive.org,
do you know what year I could go to to see that?
Oh god. It's got to be early 2010s, isn't it? 12, 13, somewhere around there. Did the domain ever
change? It was solosos.com. Okay. Back in the day. It was kind of pretty looking for a website at that point.
Another story, after we accepted that website, somebody uploaded a PHP shell.
But that was not...
So I think it came with a price.
Yeah, so the community was completely fragmented because I wanted to change.
This should have been the first sign
back then run
There was a big great battle ensued and the debionizers did Monaco against the independence and
Familiar story in the end it got so orderly toxic. I had to basically terminate the project. I was like, nah, headshot, goodbye.
But I always wanted to continue in that line of work.
And that's how it was eventually reborn as a Volvo West.
But in between all of this, in between all of these efforts,
we had the advent of the budget desktop.
Which, to be fair to versions 2 and 3, was basically Poor Man's Chrome OS.
Like, you know, with popovers.
And that was originally slated to be based on Tumbleweed, I think it was back then.
Okay.
Like, I wasn't going to do the distro thing ever again.
Familiar story now.
I don't learn.
If you know of somebody suffering with addiction.
Um, it's absolutely my life's race.
If you didn't enjoy it, maybe you would stop.
I don't know, I assume at least you enjoy the distro thing.
Yeah, I mean, it was going well for a while, and then it's like, you know what, there was this great big body of work That we've done for solos for us to it felt a real shame to like chuck it all in the paper
So I don't know we're gonna bring it back. I'm gonna come up with a new name for us. I mean really awesome evolve always
Looking back, you know
He was sitting hot and entirely fucking creative, but that's what we went with
That lasted for a little while and then I got a letter, um...
I was living in the UK then as well, I'm back here now, that's why I'm full of bad luck.
But anyway, I got a letter.
It was signed William Hague, Secretary of State, thought this would be fucking brilliant, but like...
I opened it up, um, for use of the trademarks.
OS.
What? There's a whole fucking phone here
Did you not just take a lot of backhanders
Getting a load of iOS devices
and Chrome OS devices in through the House of Parliament
and you're on about me for fucking Edistro
I'm still pissed off about it now
this was like years ago but legit raging
So I thought right I've got to fix this
We've got to come up with like a
strategy where we're not gonna get sued to shit because that's the way it was
looking it was an immediate cease and desist like it's a fucking niche distra
what do you want me to do like all seven fucking euros of income all right let
me sacrifice that so I come up with a strategy it's like it was motivated
entirely by being pissed off.
So I was like, we're gonna call it the Solus Project.
So you went from Solus to Evolve.
OS.
To Solus, oh yeah, Evolve OS to Solus Project.
Ah, however, this is my thinking at the time.
This is like, fuck you, William.
I've got this figured, right?
Okay. I'm Billy Boy, I've got this figured right okay Billy boy I'll put this worked out
So I thought it said it was going to be the solace operating system
Created by the solace project and it will not be my fault if anyone decides to abbreviate it to solace always
Just to be an asshole, that's why he got renamed back there just literally as a middle finger to UK government
That's why I'll come my name back there, just literally as a middle finger of the UK government. That's wild that they'll come after you with the term OS.
Like that, it's such a generic term.
Well, as it turns out, as we now know, so I won't get done for misrepresentation,
it stands for Ordnance Survey.
So it's a wild trademark, 300 years or so old and
Yeah, I mean they explained how they found me really, you know, they're fucking map makers
Should have seen that one coming but yeah, that's that's why they were renamed
So we had the same project that was just renamed in place for Spike
Because there was also a game at the time called Evolve and everyone was writing
on Steam was like hey you know there's already a distro called this and then like I had back chats
with like the developers and it was all like nobody gives a shit so we all just agreed that
we're fine with it yeah and then it just became Solace I mean, that's three distros.
That's basically one.
There was a dismissal of the first project and then it was reborn.
So only the first one was shot in the face.
The second one was just a very, very confused name and story.
But there was still, you know, there was still that continuation.
And then, you know, eventually many, many many many moons later I
was working for Intel we did the whole clear Linux thing apparently that's
still around I hear so apparently yeah I don't really check the elements of
honesty I think like cash the OS is stealing all the news to come as you do
not know how many people bug me about that distro Jesus
Have you used their kernel?
Apparently it's good. I that's what I keep hearing
That's why I say up I've seen a lot of this stuff and I've seen some results it it does it looks interesting but
For me, I think over the years. I've got more down the tool in the meaty
For me, I think over the years I've got more down the tool than me.
The nitty gritties of what makes a distro, so I don't get to use them. As I explained to you earlier on, I went to plug in the microphone that's been packed in the bag
for the last two and a half years and I forgot to have the drivers in the kernel.
I optimized the microphone away.
Hey, no one...
That's like x86v7 plus dot star. Hey, no one can break into your system and listen to your mic if there's no driver for
it.
It's a security feature.
There you go.
Secure a move.
Yeah. From Clearlyrics, when did the idea for Serpent come around?
Yeah, so Clearlyrics was sort of parallel to the solo stuff and then a few years ago,
like I took my leave.
Whatever, whatever.
Never.
Me being great with naming things obviously. It started because I was creating a game engine
with Dee. At some point, as you do, I love the company name though, it was called Lispy
Snake. That was originally because I was getting really pissed off because every time I went
onto LinkedIn, because sometimes you have to go on to LinkedIn our client would like you
to work with them they have their series B funding and they have this great AI
effort and blah blah blah and then it turns out to be some but elixir that's
in Python and it's like nah unicorn company and they've made a lot of
mistakes and I've got to come in as the janitor.
Fuck off.
So that's what I was getting constantly.
So I was like, you know what?
I'm going to like create a kick in the face firm.
Just like as everything,
my name is always a middle finger,
but yeah, so Lispy Snake was a middle finger
to all the Python consultancy gigs.
Fast forward a little bit,
was making the game engine with it,
and then I got really irritated because I wanted
to be able to build for every platform. It was fine building for my current version of Linux but
then once you get into cross-compiler from Linux to Windows just on Linux at that point it was like
there's got to be a better solution for dealing with the tool chain. So I was like why don't I create a small, you know, a sort of reproducible script and about three
weeks in I was going fuck I've created a distro. It was literally a complete accident.
I created like this miniaturized, at the time I was like, ah. I got fucked up.
Unleash the beast again.
Yeah, there's a snake in the garden.
So yeah, I've reused the logo because I couldn't get anyone to make a logo for anything.
And I was like, ah, SerpentOS.
And now I've endured the last, is it nearly five
years, of people saying, but why the name? Well, now you know. Laziness and spite.
So it came around about 2020-ish then, 2019, somewhere in that range? Around then, yeah.
We had a few ideas at then and me being me, I had a few opinions.
I didn't need to share them all, but I did.
But some of them didn't make sense at first and unfortunately they kind of drew an interesting crowd.
So it turns out when you tell people that you're not going to use Kino Sieve Library,
that you're going to use a certain approach to things. At that point it's like,
you should replace system D as well.
Aha.
Yeah, while I'm at it,
I'm also gonna eject Wayland
and I'm gonna like put XOR into the kernel
because that will solve the world's problems.
So there was a slight pivot as they say. It all involves
pointing fingers really when you really think about it. But yeah it started off
with a set of ideas that come from being jaded from doing distro for way
way too many years. And that's kind of what it started out of. It's like how do
we fix the deployment of
Linux distributions rather than just let's build another distro because fuck it why not.
They haven't seen more wallpapers.
Yeah there's plenty of those.
Yeah like Justin Bieber's had his share of the limelight but there's others yeah.
Well there's the Bieber OS as well.
Yeah now it was like Hannah Montana Linux as well wasn't there. Yeah, and there was like Hannah Montana licks as well. Wasn't there?
Yeah, there was a few.
But I'm sure we could slap Hyperland on a few of those now,
couldn't we?
Get some nice blur behind going.
Oh yeah.
Who needs stars when you have blur?
Well, fun fact, I don't know if you know this one,
but one of the first distros to ship Wayland
was Rebecca Blackos.
Oh, I'm in the wrong industry. ship Wayland was Rebecca Black OS.
Oh, I'm in the wrong industry.
I can't go off anymore.
Between me and me not working microphone.
Yeah, so I decided finally I was going to address all of the tooling issues.
I kind of looked at the way that approach this just before and I realized the approach and mentality was wrong. I was
always trying to solve the deployed problem itself where like I was always thinking how
is the user going to engage with this? That does matter of course it does. Nobody wants
to use something that's complete shit but it was always entirely around the UX and the tooling side always suffered and it was always having to put out
flyers to fix even the most trivial of architectural issues. One of the things that really really
irritated me is the lack of nice atomic updates in basically anything. When I started looking
around like say Oversh Street was the primary example, because
nothing else really existed a few years ago.
Something really triggered me about having to reboot.
And I get that if you're installing the kernel update, fair enough.
You know, there's a new CRNSS libraries, they've updated fair enough, you know, like they're
in memory, anything's residual needs the entire reboot. Totally get that.
If I'm installing a text editor and you want me to reboot,
fuck off.
Basically, that's my entire take on it, like I shouldn't have to, it just seems a chronic pain in the ass to do that.
And I get it, it makes sense in more of an appliance point of view, if you totally understand that.
And there's a difference in context as well,
because other projects have been,
they're interested in having an immutable, verifiable image.
And for that, there ain't many options.
So, it makes sense.
But as a desktop user,
as somebody who's doing the development work,
for me me it felt
Not just so much. There's other examples as well. This they all they all have the same idea
You know like isn't it maybe swap up in that's it's only it
well as for the practitioners volume groups or as I'm sure somebody's gonna tell me but are for sub volumes, you know with compression and
you know like
I can't stand butter with this.
I just, I just can't.
If you want to talk about that, I'd definitely like to hear it at some point.
You know, the sidetrack right now, I can put it on the list we can talk about later if you want to.
Yeah, I just, it's just, I don't know, I don't do the whole Fat thing it just I don't fair. I use
EXT open to about three weeks ago. Mm-hmm
Like and before that I use the other file system that's dead
Anyway
One foot in the grave moving on
so I Thought I'd focus on a different problem
from Immutable.
I thought the problem that matters to me is atomic.
And the reason that matters to me
is because having done the whole digital engineering thing,
there's so many things that are going to change over time.
Mutating a live file system just is not a solution.
I mean, we've all seen it, even with really, really good, really
good package managers.
Once you start using PEP against your usertree, forget about it.
Yeah.
It just don't matter anymore.
Any package manager is a brick.
Why is it so in the directory?
This is why a couple of years ago, there was a, um, there was a PEP to basically
force you to use a virtual environment by default.
Like if you're going to do Python, just do it in a virtual environment.
Do not let it touch your system, like your core system.
Yeah.
So that's sort of the problem that I was coming from.
Having to start a file to know the status of the operating system
kind of seemed a bit silly to me.
The whole, and it's not me joining, you know, the, the anti-Unix camp, but we,
we've done this whole, that's the file system and everything is a file for so
long that we've just accepted that the other operating system is a database of files on disk.
And we've left it at that.
We've added more features to the file system
to account for that.
And I kind of felt a bit,
file system's great, don't get me wrong.
But I thought, surely we can go back to basics here
and think about using actual databases
and the right structures and using things like hard links.
So that's kind of where MOS came about.
And if you're wondering where that name came from,
it was the whole, a rolling stone.
Because we could be rolling a digital,
and that's where we got Boulder, Avalanche,
that's where all of those names come from.
So it's gonna be rolling release,
and it's gonna be different to everyone, of course.
So we set about doing an atomic implementation that would not require a reboot
and took a bit of experimentation. At first we used a symlink and that every time that was decoded
that mangled all the paths and that kind of left us with a security issue if you built something
and that resolved to one particular symlink and that was in that build configuration, you could
abuse that to inject a path that didn't exist. I was like, fuck,
that's not gonna do. So we had to rethink on it. And then the
current strategy for applying file system long story short, we
create a hard link farm, the same as any other content
addressable storage, you have a lot of hash files stuck in the directory somewhere, and as any other content addressable storage.
You have a lot of hash files stuck in the directory somewhere and they use hardlink
them into place.
The difference is when we put that stage and directory together, we're basically creating
a new version of the user tree.
Because we've enforced the user merge from the start, which means we have an advantage,
we didn't have to solve that problem.
We know that everything is related to user.
All of the same links in route,
they go straight into user.
So I thought, why don't we just swap user?
That would seem to be the obvious thing to do,
which we do now.
So we use the rename at two syscall
using the atomic exchange flag.
It's over the website.
Everyone looks at it and go,
what the fuck is he even on about? Long story short, it is like everyone's looking at the website
and they're like sorry, I don't know, anybody? Nothing to do with Lennox apparently. But
it will atomically exchange two directories in place and that doesn't affect running processes.
You will not get a busy error, You won't get bad file descriptors.
The view that they saw of user at the time of execution
is what they still see.
So it means any new applications launch
will see the new user.
You don't have to read, which is wonderful, fantastic.
And that is in a nutshell how MAS works at the moment.
There are certain downsides to that.
Performance, never did I think EXT4 would have a performance issue with this, but it turns out,
old faithful, we were creating an extremely inappropriate number of hardlinks, to be quite honest with you. The maximum hard links for two A-file
is 65k on the AXA4, which even if you think about it does kind of sound a little bit lower,
for honest. You can have millions of hard links, but one file can only be hard linked up than 65,000 times. Right. Right. Because somebody decided to use a 16-bit unsigned integer.
Not a larger number.
When will we get the storage types right for times, dates,
sizes, anything?
You know?
Anyway.
Yeah, eventually.
You know, as we keep identifying problems problems and then we address them over time.
And one day, yeah, 2039, maybe we'll do it then.
You know, it's better than nothing.
So yeah, we discovered a bug a few weeks back where it was really irritating because
the uniqueness of this was the weirdest part. So everything in our content addressable storage
is based on the 128 bit ExaX Hatch.
We chose it because it was just fast as all fucking,
it seemed appropriate and it was like Zee Sounder
at the edge of whack a mole in moldy threading.
Yeah, for progress bar, fuck it, crack on.
We stuck all the shiny and rust as well, why not?
Memory safety everywhere.
It downloads extra memory safeties off the internet for you and just sticks them in your extra memory safety everywhere it downloads extra memory safeties off the
internet for you and just sticks them in your extra memory safety sticks because
that's how it works right oh yeah of course so yeah so we have like all these
hashes and it turns out when we're when we're building the packages and we build
these stolen archives which I'll get to the format in a minute, we didn't account for when a file would be empty.
Okay.
So it's quite happy except in zero byte files.
That's fine.
That's fine.
It takes up no extra storage on this.
Sure.
It takes up no extra storage in the archive itself and that's fine.
But funnily enough, it doesn't matter how many times you hash an empty file, it's going
to have the same fucking hash.
This is where the problem came about.
Yes.
Do you know all of those init.pyc files in Python and you know all the config files that
are part of the kernel?
They're all empty files.
So when you have a new transaction and then you're recreating all of those files again
and then you've got thousands of empty files in one transaction, then you've sold another one.
That's what we call an exponential fuck-up. So within, I think, within about 30 transactions the system was like, no, we've run out of
five descriptors for hardlinks.
So we created a workaround for it, which is basically like, if we see the gnome bat hash,
then we'll just create a new empty file rather than hardlink it, sorted, but that let us
down this whole rabbit hole of you would use mass, you would install a package and it would be excruciatingly
slow just for the first time. If you run it again it'd be extremely freakishly
quick and nobody could figure it out because the profile information was
basically identical every single time. Except for sometimes the EXT4 call trace for find extents took ages and sometimes it didn't.
Turns out even though you're using hard links and we use not a relative API to do so like link at
and make their app, it still has to go and find the hard links in the cache and it crimes that cache it knows where they
are even though they're relatively linked anyway that's just how it works
and I'm not gonna insult it but we do now defaulting first because gone from
30 seconds to 1.6 is a bit better definitely an improvement on an i9
yeah yeah that's a bit of an improvement yeah yeah on an i9 with a terabyte nvme ssd
so yeah as i say there's been a huge rabbit hole but one of the next things we're looking at is
actually using instead of blitting millions of bajillions of billionaires files, because we have a work in atomic app
implementation, which is really, really nice, was like, well, we probably want a mutable
now as well.
But in a way that's actually useful to everyone without cutting off the developer experience,
by having a nice compromise.
So we kind of looked at what the composer vests guys are doing over there and then we realized with the way that
moss works at the moment in that it has databases for the entire system state that's why sometimes
we call it system state manager rather than package manager so we have a database it's basically
if you imagine a stone file or an archive is split into several components they're
top level payloads and each one has a fixed header,
so we can just skip through the file really, really easily.
But you have your metadata payload,
which as you can imagine,
it is just a bunch of keys with their types and their values.
That's simple enough, like dependency name,
version release, whatever, that stuff's boring.
Then we have a layout payload,
which defines how the file system is represented on disk when produced.
Did we lose him?
Is that my side?
Who disconnected there?
I love Discord.
What a great tool this is. Oh
Wait, maybe it's my side. Oh, I am 5,000 milliseconds ping
Hmm maybe that's my side actually oh
Hello
Hello, I don't know. I was at 5,000 milliseconds ping. I don't know I was at 5,000 milliseconds ping I don't know
what happened there that was yeah. It was probably my verbal wallet text. It just slammed
into your network. Yeah so the the layout payload is representation of the fonts is
not the actual contained fonts.
Because that seems to me to be the issue with pretty much most formats. They're basically glorified tarball.
You can't differ tarball realistically unless you're doing a binary diff.
So we have this layout payload which defines how they're going to be done.
Then you have an index payload which is effectively a set of offsets
keyed by the hash and then we have the content payload which at the moment is
what we just unofficially call a mega blob. It's every
unique file whacked together and then compressed in one go with
aziz. So that's then reflected at a higher level within the database. So we
have the we have a system installation database
which caches all of the metadata. We have the layout database as well. So you can
imagine you have these various databases which all work together. So then when we
we emulate updating the system because we have to create an entirely new state.
So we're not upgrading the system. We don't know what the file system looked
like anymore. We have to completely reproduce that view. So inside, it's not actually imperative. We had to pretend that it was.
I know some people are drawing comparisons to certain other toolings, but it's not quite
the same. But yeah, it's a pretend imperative distro, if that makes sense. So we basically, we joined a lot of queries together
and we can produce this whole new file system in one go.
But at the moment, as I said, we can do that now
like in under a couple of seconds,
like say 250,000 hard links.
There's some code up there for creating
a virtual file system in memory,
which then optimizes the order.
It uses the arena grid. So what it basically
does is it rearranges where all of the files are going to go based on SimLink resolution ahead of
time to know the conflicts of the and then it writes them all in a file system optimized order
using the relative API. It's pretty but it basically translates too fast as fuck which is what we want.
So now we have all this working system and we have this duplication stuff.
We have these individual transactions we decided.
Take what we have now instead of writing out new hardlink tree,
we could actually just write out and I don't know the pronunciation.
Eero FS, the E-R-O-F-S, the one that composes the best guys I'm looking at.
So long story short, it's a read-only, only file system. That's all it's good for. You can only read with it.
But it's optimized for read.
And that's the key here.
But it's been improved by the Composer Vest guys to work in conjunction with Overlay FS.
Now normally, I'm not a great fan of OverlayFS because it has some chronic performance issues when you
have a separation between the bottom and upper layer.
It's fucking hell on earth.
However, we've come up with a slightly novel way of mingling our approach and their approach.
Instead of writing out the hardlink tree, we've write out the metadata only EROFS file.
We've set all of the trusted redirects as the metadata back to the underlying storage in the overlay.
So at the very bottom layer you've got like my actual real disk.
Yeah, and then all of the the content store would still be in that disk there at this bottom layer. Then we'd have a pretend
abstraction of the file system in EroFS and through overlayFS
it would represent the fake file system of the underlying view through that.
But the thing is, instead of having to compute everything
and it being really expensive,
we already have this database there.
So we can just spit out this file.
And that tells OverlayFS to redirect everything
to the lower layer, to the lower levels.
And then you basically get the free immutable support so instead of us
having to remount everything and everything like that we're not going to do that instead we're
going to do something called a behind mount you've probably heard of those lately. No I've not heard
of that one that's him actually. They're yeah they used to call them mount tucking or something like that was one of the names for it.
It was a very informal idea.
But the basic premise is instead of us having to remount and reboot the entire system, we're
still going to use the EROFS stuff the way that the ComposerFest guys have been doing
it except for we don't have to compile it against the tree.
We already have the data to generate it in place.
We can just spit out the office file no problem.
Then.
What was in there.
If you.
Not really got like the error of us but it says we bring up a new set of mounts in the mount stack.
So say you've got like your existing user mount that was prepared in the Unity, that's this existing overlay FS with the initially writable lower layer within the user tree
and force user merge makes that all read-only immutable.
What we will do is create a new set of mounts, the same set of mounts,
but for the new transaction behind that. So you've got this one set of mount and you've got a higher set of mounts, the same set of mounts but for the new transaction
behind that. So you've got this one set of mount and you've got a higher set of mounts
in the mount stack. So then when you pop it, the new one is here, that one's gone and you
haven't violated the root namespaces all the way through the tree. So you still get that
life swap. You still get the very, very fast blitz. You still get atomics.
You still get immutable or mix up in one package. So that's the next steps of it, which is going
to be kind of cool to be honest with you. So a modular immutable atomic.
Mm-hmm. I'm trying to keep up with what you're saying here. You know, I feel like, I feel
like SerpentOS would do a really good job with having like a you know
Two-hour essay video just explaining how this system
You have there I can understand why people are kind of confused because it sounds you know
Because atomic has now become kind of the term for things like silver blue and things like that as well
A lot of people kind of confused like how is this different from an os3 distro? Like isn't this just the exact same
thing? Yeah. Yeah that's that is kind of the problem at the moment. Everyone jumped on the bandwagon
as they were atomic when they met were immutable. And that's kind of the key difference. They went from mutable first, we went for atomic first.
That's why it took us five years.
And they've got like great marketing campaigns.
He's taking us a lot longer.
But now we're approaching the whole
can we do immutable, can we make it work efficiently inside of things?
So to make ours atomic first without the immutable side,
that kind of meant
we still had to emulate that imperative behavior like I install the package, it's there, I apply
update, it's done in real time. That's what we needed to make work first. And that was kind of
hard and that we needed to create a new format for that and we needed to make sure that we could
survive over time with upgrades or if the container format changed in any way or
we added any new features we had to make sure that this thing could basically
update for the rest of time so you know there's versioning in the header itself
and each individual payload has versioning as well we're gonna be doing
what they call epoch bumps so effectively you'll only update to the latest
supported version of the repository.
And at that point you will see no more updates until you're on the new version of Mojave.
And then keep going, keep going, keep going.
Right.
So yeah, it is different from OS 3.0 deployment in that the idea is to present what,
to all intents and purposes, is a classic Linux distribution which is composable and currently mutable.
But using all the new tricks, which is, you know, like have an atomic and have content addressable storage,
have offline rollbacks and things like that.
So that was the hard part to balance with.
Right, because one of the problems I see with these, it's not just OSTree, it's with a lot of the other approaches as well.
There are these weird distros where if you're someone who only lives in a web browser, totally
fine.
And if you're someone who is really, really advanced with Linux, you can generate your
own custom images and it's great for you.
But for those people in the middle I don't native yeah I that's it yeah but yeah
for those people in the middle who don't really know what they're doing like it I
find it to be more confusing and I I get it for devices like the Steam Deck where it's a
appliance device. You can still just regular Linux on it, but it's just a gaming handheld console.
And if you use it like that, great idea. But I just don't really ever see...
Sorry?
The sealed delivery task specific.
Totally makes sense. It's basically OTA.
I...
The only way I see the current OS3 approach really working is the way it's... they're trying to get it to work, which is
going heavy down the...
You know, if you want to install applications, you'll be installing it through Flatpak.
Which I guess like it's an approach that want to install applications, you'll be installing it through Flatpak, which I guess, like it's an approach
that seems to be working,
but I don't know if it's going to,
I just don't see it covering every use case.
Like that's the main point there.
Yeah, I mean, Flatpak definitely,
it does have its use.
Like it does make things easier.
But if we're at the point where everyone is shoving everything into
Flatpak, which the idea was, you know, everyone really, really got upset by
Canonical having their own store and this whole centralization strategy, which
really was a way to build, build engagement with publishers and developers
really, because they wanted a centralized platform to work.
So I mean, that kind of helped with Flatback.
That and the technical underpinnings of Flatback
were obviously way ahead of Snap.
But we're now at a point that using Flatback
means using FlatHub.
Whatever way you look at it.
So you are basically adding another three or four versions of this
meta distro that exists on Cloud Hub through all of these packages. So the argument originally
was why should we package all these things? Because, you know, we have our own distro,
they should all be on this magical cloud store type contraption, but it's basically another fucking distro now
I mean if you really look at it, how many apps are packaged up? It's basically another distro.
From the developer perspective, like of the like upstream application developer, I understand wanting to have a
central location your application is distributed from because if you have people who are reporting bugs and you know
they're using the flatpak, you know the dependencies they have,
you know the version they are running, it makes your job considerably easier.
Yeah, testing matrix basically. Yeah, yeah.
Yeah.
But I can also see from the downstream perspective as well there and I don't know,
I use flat packs in some places like my OBS right now is a flat pack and
usually if the
if the upstream
developers
have an official distribution and that is a flat pack usually that's what I'm gonna go with but I
Don't think it is the be all and end all solution
No, you still kind of need you need to account for some level of distribution
integration as well because some disharals do things differently, something weird. I mean if
you look at Serpent, we've got a mandate for things being stainless and running without configuration
and making sure we can roll back offline. So some things in terms of the core experience have to be packaged up and managed by the package manager and
Not using say like butterfest snapshots and things like that because then everything comes out of sync
But yeah
I can see arguments for and against I think
Utilities and apps
Sure, but I think the basics should all be provided for by the
distro.
So in terms of your productivity tools, your office suites and you know, it shouldn't be
like having 40 of every single thing, but having two or three of each thing.
So there's a little bit of choice and those are well integrated and sensible and tested then yeah but as for the wider recall system got well that's
that's my view on it anyway I don't want to go to flat pipe or Firefox or
Thunderbird I want to make sure they're they were deeply integrated by my
destroyer you know know that they're working with the security configuration and I haven't got to go online to do
anything with it, you know, basic shit like that.
Sure.
No, that's, that's, that's certainly understandable.
Um, so why do you, here's a question, maybe, maybe you don't have an answer
for this one, but why do you think there has been this focus on immutability first over the atomic updates from a lot of these other approaches?
Why do you think the OS3 approach has become such a popular way of building some of these distros? I would love to say it was primarily technical reasons but I don't really
think it is. I think quite a bit of it has to do with the Yocto story, industry
sponsorships and politics I think powered a lot of that success if we're
quite honest.
Because there's a whole world trying to get away from the old bit-baked way of doing things.
A few years ago there was a little bit of drama and then you had the norm way of doing
things and that sort of took off with relevant sponsorship.
It also makes sense obviously for flatback way of doing things and I think it was something
that was seen as technically more feasible to pull off.
Right.
Given the use cases in mind, I think I haven't read as much on it, but I think if anyone
had looked at say what we were doing with Sarpent and that they would have said, this
is going to require far too much upfront investment to pull off.
Well you spent the last 20 minutes talking about how it works so I think you might be right there.
Yeah I mean if you wanted to see results and your basic priority was you know like here's our defined
use case this is what corporates approve we have a sealed delivery verified updates and
that works you know like in terms of, do we meet update safety?
I think it does, it tick all of those boxes.
And I think Serpent's kind of in a weird one
because everyone's gonna say,
but we've already got OS3, we kind of don't need it.
And there's distro box and there's RPM OS3
and there's OCI and things like that.
And I agree, all of those things do exist.
And for a lot of people that might not wanna use Serpent,
that's also fair enough. But it's also about Serpent having the bottle to push forward with
things where other people don't want to invest the resources because it doesn't
say quick enough returns.
And that's kind of where Serpent is really, because it's taken a lot of time
to build all of the aspects of the tool.
And take for example, boot management without scripts.
And that's, that's the sort of things, because some of our rules say like being
stateless, we can't force ETC files to exist.
There's no ETC default group.
We have to pretend like we don't know where the boot loader or
boot partition even exists.
We're not allowed to remember it because it would go against stateless.
So, my own sort of serpent, there's absolutely no file anywhere to tell Moss or any tool where the
boot partition is. It's not allowed to know. So that becomes a hard problem to solve immediately.
So that was one of the projects BLS for me which is boot loader
specification for me and because it's system D related it also is pronounced
blasphemy. That's why but you're not. So that's the core crate that we use at
the moment it's largely a successor to my early work with Clear Boot Manager. But
the TLDR is given the proposed local system state that the contents of a boot and or ESP
partition should be entirely reproduced. That includes the bootloader itself, any configuration
files down to knowing what the command line configurations to pass through there
What the topology of the disk is if there's you know
Is there a UUID for lux that needs passing in because you've got an encrypted container halfway between and what's the partition UUID
on GPT for that disk. You know all of this shit that's normally just encoded to a file etc default group or
Somewhere similar and just saved across time and upgraded with a bash script this and all of this shit that's normally just encoded to a file etc to fuck up or
somewhere similar and just saved across time and upgraded with a bash script.
We've actually had to go a little bit further in and if the variables are provided over
EFI VARs then we can query them from systemd boot because hey you booted us thank you. We'll still verify them because we're not taking your word for it.
hey you booted us thank you we'll still verify them because we're not taking your word for it
then we'll query the topology of the the root file system so we'll basically walk back through the device stream actually scan the first few bytes of every disk that we find to figure out
what the superblock is and extract the uuids and so we actually find out what every file system on
the way up is including if there's a lux 2 container if there's any LVM2 stuff involved
If c64 and exf, exfs, the whole lot. We've actually got ROS based superblock powers just four of those
And then yeah
We write out all these configuration files whack them all out
Automatically discover the ESP if we can't find it or we don't trust systemd boot, which is also
both two good policies, it will actually fall back to reading the partition table itself and then
finding the tagged ESP links and next boot loader using the UUIDs. So it's insane. If you was to
propose this, like at a company and say say this is the thing we're gonna do
We're gonna create a package manager that also knows how to do off with boot managers and find out what file system you're running
But it all allowed to have configuration files
Fuck off you fired
You could never propose it
So that again, that's basically the gap the surface filling, you know, like these long term, how
do we fix how we distribute them?
How do we make it reproducible?
Not in terms of the bit for bit, bite stuff, you know, like build reproducible.
Of course, that's important that will come in time.
But how can I have a definition of a system that I can reproduce on any given system and know that it's always going to turn out the right way?
That part is an interesting problem that I don't think there's much attention on.
The attention so far has effectively been the immutable image. It's a sealed image. We know the difference between image A and image B.
But when the user is composing those images in any given environment, how do they know that those things are still going to work?
And that's sort of where Serpent fits in. The weirdo.
So whilst people have described what you do as like a, you know,
jump between different things, I think a friendly way to describe it.
And I have seen a couple of people say this.
What you do is conduct a lot of OS research.
And I think that's a really good way
to look at what Serpent is.
Like this is, it may not be anywhere near ready.
And it's been a working progress for a long time,
but this is researching a way of building a distro
that hasn't really been that delved into.
that hasn't really been that delved into.
Yeah, and the other thing we want to do is actually make it a bit of a family of distributions as well. That was one of the key tenants because we've not really
had many from scratch efforts that have taken off over the few years, I'm realizing that most of them are me.
I don't think I'm really...
Awkward.
But anyway, because we're getting the tooling
as the main priority, because we're making sure
that these things will keep updating over time.
So like, if I switch it off for a year and then update it is some weird configuration change going to affect how the scripts run and you know like
I want to make sure I can deal with all those things that I feel comfortable running and other
people feel running for as long as they need to. If they want to build their own variant of Serpent
or they want to build something completely new just using the Serpent tools. That's kind of what it is. This is basically, if you've ever wanted to build a Distro and you
go I've got all these ideas and I'll put this thing together and that thing together and it's
going to serve this use case and then you realize the only tools available to you is basically
fucking RemasterSys to just re-spin somebody else's eyes on and you're still using the exact same package management tools, the exact same configuration stuff
you still have to reproduce the fucking installer and everything again. Why has
nobody done that for us already? So hello this is where CIRPL comes in we are
giving you a box and they go now fuck off and make your digital. This is
basically what it's about so you have the freedom to make something.
Having the features and guarantees that exist more
at the enterprise scale,
but like any amount of digital learning.
So if the small shops and businesses need to roll
an appliance, it's easy for them to do so, it's approachable.
They have advanced tooling to support all of the use case.
They want to be able to bootstrap, we got the know-how,
you know, so that's sort of where it comes in. It's in a way, I guess it's kind
of like a Robin Hood version of tooling. You know, like we stole all this from the
industry to give it to you. It kind of is that. Yeah, I mean that's basically what it is.
It's a new ecosystem. It's a new way of building distro. It's not any individual idea that we do is not new.
It's not even remotely fucking novel,
but putting them together like in a one-stop shop,
that's the bit that actually matters
and making them so others will be able to use them.
Because again, it's not just gonna be Serpent West.
There's gonna be other variants of Serpent.
There's gonna be downstream.
So they're gonna be very not Serpent Serpents as well.
If that makes sense.
Right.
Well, you make a point about like just making
effectively a spin of things.
And that's the reason I don't really talk about
distros that much.
Like there are people who do these distro reviews
on YouTube and it's just like,
yeah, but if I look at something that's Debian-based,
it's probably just gonna be some sort of Ubuntu-like flavor.
Or like, technically Ubuntu has enough of a distinction from Debian to be its own base, but...
Then like, you know, you have your Arch-based systems, your Gen 2-based systems,
your Fedora-based systems, your Gentoo-based systems, your Fedora-based systems, and that like...
For the most part that's pretty much what you get, like there are these little projects, but
for the most part... Tastes and flavors. Like people have talked about like, hey,
would you rather use Arch Linux or Endeavor OS? Like it's... Endeavor is just Arch Linux with an install script like it
that's that's all it is yes it wouldn't get beyond because it is like
don't know I'm not belittling the work that each distro does no no I'm in some of them do
like and Casio is an upstream issue yeah yeah yeah and Casio as they like you know
they get a lot of praise for the kernel work. Yeah, absolutely. But like a lot of distros just,
they're just not really doing anything. They're variations of defaults. Yeah, yeah. Yeah.
And that has value for some. And there's a lot of other ways of doing that, right?
Yeah. So that's an interesting little segue into something we're doing in the surface. Remember I said earlier on, it's like, we pretend to be imperative.
Now that's not to say that we're entirely declarative because what's in ETC and VAR are basically your problem right now.
They're yours. But a package in certain ways is not allowed to contain any other file than the user tree.
any other file than the user tree. It was literally unsupported.
We will not allow bolder to generate a package.
It does that.
And then implicitly we've stripped the prefix
from all paths so that it has to be slash user
as the basis of all paths.
It's impossible to install a package
that contains anything other than user file.
So we had to force the statements.
So that kind of means anything that's in ETC is basically that
is yours, we ain't touching it, there's no possibility for a conflict. If you want
to reset your system just delete it and reboot and you're back to the way it came
from default. It's a little bit slightly more involved but basically you generate
a new transaction in the mouse and it would rerun any triggers like running ld config and temp files
it would rerun all of those but by and large you could implement this as like a boot script to be
honest you know like it runs in the nrd just wipe ctc boots again one of the things we have been
exploring as we're going forward like we've got this we've got this version of moss we got this
version of the stone format we're quite happy with where they're at. We've already planned for the v2 stuff which is like
supporting FS variety by encoding the digest, having moldy SIG and sorry we're not doing SIG
store we're not OCI not happening. It's just some things are just ruthlessly applied where they're
not relevant and this is definitely a case which is is literally is not relevant. We own our own binary encoded format we can
just transcribe a log into that you know we could just use the HMAC of the prior
entry you know it's not hard we can have a ledger inside every single point. Anyway
what we're gonna do next is have a system model. Okay. It's not our idea. If
you think about when you're on Gentoo or anything like that,
you have basically your model is defined as your file,
which says this is world, and this
is what I'm handling through.
And every time I do it, this one gets added in, right?
So we are going to do nothing like Gentoo.
I just name dropped them. We're going to have a system configuration file or series Nothing I don't do.
We're gonna have a system configuration file or a series of files
Which will define what your model is supposed to be. So the basic idea
Well the basic problem that we've run into even though we're emulating the imperative behavior it's still a proper pain in the hole because
As you're updating over time you have to differentiate between what's allowed to stay installed and what needs to get pulled in which means you have to
deal with does the system provided version provide the dependency I'm
already looking for or is it provided in the repo so you have a distinction which
is corrosive really a good example of this was the sting package that we have in serpent. So
We were doing some testing this never got released or no one except I saw we was originally using lib archives BSD towers
the
work fine for ages
Same will only work with canoes there. That's the only one that's gonna happen. So is that okay? Well, I'm gonna swap over the dependency
and make it happen.
Now in SerfDrop we have variations in the names providers we can say,
I depend on a binary or I depend on a sole name. So it depends on binary tar. But that's simple.
So I rebuilt libarchive to drop the tar link and I've rebuilt, sorry I added canoe tar so that the only
provider in the entire repo of user bin tar was canoe tar. Unless we've already had tar installed
from libarchive at which point there is the distinction rule it's already satisfied so I
don't need to go fetch an uptown. And that becomes a proper pain in the arse and at that point everyone's like, use a SAT solver! No. Instead, instead, we're gonna, we're gonna fix the
problem. Okay. We're not interested in theory behind the maths. We're gonna fix the problem.
The problem is very, very simple. At any given given point whatever ends up on your system
Really what you want is how it is represented in the final repository that that's it You don't want any other distinction from that because that's the way it's packaged
There shouldn't be a variation just because your system's fucking weird, right?
Then that's where a lot of bugs do come in when we get partial updates
So I've refreshed my repositories I'll go and install a package
It sees the new version of the package
It pulls that one in instead of all the upgrades. I also needed and fucking system host. We've all been there. It's horrible
So we said we're not gonna allow that anymore. There is no concept anymore of what is installed
There is only what your system model says should be present in a newly computed transaction
should be present in a newly computed transaction. Because we realized we didn't need to remember what was already in any way
because it's fucking nonsense. That was the last stage.
That's yesterday's news. We're producing an entirely new version of the
operating system locally every time you do any operation. So why do we
need to remember the old dependencies? Why do we need to remember
all of the transitive depths? It makes absolutely no fucking sense at all. Which is reproducing it. So
if you if you look at the simplest terms imagine it was like a god forbid a YAML
file. We've got to keep that industry going. Not a fan. Yeah well I mean we're using them at the
moment but we are gonna switch to cuddle because it's actually a lot nicer.
We've been speaking with Kat one of the devs as well, we've got a bit of a plan going on there
and it's just like, it's just nicer. It's just nicer tagging things as he's pretty.
Yabon can literally die in the fire. So imagine you have this file of lines where each line
of lines where each line is separated by slash r slash n. There is no yellow.
Every line says this is the name that I want to solve or this is the package I want to solve, blah blah blah. It will just recompute the entire dependency graph for a new OS install,
new transaction that solves all of the weird dependency issues. If you don't need anything
anymore it's no longer pulled in, it doesn't matter. We can garbage collect it because we delete the old states and
then we decrease the reference with those states on disk. Where it gets really
really interesting is that because if you've shared that model under repository
configuration you can reproduce it on another system. And where it gets more
interesting again is we've got something called version repos coming up. So long story short, remember I said earlier on, you will only update to the latest supported
version of Moss.
That's the package manager, right?
So let's say we've got version one of the repo and it needs version one of the Moss.
And then sometime in the future there was like a version four and that needed a certain
version plan.
The way that we're going to do it, we're not going to go back in time and fix an old release. Every time what we're going to do, we're going to create a
new snapshot of the the repo, that's immutable and that has that version working of MOS. So from your
local client you can only see that that version is never going to change, the upgrade path is never
going to change for it. Now if you you link that in one that protects us forever
because we can keep upgrading,
it's just not going to break.
It's just the way it is.
If you then link that with the model idea,
you could actually export a lock file
which references those unique versions
that you had at that particular time
and exactly reproduce that install somewhere else
because you've locked those versions.
Yeah, so you kind of get like cargo locks
for an OS at that point.
That starts to get a little bit sexy.
Then we thought on it a little bit further
and we thought, okay, we kind of have this problem
with co-installability, which is a bitch,
which normally is solved by having conflicts
between packages, which is messy really.
And then we've all suffered update alternatives for years which is also kind of messy
really then we realized again why would we update any symlinks we're producing
the entire fucking file system every single time it makes no sense so we
thought what if we had a way to augment the dependencies with
a path, like a named subscription. So that if I say for Clang, my name subscription is
18. By overriding that bit of dependency management, the path that it follows. So if you imagine
Clang was actually a virtual package,
it's not a real package anymore.
It says, I depend on Clang 18 when it says 18,
but I default to 19.
So I have 18, 19, blah, blah, blah, whatever.
We have the default values baked into the digital,
you'll always get the right version.
But by overriding and matching to the paths that are exported, your system is
composed based on your preference so that the right clang is activated because you said
you wanted it. Or if you have say Python dependencies and you need the 3.11 version or 3.9 version,
the dependency path is met, but that's all that you end up subscribed
to and installed on disk. If you had two different versions of Steam and one conflicts with the
other, it wouldn't matter because the dependency graph itself becomes atomic. And that's where
it gets a little bit crazy. Because you produce an entire version of the operating system
every time locally, very, very quickly, you don't have to worry about where the path is going to be ahead of time
because it either works or it doesn't which means you can have update alternatives baked into the
operating system at the package level and you can locally say well in my package build this is not working
with the Rust version of coreutils. So for my build I actually need the
GNU flavor so I'm going to depend on GNU and I'm going to tag it with a GNU one.
So you still say I need binary LS for example as your dependency. You're not
saying I need GNU coreutils. You might tag that binary LS and say I need
the GNU version of that because we know that's a dependency.
So for that build it would build using that.
On your local system you might be using the default which is the Rust version.
But if you have problems with it you could override that and all of a sudden you've got the GNU one coming in
because you're using the capabilities rather than the package names.
And that's the distinction. Nobody should care about the package names.
They're boring, they're uninteresting, they're basically slots on the
database. Nobody gives a shit. But if you say like I need user bing rm, well that
makes sense. You know, or if I need a certain sole name like libz.sole.1
x8664. I don't care if it comes from Zlib or Cloudflare Zlib or Bob's Warehouse Zlib or whatever,
you know, or rewrite it in Mozilla. I don't care. I just need Zlib. But I need a way to override it when it makes sense and also have that same default.
So I'm not creating this absurd, you know, exponential text and test matrix. You still have the the destroyers built one way but you still don't get co-insoluble tool chains and the ability to change between them as
you need so when in Mars you don't have an upgrade you have a sync which should
be very at home for the Pac-Man users among us. When we say sync it's we don't
care what's newer or older or that.
I know that sounds absurd, it really does.
But we literally don't care.
We only care that the package is different.
So the way that we build the graph, it's just,
in theory, it's just a simple directed and cyclical graph
and then we top-notch and sort it.
But that's actually built on top of a providers
and dependency system, which is also built based on top of a providers and dependency system which is also
built based on top of layer priority layer plugins which is how one repo can be hired
another but you can still have a leak from one to the other so if this one has a name
and this one has a name that's different you know one excludes the other but this has a dependency
that wasn't there this one's seen so it's that it's that sort of idea it allows us to have a lot of fucking
powerful features at basically no cost just by this basic concept of why don't
we just reproduce the entire operating system every time we do a thing and by
making that cheapest chips as I said we went from every transaction being about
30 seconds now being a couple of seconds on top of, you know, we're doing parallel decompression,
we're using Zstandard for all of our payload. You know, we're parallel fetching things,
so you've got eight packages downloading at a time. And, you know, so it makes it frightening
quick just to do a transaction, like to remove that or to add that kind of thing. And every
transaction is just a free copy of the OS reproduced.
And then icing on the cake.
So let's say every one of your transactions
is only taking up like a couple of megs on space
because it's all,
it's really the weight of the directory structure.
Most of it's just hard links.
They're like, what, 4K per node, yeah?
Because we have that entire directory structure
on disk still, you actually still have your last OS on disk every time you make a transaction.
Just by the nature of how it works.
So it came for free. We produced this deduplicated shallow copy of the operating system every time.
It's like having all these shallow combs on disk at different tags.
We can now just boot back into the last one.
Yeah. We can now just boot back into the last one.
It's that simple.
Like you just swap the user tree again, that exchange mechanism I spoke of earlier on.
We just swap for the older one instead of swap in for the staging one.
We say, no, actually I want 192.
I'm going to swap back for him and then boot.
So we added that a little while back.
And during during Drake basically like in in an Rd before everything is
mounted it finds your disk drake up mounts your disk puts it in place and this was actually
inspired the way the way the old street guys have done it did have a look but when it's mounted to
slash this through it's you can see your operating system there we have got moss actually built
inside the unit ram disk now and it would just pointed at the installation, it's like, yeah, can you just roll back this day?
And it just swaps the directory software for us using the rename exchange.
So it's an atomic roll back before we've added early boot.
So system D hasn't even kicked in properly.
We've got the unit RD version of system D.
We haven't done the handover yet.
Then it's handed over.
Everything starts with the right links,
the right files, the right versions of the operating system,
right defaults.
So it was really, really, really fucking cheap.
I think it only adds like, well, now about
just under two seconds in the delay.
That's to do with some weird resolution thing
for the Ruler Fest.
But long story short, free rollbacks.
Atomics is basically the way to do with everything. If we hadn't gone Atomic first,
we wouldn't have been able to solve these problems at all, to be honest.
Rollbacks is one of the things I think are really interesting about the
distro, like those OS3 distros, and it's one of the things that has been kind of compelling
about maybe trying them out, because you know,
if something is like a broken package, there's a regression in something, whatever, anything
like that.
Like being able to easily roll back like that is very, very nice because you can, you can
roll back packages on a traditional distro like Arch, but that involves like using the
package archives and installing old package versions, and maybe it's incompatible
with your, like your C library, then you have to roll that back as well.
And it's just a big mess.
So having a, having a rollback system built into the OS, I think like, it's not something
you need to use often, but when you need it, it's very convenient to have.
Yeah, I don't know if you see the rather click-baity demo
of it I did the other day, the LTT test.
No, I don't think I saw that.
But I demonstrated it, and basically I removed G-Lip-See,
lost the entire distro, rebooted
back into the non-desktop, which is always fun.
Because it was the last working transaction, because it's integrated with the Blast from
e-Stuff, we have to produce working configurations based on the kernels that are present, because
the kernel is no longer present, we didn't produce the boot entry, therefore you just
automatically rolled back into the old version. So it was like an accidental safeguard because
you couldn't produce new entry when it booted up the old configuration entry was the only one on
disk so even though the disk was the mutated broken state the rollback happened automatically
forming like by accident which was sexy. That was kind of cool. So yeah all those little
things where we've you know like gone absolutely not invented here crazy.
One when they all come together it is kind of useful because there will be
those times like testing the Nvidia drivers is always always Nvidia drivers.
One of the things people don't talk about in the same like, you know, you can roll back this
other distro's always keep three kernels on disk and things like that, which they normally do.
They don't. They don't.
Arch does not do that.
Arch does not do that. No, it does not version its kernels.
It does not. It just YOLO.
Yeah, Arch does not version the kernel that has it
stalled on disk. Like obviously the package version is stalled but the actual kernel on disk they just
replace it. Yeah well this is why I say you should install a secondary kernel. Like just
have the LTS kernel around just in case something goes wrong. Yeah. No, that doesn't make sense.
That reminds me, we've got a sort of similar issue, and it's not really an issue, it's a solve problem without an implementation.
So at the moment when you do an update to a kernel, again, it's going to be the same thing in Serpent, but not for the same reasons,
because we've swapped over the file system. If it tries to load a new kernel
module it can't see that path anymore. We've got a fix coming for that because
the old file system actually does still exist that's the difference. It's just
unreachable. So we're gonna make MOS record the path of where it was ghosted
so that they can we can just patch Kmod on the kernel and they'll be able to follow it automatically. But because of that we had to build
FAT32 support directly into the kernel itself because of what you can't mount your ESP.
That was an interesting problem when that happened. And for the NVIDIA stuff,
normally the kernels will roll forward, the Nvidia is locked to the kernel tree.
So then if you try and roll back,
your Nvidia is nearly always out of sync.
So you've got to redo that again.
And if you're not using the AK mods on like Fedora,
you've got to use the DKMS stuff.
And your headers are out of sync as well.
And it is a complete pain in the hole, to be quite honest.
So being able to roll back with the drivers and kernel
and file system sync as one it is actually really really handy to be honest with
because I've hosed too many installs to trust myself I can build a digital
couldn't tell you how to use one
well you did forget your your driver, so maybe, maybe...
I know, I know, I feel terrible.
I'll fix that, it's on my list.
Okay, okay.
So right now Serpent is in Alpha.
Yeah.
So what is it that still needs to be done
and what would a first stable release of Serpent look like?
I'm gonna be honest, I've got no interest
in the first stable release.
I'm milking at Gmail stuff.
It could be Alpha for the next 10 years.
It's gonna be using that label so long,
like people are gonna get sick of it.
It was originally called Pre-Alpha
because it was like, no, seriously, use this you're like your hard drive will explode
if assuming that the car does support it. If that happens like if we remembered it in the K-con
big it's definitely going to be obliterated. To me like it felt very very early very very rough in the pre-alphas because it was to be quite blunt.
With the alpha series at the moment I'm only really looking at one or two more
alphas because a lot has changed so we're deliberately focused on basically
mostly the norm desktop making that work well and the operating system around it
before we start expanding the repo.
We have got roadmaps of things that we want done,
but what we're trying to do is decouple the ISO version
in from the rest of the OLA.
So there's never gonna be a one point anything.
There's gonna be the zero point series series and then we're gonna start at
two because I'm a massive troll.
Semantic versioning just fucks my head completely.
So I was like, I'm gonna have some weird kind of timestamp type thingy that's also linked
to the Moss format version, which I also made version zero.
And I thought, I don't want to give any sort of
Stability ideas around a version of it. I've worked with a mazilla code base for way too fucking long
So I decided I was gonna just like bomb straight to version 2
Yeah, there's a lot of you miss on every gonna be a one. Yeah
Well, I look I like the way the Colonel does versioning which is when the number is too big and Linus doesn't have enough fingers left, he just bumps the number.
Yeah.
Seven.
To be fair, like, the 2.6 days were long.
Yeah, they were. Yeah, they were. What was it like?
They were...
Seven, eight years? Some stupid amount of time?
And then I ended up... I remember going from the 2.4 to the 2.6, I was on Slackware back
then. I bricked Lilo, HDA got absorbed into Libata, so it was an SDA 1 on Rebu except
I didn't make it that far because it couldn't find my hard drive anymore. Then I reinstalled
Grub and then it ate it.
My favourite part about the 2.6 era is it was so long that some stupid
developers decided to build in expectations of the kernel would be on 2.6
into their code and some software actually did break when they moved off of it.
Nice.
It kind of reminds me of all the, the checks for Windows. If the version number started with 9.
If that works.
God. Linux, I'm relatively new to it, but I've been using Linux for like 4 or 5 years at this point.
But I really do enjoy going back and looking at some of the early history that's happened in this space because
whilst not everything has been archived, a lot of it has and there's a lot of really early discussions you can go back and see and just
just see that, you know, nobody's ever known what they were doing.
No, never.
I think this is the world's longest demonstration of the phrase
put an organizer piss off in a brewery.
Nobody's cracked the year, like literally nobody.
Mm-hmm. Mm-hmm.
It's, look, you know, things are somewhat more organized than they used to be, but...
Hmm.
You know... Things are somewhat more organised than they used to be, but...
You know.
Yeah, you know first hand.
I'll just embrace it all now, the way the...
Because the Linux world has changed a lot in the last few days.
I can still remember...
I wouldn't say fun, but I can still remember like using barrel pre-compass days and I had the marine rgba
theme you know if your if your screen wasn't rotating fish tank there was something chronically
wrong with your head you know that's the way it had to be you had to manually patch broadcom to
be fair that's still not fucking changed right Broadcom has not gotten any better since even then.
And yeah, you had to change your run level if you wanted to install the Nvidia drivers.
This is like pre-fucking system D, pre-upstart as well.
You know, back to run level three, build drivers, if they worked, if they installed and depending
if you was using the right distribution of XR versus X11, but it might work and then
you could actually change your init tab to go back to run level five and hope to fuck
it that you came back online.
So do you always-
The biggest-
Sorry, go on.
No, go on.
I was going to say, so do you always find it kind of funny
when people say that Linux is hard to use now?
You know, coming from how long you've been using it for
and the state it was in when you were using it then,
like you'll still see people now be like,
oh, well, Linux is hard to use.
I have to open a terminal sometimes.
And it's just like,
what, like once a week I still remember and this has gone
back a while gone back even before like the prominent KDE 3.5 day for it when you
had a choice of options in gnome which were basically all of the clear looks thing and you had the ugly horrific pre I think this was
was Fedora Core back then it was FC wasn't even Fedora I think it was Fedora Core
back then I can still remember the little horrific ugly ugly little bastard
terminal windows with the little blue bars on them.
People say things have got harder, they haven't. Like we've got work in font support for one.
I don't know if anyone remembers but if you wanted to have Andy Ulysses and actually working in fonts a few years ago or subpixel rendering you had to go and patch free type. That was normal.
Like...
Yeah.
Patents have expired.
Like we had to do it and sold it a few years back.
You had to install an additional sub package
which could be removed if you was like encumbering patterns.
You couldn't do MP3s because again, because the batten, um, you'd have to have
lib DVD, CSS if you wanted to watch fucking DVD and hope that it did work.
And if you had any of the, the OrkTech media drives, then you were screwed
because you couldn't find devsr zero.
I remember all the pains and now I can just stick a USB into me laptop and then Fedora will say,
Nope, I'm not reading it.
I've got USB guard.
Well, that's a separate issue.
Yeah.
But like, you know, even just in the time that I've been using Linux, things have gotten,
you know, things have gotten simpler.
You don't, like, realistically now, you don't even have to use a terminal to install software.
Like, even just that basic thing, most desktops and most distro bases have some sort of graphical tool
to install all of your software to update all of it and
It just works like yes, if it goes wrong, it'll throw some weird esoteric message you which
first
The way error messages are handled in the graphical tools can be done much better
Usually what it does is just takes the terminal output and just dump it there
A critical error has occurred reason a critical error error. Far in the deep package trickles.
Yeah, yeah, yeah. Or you have...
Well, my favorite example of things where like a new user is gonna do something wrong is
during the LTT Linux challenge where Linus nuked the entirety of Pop OS
the LTT Linux challenge where Linus nuked the entirety of Pop OS
Because there was some issue where Steam relied on an older version I think it relied on like an older version of
Can you see or something and it had to roll back of that which caused every other package on the system to be rolled back
Which deleted everything?
Why would you need that? Why would you even need it?
everything. Why would you need that? Why would you even need that? Look, I don't... It was... The worst part about that is it was known about by Poppa West like a month before that happened
and they just haven't fixed it yet. Awkward. Yeah. So took the entire C-Lobri out. most of the dish wrong yeah yeah just go on made a memory safe memory safety um we
when when i was talking about rust the other day you you mentioned to me there was like a
a point where you didn't like rust and now if i look at these serpent tooling
i'd be hard-pressed to find
stuff that like you know wasn't written in rust hmm it was the was the
evangelism you couldn't have a conversation
without being told to rewrite it in rust not even the tip of the conversation
you just got extremely fucking irritating to be honest like I got to a point where I just completely ignored people and you started to hate the mention of Rust and
I think that happened to a lot of people to be honest with you.
Yeah they were in my comment section.
Yeah you should redo this in Rust and it's like yeah no I'm actually too as perled because
maintainability but I just completely switched off the idea and I tried it a couple of times and I couldn't
get around the syntax.
I think I once described it as a daddy long legs tap dancing through inkwell or something
like that.
Like it was absolutely fucking horrific.
But then one day I decided to reflect on that during
my adventures in D-Lang. You know you've got to a certain point in the
programming language being niche where you're literally having to fucking port
the compiler to the new version of LLVM. Like that was a bit of a wake-up call.
Yeah, yeah, yeah. This isn't my job.
I'm trying to build a distro over here.
To build my gaming engine, do you remember?
So I had another knock around and I did for about five or six months I was doing those little comparisons.
I was saying what level you'd need to go to to get similar output
in terms of optimization.
And it turned out that the thing would actually freak you so fast even with a garbage collector.
Astonishingly fast.
Really, really productive and the template and stuff was just fucking absurd.
But there were problems.
Garbage collection by default never sat easily to be honest, because if at some point
I need to be able to pivot to developing firmware or whatever, I need options.
GCEing and I got it there and there was never enough traction against that.
There wasn't enough of an ecosystem, it was too fragmented, as the serial distro did.
Just it would have taken more commitment than I was able to give.
I would have been more time working on language than the distro and that's not something I
want to do.
So I thought, okay, I'll have another look at Rust and then I looked at the syntax again
and I was like, hmmm.
And then I thought of something.
The one thing that everyone's complaining about is just the syntax for the viral checker.
What baseline have you got to compare it with?
Do you know what I mean? There's not dependent on a GC or a VM that is memory safe. And that's, that's
the key differentiator, you know, like, yay. All right. You might have your JVMs, you might
have like Python to a degree, you know, there is memory safety and not so much in concurrency and race conditions
but there is you know in the in an undangling sense you know there is some level of memory
safety but in terms of compile time and understood by machine rost is basically all there is in the
class right there's nothing to compare it with in syntax it doesn't exist it was the first to do it so at that point I was like okay you kind of
got to be fair I was being too harsh on the language for something that it
basically pioneered so once I got past that and I realized you know you can
actually have some lead in lifetimes and a lot of things like generics it's got a
lot easier by ignoring that and
then all of a sudden I thought I'll give it a go, how are you going to be? And to be
honest with you once you do dive into Rust and you start ignoring, because you can go
months without even encountering lifetime issues when you first start Rust, be quiet
on it.
Like in terms of the basic devil's are you never get past the and even when you do run into the fire and.
Compiler issue it will actually give you a link.
No here's a link to understand the issue here's the documentation here's the error code here's a little pointy character exactly exactly where you fucked up yeah and if that's not good enough then when you're're using the LSP, I use Zed, most people use VS code, but you will actually get the proper
diagnostics, you know, you get the relevant fixes,
the refactoring opportunities. And on top of that, if you're using
CoalPilot as well, so I use Cloud 3.5 because GPT-4 is
trash, to be honest just
delete half your file it also a bit slower the diagnostics are way fucking
better and I can work out the issues most of the time for you so with that I
mean how many crates are available license compatible crates I might say as
well rather than everything being fucking GPL.
Because let's be honest, once you get to GPL,
your options are limited.
It's simple as that.
I know people can say,
but you know, GPL is our savior.
Not when it's GPL 3 and your fucking base is MPL 2, my friend.
At that point, no it is not.
Because all of the serpent stuff now is under MPL2 my friend. At that point, no it is not. Because all of the all of the certain
stuff now is under MPL2. I did notice that yeah. I was gonna ask you about that.
Yeah I mean a bit more of an MIT guy before. I've used Zlib for a few things as well.
Apache 2 I used for a bit but when I actually did my research and when I was
working because I was working at MZLA on Thunderbird for a while as well
I wanted to do my research and basically like okay well what does MPL buy me or
say using Zlib or MIT or any kind of do what the fuck conditions. It basically
comes down to patent protections but That's really what it is.
And they kind of matter. So I decided I like the license and everything I do henceforth will be MPL.
Which was great.
But until...
There comes a point.
So one of the design requirements for MAS is it eventually has to eliminate all dynamic
linking because some of the name changes on upgrade hardware as we've all said.
LibArchive, Pacman, anyone remember that one?
Big badaboo.
So depending on LibUID or LibBlockID or whatever it is, it's an absolute no-go. Because you would have to statically link them, which
is fine, except they are lgpl 2.1 which basically elevates to gpl 2 when statically linking,
which affects your entire fucking codebase. So we couldn't do that, so we couldn't even
use blockid. Even for partition management people don't realize libparadid is actually GPL3
it's not LGPL3, it's GPL3. So any code that you are doing using libparadid, hey congrats
your entire set of artifacts are now GPL3. So that would have violated the
license for our own code bases because we then use mot another component same
for blasphemy. We use that in other bits and pieces so it limited our options to the point we basically rewrote most of the
functionality we needed from block ID and Rust anyway in terms of identifying super blocks but
that's what's led to the new disk and RS project which is a little bit of a stupid pun as well, it's like Diski-Russ
But yeah, the idea is there is provide the foundations, shared foundations for decent library code for doing diski-type things
You know partition allocation of strategies, super block identification, topology
All in one place so if somebody does then one of them can't rewrite these demons and libraries and rust.
Dare as a toad, go and do it yourself. Again, Star Trek and what else is just the land of Lego.
I'm not pending because I'm feeling too.
So, okay, one of the things I did notice is that kind of just...
One of the things I did notice that kind of just
And it seems like an odd choice. The are the desktops that are currently supported on
Serpent is an up plasma. Well, yeah, it's it's gnoe and cosmic. I like look I'm running Katie right now I'm my plan is to eventually move it a cosmic when a couple of the issues that I have resolved
You know alpha software will be alpha software basically a couple of the issues that I have resolved.
You know, alpha software will be alpha software basically. There's a couple of crashes that are very fun that I can run into.
Besides that, also some memory leaks which are a bit of a problem.
Especially when you start using 70 gigabytes of memory.
Anyway, ignoring that part.
Anyway, ignoring that part.
Yeah, so Gnome and Cosmic are the desktop options you have right now.
Yep.
Why? Hahaha.
Uh, fair question.
Uh, Gnome, purely because of my own stack from in the Aradig, that's it.
Fair.
I'm used to working with it, I can package it in in my sleep so it's just an easy thing to maintain while
we're building digital. For Cosmic I like to bet on things I want to see Cosmic go
far I know they got the work out of from but they're trying. And if I'm honest, if I'd started Budgie now,
not many years ago,
I would probably be doing something similar code-wise to what they're doing.
So it struck a chord with me.
I don't know that I'd use iced, I'd probably use slim if I'm completely honest.
But it is what it is
you know like I think they also had like a similar internal discussion about
whether we wanted to use that yeah I believe I've talked to Jeremy about that
I don't really the reason why they ended up going with iced instead of slint I
know I suppose is more of the W in itself but I know in sling because
looking for the code
the last few days, you can do your own platform provider stuff. Someone actually wrote their own
compositor with Slint didn't they? It's like a it's a paper one it uses its own custom protocol
but long story short it works on the same sort of premise as for the Qt quick declarative stuff
where you just have a
shared buffer in OpenGL and you can just transfer it between things which is
basically how the Nvidia works. So you can even in SLINT you can provide a native
image and it just render it in any which way so that's how all integrations
which means in terms of Wayland that basically means everything
because everything is just a surface and a buffer. Having that option available means
even though there's not a great choice of widgets in there at the moment they've
got all the access kit stuff in there that I was looking at. There's a few
backends they have a Qt5 backend for some reason. I don't even. But one of the really cool things I saw which I'm planning to use for that, they have a
Linux KMS backend.
Okay.
Which means you don't need a display stack.
Hmm.
Now wouldn't that be nice for an installer I saw
A graphical minimal actually fucking minimal network installer only has the
essentials not the entire fucking desktop environment that triggers me I
hate having to ship an entire fucking desktop environment for nobody to use it
because it's using system D it's using Draco which means it's using overlay effect, which is not a UFS, it's not UFS.
Which means if you touch more than 35, it just fucking shit the bed.
I get it. I get it as an option if you want to like test out the distro, right?
Like that's neat, sure. Or if there's some issue and you need some Linux environment to fix some...
I don't know, you forgot your root password, you want to go reset that.
Whatever, anything like that.
And that ink has been bashed.
Yeah, or you could do that.
Security.
That is enough.
Well, that's what I do.
But, you know.
Or any other...
You have a disk issue, you want to...
For whatever reason, your root is not being mounted and you want to go and fix that whatever anything like that
Uh, you've got a UUID wrong when you set things up. Anyway, um
That's nice to have as an option however
it would also be nice to not download a
10 gigabyte iso to install a distro. Yeah
It's just such a waste of space.
To then update it immediately after it's installed.
And that's the kicker of watching the LeapRoffice go past
and the first set of updates knowing you will never fucking open it.
And it gets to the point, every time the set of updates go past,
you've still got it installed because you're scared to move it in case you end up needing it.
You're just wasting all that data for that money. But yeah, I mean even our installer is a
networking installer. There's literally no point in the desktop being there at all. So being able
to support that in the future, having an actual just networking so that's also graphical, also pretty.
That I'd be looking forward to.
I've been doing a bit of research work in the installer department.
Sure, because you can always do like a A2E installer,
but like the nice graphical installer is, you know, it's nice to have that.
It's got it, it's kind of, yeah.
I mean, I've been doing some experiments with it.
It is actually nice to work with. I've found it really, really easy to
work with. The slim files there are not hard to figure out. You just whack up a window on the
other monitor or just put always on top of it. It live updates the file. The callbacks are done in
a way that's really easy to access from the roster. As long as you're willing to accept that the main process is owned by the sun environment,
which you kind of should do anyway because it's the main thread.
You know, it gives you callback mechanisms of global function so you can just pass everything
across as data models.
When you really start to think about it, that's the way it kind of should work.
If you think about any like, cause I've done a lot of GTK work over the years.
Um, manually controlling all of the threads and synchronization main loop
seems wrong, but that's the way most tool kits already work.
Whereas the way that from what I've seen from simple last few days, you've got UI files and given your UI based logic
and presentation only, there's no way to have real business logic in there
because you've got to define your interface points which are your callbacks
and global functions or global structs. But that basically means that your main entry to your application, your GUI
application is just like, Hey, here's this thing, give me an app window out of it.
And I'll do something with it, which is basically hook into all of the callbacks.
You know, the only options you have there is to put something back on
slints, event queue back on its main thread to spike it back into it.
Otherwise you can't get into it.
It becomes a sealed and warro-
Did I DC again? What is-
What is Discord doing today?
Did I DC? Did he DC?
Someone DC'd.
Oh! Hello? Is it there, yeah? Oh hello? Yeah, Discord's doing Discord things today.
It's fine, we've only had it happen twice, which is fine.
Yes, I'm not sure exactly where things cut off.
Uh, it's looking good.
Eyes bad.
Fair?
Yeah.
Yeah, fair.
I don't know.
The whole Rust GUI scene is relatively new anyway.
A couple of years back, there wasn't really...
There just wasn't really anything reasonable to use.
There were like little experiments here and there, but...
The fact that you can build a desktop...
Seriously.
Yeah, the fact that you build a desktop in
person now, like that's a relatively new idea.
I mean, there's...
That's cool.
That's cool at all.
Don't let me piss on their parade.
A new demo was added to Slink Cold Base
about three weeks ago for the UEFI target.
I booted it up earlier on in the Kremu.
You can literally build a functional UI app in
sling as EFI executable okay graphical and pretty and stuff I was like so now
like I've been trying desperately hard not to run down and write a new boot
order to give us all that graphical **** that we were so **** **** terribly robbed of. And then like my brain was like, well with this
then it came as back end whistling, couldn't we have something that's slightly better than Plymouth?
You know, like have like a really, really **** proper, beautiful boot splash instead of that one
little **** spinner that everyone's seen next to the framework logo for the last four years. Like has something actually
pretty so these things coming about I'm excited about. It sounds stupid but I've not
been excited about the next graphic and stuff long long. But there's opportunities now
actually starting to open up. that to have cool shit again
And as far as I know somebody's already trying to do the bootloader stuff
Okay, I mix the West circles
Mm-hmm
That's gonna be kind of cool. Mmm. It'll be kind of cool
But yeah
Can you actually can actually pretty fucking?
But yeah, can you imagine like an actual pretty fucking bootcamp? That would be, yeah.
With actual menus that are categorised like, but still compatible with the system debut and stuff like that would just be, I'd love that.
I really would. Instead of having this ugly just fucking menu structure just yeah, give me a pretty bootcamp.
Yeah, yeah I agree.
I'm sick of looking at the OEM logo. I'm just I'm just done with it. Yeah, I know somebody crashes and it bleeds through against it
Oh
I want to go back to the old days of pretty Linux because it just we just settled really
It's too professional looking, you know, I like fun.
Yeah.
Flat and professional.
Yeah, I mean, that basically comes from the world of UX themed moldy patcher.
So like if I ain't getting a pirate boot splash on this, nobody's having that.
Those are good old days Windows XP piratists.
So what sort of, I guess, interest have you seen with what you're doing with Serpent?
You've been around for a while. I know, I know for Ronix, you know, for Ronix covers everything. So there's been been plenty of articles from them, but
from like what you've seen, like what what sort of interest has it been in the project um i think most people are interested in me shutting up and stopping
uh-huh um there's this growing hope that i just fucking give up and fuck off. Mm-hmm. But that's also not happened.
So like, I think in the last six months or so,
everyone started to realize I'm not really going anywhere.
So that happened to start to tolerate
the existence of Serpent and now
incorporate some ideas into their process.
Mm-hmm.
Which is, you know, marketing success and such.
There's been more engagement behind the scenes than you would expect.
Okay.
If I'm honest.
The people that are interested in it now, by and large, are well known developers,
especially in Ross circles as well. we seem to have been lucky enough
to have an influx of very talented developers. We've also recently been graced with a few,
I would say more gaming oriented folks as well.
folks as well. Yeah Luke Jones is the the ASUS Linux guy. He does the the ASUS D stuff. He's recently joined our channels as well. We've enjoyed having him there
and he's been we've been working together to get his patches working on
on Serpent because we use Clang not GCC for our kernels. We use client by default for everything.
So it's it's attracting.
More technical largely at the moment, even though,
you know, I aim for out of box usable experience.
But yeah, by and large, we're
more technical, more capable people who are kind of.
They're looking to challenge the status quo, I think, without having realised it before. I think before there wasn't really
the need to challenge the status quo, you know. I think in a way we all accepted it
and you know that, I should say that the professional feel just sort of emanated out across the
land and we all said, yeah, whatever, this is the way things are now, I'll be spoon professional feel just sort of emanated out across the land of me also
Yeah, this is the way things are now. I'll be spoon-fed. You know desktop and all the RPMs and not be that
like that was just I was the way the world and then I
Think maybe it's it's an excuse
for the rebellious. Mm-hmm. I think that's really what what certain
Represents it is an excuse for the rebellious
You know, it's it's a chance to disrupt and I think it's attracting those are capable of doing that disruption
Because we're doing we're kind of tearing the rule book up in a certain certain way as well
drastically Like ejecting things out of the code base just because we
fucking feel like it is very refreshing.
Um, like adopting the Rust alternatives before basically anyone.
Yeah, I did see one of the discussions on the GitHub about UUtils.
Yeah, we use UUtils, we use MTBDRS, we use PseudoRS, we don't use the upstream Pseudo.
Um, yeah, there's a few bits, like we took...
There was this whole world of RewriteIt and Rolston.
I had my own world of not invented errors, like, fuck it, what if they had a baby?
And that baby is a snake.
And that baby is a snake. But yeah, it represents different things to different people.
The way I've always explained it to people.
Has anyone ever thought about why they're using NuttX?
Why they're involved in the NuttX community?
No, I don't think most people do.
It is that community part of it.
People need purpose, people need to find a shared social setting to do so.
And that is something that represents a chance for a lot of people.
Most of us are looking for a church with some description but have no way to describe it. We have no reference point.
But by and large that's what these distraught communities are. They're refuges and churches for the similar minded to work and affect change. And while I'm not saying that we're talking religion here or
serpent, especially with our Eden tree, I don't think it'd be appropriate. It is a chance for
affecting technical driven changes for once.
Because as you said just now before,
a lot of projects are primarily the execution,
not the delivery.
I think really, being quite honest,
this is one of the first time in a long time
that the trend has been booked and said,
you know what, we're going all fucking in on the engineering
whole new set of tooling that's gonna be like
too industrial fucking scale.
And we're gonna plan the entire pipeline
the active format, you know, like
an entire new Linux distribution
and it's gonna evolve forever.
And we're gonna continuously replace all the bits and you know, like know like I mean the basic workflow is if somebody wants something in send
us a pull request on GitHub if we approve it the pipeline takes over and the bill turns up a couple
minutes later for everyone you know that's kind of the way it should be you know like we've
modernized it and we've made it open and accessible to everyone to do what they want with
tooling and in terms of the the corero experience itself, we take the contributions, but again,
I would really love it at some point if people made their own projects, their own Distros,
their own downstream based on it.
Because to deliver a product, you don't need 30,000 packages.
You need a shared foundry of recipes that everyone can pull, everyone can use to make their deliverables.
That's what it is, is giving them the tooling, giving them the quality recipes, giving all of
those integration points that are 10 miles down the road for you that developed it all together.
And just let everyone go fucking nuts with it. You know, it's,
it's the weirdest version of organized chaos.
Well, it's giving me... Because...
Oh, sorry, go on.
You know, it's just normally, you know, like, hierarchy is in the moment also, but I guess
it's sort of a freedom thing as well, isn't it, really?
Giving folks the ability to liberate themselves.
Let's be honest, when it comes to solving these
kinds of issues, you're looking at support contracts.
It's only the industry that would be willing
to solve these problems normally.
So for whatever reason,
someone else has decided to be an
asshole, we'll come and solve it for everyone. So like, some of the things we're gonna do
is not gonna make us any friends in commercial circles, like live patching
the kernels, that's gonna piss off. But it's one of those things of why shouldn't
we make it inaccessible for people? Like doesn't mean we're necessarily going to build the patches ourselves but if you want to run it, we'll share the mechanism. And then you can just run your own
updates to your systems from them. Do you know what I mean? These are the things that should have been
accessible but they're not. We are cut off from it. We, the masses that have been powering and
driving Linux 4 for years are cut off from the essentials that we actually need.
Because they're behind some sort of SLA or behind some license.
Why can't we all have all the goodies and still have the classic Linux desktop user experience?
Why can't we have both?
Well, I was gonna say, it gives people a chance who are interested in working on a distro to actually work on a distro
and not just maintain packages.
And that's-
That's boring.
A lot, yeah.
Like Fedora, Debian, all that stuff.
Like, yes, there's definitely work that happens
on like the backend with their package management solutions,
but most of the foundation,
most of the groundwork is already there. Yeah.
Antulin is very much in the corporate department.
It's not really, yes you can make pull requests and yes you can become involved in it, but
all of it is going to be very much in line with what the business patterns need.
That's just it.
But it's, and they're just nice, like for once, we had to make something that's good just because we fucking want to.
Not because we need to satisfy shareholders.
Let's just make good stuff.
And like, I agree on the packaging thing, like, nobody builds a distro because they want to pack it. Nobody. It doesn't matter how good you make your format. Nobody wants to. Just nobody.
So we're trying to automate the shit out as much as we can.
So one of the features we had in the old version of Balder, that's the package builder.
It's long been gone but it is our own joey's working on at the moment.
Automatic license detection by scanning like matching files in the code base. That's something that's coming back.
But there's other things we can do as well which is a little bit similar to
like what AutoSpec and Trellin and so on. Basically pattern match the build log. If you see
something matching, just like whack it back into the build depend. Run it again.
You know there's no issue of only counted files because my bolder will automatically generate some packages based on pattern matching.
You don't have to tell every file that's going to be in there. It will tell you, which is going to hurt, should they.
Then we have manifest that we can discover all of the installed assets.
We want to make it like it's an absolute piece of this, the package can update anything, and then automate that as well. So we have automation in terms of detecting the updates
being available upstream, using release monitoring,
but we're gonna use more data sources,
and then once that's done,
you know yourself it's gonna be bots
that are opening pull requests on GitHub,
and it's like, yeah, it looks good.
Approve it, if it blows up, revert it, fuck it, whatever.
You know, yolo.
Then do the testing. We can just do the VM image testing and it shouldn't be anyone manually writing recipes. That's great for getting
the thing started, but in terms of updating it, nobody wants to do that. It should be
like, yes, integrate DevOps processes, but the distribution should not be DevOps designed.
And I think that is also another key difference as well.
Again, it probably sounds snobby, but it's just the harsh reality.
Sovereignness is engineering, but in a nutshell, it's engineering first and then it's pragmatic second. You know, I'm not, that's where everything stems from.
Cause it had it been DevOps first, then we would probably be cloud native too.
You're really not a fan of the, you're not a fan of that, are you?
I just, there's, there's ways of solving problems.
I strongly disagree with generically applying one
tool to every like at no point has it ever occurred to me to use a screwdriver
to butter me toast yeah yeah there's a lot of screwdriver toast out there. There is a lot.
Horses for courses, but like, I don't need to understand Docker to use fucking Steam.
Yeah.
No, I get it.
I definitely get it.
Like, they're just completely different popular domains.
The context, it just makes it white and fuck off.
No, I just can't do i can't i can't
keep the pretence and the bullshit going docker files and steam they they're not even related like
not even third cousins it makes no sense i can't do it anymore so i'm not going to be employed for
the next seven years anyway after this and if you do don't, mate. I'm gonna leave it.
Well, on that note, I guess we can, you know, sign off there. Where can people
find you, find SerpentOS, and get involved with the project?
Before or after the League elections.
Mm-hmm. Well, hey, look, you got OS in the name, so maybe they'll come after you now.
Well, as soon as I get back to Ireland, we won't worry about that, but for the minute, just don't tell anyone where I'm staying.
That's why if you can turn the screen around, you can't see out the window, not plants around.
I'm not getting any eye out of this.
You can go to separatist.com for what appears to be a functional project website
which you will swiftly discover as a pile of shite, doesn't sufficiently describe the
website, lacks documentation and even up-to-date screenshots.
We have...
I don't even want to mention it.
We even removed it from the social media link.
We were ashamed of it. Okay, removed it from the social media link. We were ashamed
of it. Okay, well, we've got Mastodon.
Okay.
We're over on the Fostedonist. Fostedon, instance. Those words don't work well together. We're
on blue sky. We are supposed to be updating the name because people keep telling us you
can make it at Ser ways.com. Yeah, yeah, you can just like, um, what do you have the, the, the, the, I'm, I'm,
I'm not a networking guy. There's like a record. Yeah. Not DevOps. Yeah. It's like, it will take
you like five minutes to change. It's like a string you just attach. I know. Then I've got
to install like open tofu again on the the laptop and Linux Foundation vibes and shit.
Fair enough.
Because we've got this whole IAC project
for maintaining all the DNS stuff and that,
which is all really great.
But didn't we invent Dashboards a couple of years ago
so the incapable like me could do this?
Maybe just log in and just add an entry.
Yeah, so the main place really to balance with
yeah all right social media is we're on matrix assuming you can get on at a
point that hasn't been overloaded we are on the matrix.org home server in the
serpent.os space and the main thing is really just go to our github where like all the
shit actually happens so it's github.com slash serpent dash os.
The main project there is tools, I realize, that may have entirely destroyed our SEO
opportunity but it's probably a good representation of what the industry is
calling us. So hey ho, intrude yourself. That's the unified repo for Moss and Boulder.
There's the recipes repo,
which is basically all things packaging.
There's, fuck it, use a web browser, go look.
There's stuff there.
You'll find something cool there.
Yeah, I'll link it in the description.
Yeah.
There's some interesting projects there,
like the Discs RS stuff and, oh and what do they call it? Disso?
Disso is a little toy project we've got going there. If you can go run it you'll see it's actually
kind of pretty. It's just like a little dis-management toy but is just rusty rusty good good.
Yeah, nothing else you want to mention is that pretty much it?
Um...
I have four kids and a bad arm and no job, give me money.
Okay we'll do my art drawing then we'll end it up there
so
My main channel Brody Robinson. I do Linux videos there six days a week. There will be a
SerpentOS stream eventually when I get around to it. I said I was gonna do it. I keep not doing it
Maybe we done by the time this comes out. We'll see
I've got my gaming channel Brody on Games. I stream there twice a week.
Right now I'm playing through...
Good question, actually, when this comes out.
Nine Souls I'll probably still be playing,
and I'll probably be playing Ender Magnolia.
Also, there's a React channel.
I upload clips from the stream there,
so check that out if you wanna do that.
If you're watching the audio version,
oh, if you're watching the video version, you can find the audio version on
pretty much every podcast platform. It's on Spotify. There is an RSS feed. Search Tech
over Tea and you will find it. If you'd like to find the video version, it is on YouTube
at Tech over Tea. What do you want to say to end off the show? Give you the final word.
Yeah, I mean, the last thing that I'll say is you know like we're bringing this very very
serious endeavor to an end here. Uh what what would release first the stable version of Serpent
West or your live stream of you using...
Well we'll see how that goes.
Oh I've read it.