System76 Transmission Log Episode 10: COSMIC updates, Hardware Updates and an interview with members of the COSMIC development team at System76
3, 2, 1.
Welcome aboard the System
76 transmission Log.
Our broadcast is about to begin.
This is the latest on System 76
computers, manufacturing, and pop OS.
Now for your in-orbit crew.
Emma, we're recording a podcast.
How are you doing?
Are you ready for all the cosmic puns
you can fit into one podcast?
Oh, yeah.
We're going to have a stellar time.
This episode is going
to be out of this world.
My name is Emma.
I'm Alex.
Let's start with some hardware news.
We're a little light
on hardware news this month,
but we have two pretty big updates.
The first one is pretty powerful.
It's a Starlink arm-based Ampere server
using Ampere's new Ultra
and ultra max processors.
You could configure that baby
up to 128 cores and four GPUs.
We added this to the line
because it offers a more affordable
option, but it also offers performance
along with the affordability.
So it allows you to scale up
your projects, your business there
at a reasonable budget.
I don't even know what I'd do with four
GPUs, but I bet whoever buys this type
of server knows exactly what they want.
I asked sales what type of customers
use this server and what they do,
and I felt like it was top secret.
So you didn't hear it from us?
Yeah.
And another hardware news
is the Thalia Mira has a price drop.
So it went down from about
1599 to now 1299.
That is the starting base
price for the desktop.
And we've also expanded the chassis, made
some chassis adjustments a bit to now
fit in the option for an Nvidia RTX 4090.
Again with the GPUs.
I love it.
Yeah, it's going to kick
asteroid out Sure.
As you can tell, we are not
spacing out the GPU updates.
In software news,
I'm so excited for Cosmic.
I love it with all my heart and solar.
Yeah, and we just unveiled
the new brand for It's got new brand
colors, new logo, new tagline,
and just a nice modern atmosphere.
Yeah.
We're also sending out cosmic T-shirts
with the new logo and stickers with every
laptop and desktop purchase so people
can start repping the brand right away.
Should we share more about the branding,
some of the story behind it?
Rocket Man.
I think that means yes.
So the cosmic logo
includes It's an open-ended O
with a little blip underneath it.
It's meant to look like a display because
Cosmic, it is a desktop environment, but
we want people to build user experiences
with it on any device with a display.
A smartwatch, exercise bike, who knows?
Possibilities are endless.
It's also open-ended to represent open
source, inviting the community in Also,
vast possibility through customization.
Then the System 76 blip
underneath it, which is the underline.
It has an orange to red gradient in it.
That's to represent customized
LEDs, but also all of
the customization possibility.
Cosmic's tagline is visions,
enacted, users empowered.
With this platform, we're trying to
provide a service for businesses
and organizations to really
be able to curate the experience they want
their users to have while also,
on the other hand,
providing the customization and all these
different options for users to be able
to create the experience that they
feel works best for them.
That was a lot of hand movements
and gestures for not being on video.
Well, that's just how you know.
That's how I naturally talk.
It is a great story, though.
I love the story behind the logo,
and it makes me feel very confident
that we're headed
in the right direction with the brand.
In community news, our community
is growing at planetary proportions.
We're going to be hosting
two meetups a month now, one
with the main focus on cosmic
and getting people to try, install,
and file feature request or issues.
So for that, we'll be handing
out cosmic gear, helping to switch people
over to cosmic, and also
showing off the new features.
And the other meetup is for System 76 fans
and customers to get together
every month and make new connections.
We host all our meetups on meetup.
Com, and we post on social networks
a few days before each event.
And also on the event side, Software
Freedom Day is right around the corner.
The Digital Freedom Foundation
is encouraging groups to throw their own
Software Freedom Day event.
Software Freedom Day takes place September
21st, and you can register your event
on digitalfreedoms.
Org/sfd.
And I'm sure we'll be registering
an event there soon.
You better believe it.
And we'll also have special
Digital Freedom Foundation stickers
sent to our international sticker
reps, and those are available
on our swag page, which is system76.
Com/merch.
And you'll see that we have
a new Canada rep on there named Byron.
So if you are in Canada,
go ahead and send your request.
Emma, we have guests, and I'm
so excited for our guests this month.
We're really knocking it
out of the galaxy with this interview.
Yes.
We have System76 CEO and founder,
Carl Rochelle, here to talk about the
upcoming Alpha release of Cosmic Desktop.
Then we have Jeremy Sohler and Maria
Kamarova, here to talk about the
engineering and the design behind Cosmic.
Thanks for having us.
I wanted to do this with the three
of us because we're the originators
of Cosmic, and so I'm excited to chat.
Cool.
For people who've never heard of Cosmic,
what is it and why is it called that?
Cosmic is a desktop environment
for Linux and BSD as well, right, Jeremy?
Yes.
Yeah.
Linux and VSDs.
And it is a desktop environment,
meaning that essentially when you
boot your operating system, it's all of
the GUI interfaces that you see.
Like panels or workspaces or application
libraries or a doc,
all of those things that you see is what
is part of the desktop environment,
the way windows launch, where they place,
where they're placed, how they tile,
the toolkit by which it's built.
So that's how application applications
are built on it and all the design
and care that goes into making
that a coherent holistic experience.
Let's go to the beginning.
What drove you guys to make Cosmic?
I think there's a lot
of different reasons.
Yeah, definitely.
I could speak to Carl's reason
of it just being really cool.
I actually looked back in Google Docs
at our oldest documents for Cosmic.
The oldest one I found was in August
of '21, so nearly three years ago then.
It was a pros and cons list
of different approaches to what
we were going to do next with Papa West.
It was four things.
One was gnome shell extensions, which
is what we were doing at the moment.
We were adapting gnome with pop tiling.
It was called pop shell,
which was a tiling.
We had our own workspaces fork that
brought back some of the old behavior
and some other things.
There was that one.
There was forking gnome shell entirely.
Then there was a Mutter plugin,
doing a mutter plugin is one option.
Then the final option was Custom DE with
window manager and from the ground up.
It was like least expensive,
a little more expensive, most expensive.
We decided to go with the
most expensive option, but it also
meant the most flexibility for us.
We went through this really deliberate
process of pros and cons
of all the different types of approaches,
and ultimately landed on building Cosmic,
I think largely because we felt
like there would be constant friction.
If we tried to do something
like forking a project.
We would always be working
towards adapting that project to what
we were wanting to build instead
of just building, we wanted to build
and always adding value, I think.
That's probably the core of it.
What do you guys think, though?
I also feel like this test drove Cosmic a
little bit because some of the concepts,
at least design-wise and usability-wise,
have originated back then.
It's even in 2020 when we started
Thinking of how we can improve the user
experience,
our constant strive to make more advanced
features more user-friendly and
to go for something that's simple
and straightforward and to actually
deliver a flexible enough experience that
people with different kinds
of workflows can take advantage of.
That's a great point.
It really started much earlier
when we wanted to respond to
our customers' needs and our users'
needs in a more robust way.
And that led us to do more design
in the operating system.
I think we're of the type
that when there's a problem,
we really want to solve it.
And so we wanted to try
to solve them for our users.
Then at the time, Jeremy and I, and a lot
of our engineering team, we're fans
of the suckless style of things,
smaller independent projects that
you can put together into a larger hole.
And so another one of the reasons
we wanted to build Cosmic was that in
looking at the landscape of open-source
projects, the really successful
open-source projects are things
like the Linux kernel, MySQL, Apache.
Firefox is one as well.
I think Blender is really successful
in this particular field.
But most of those, maybe Firefox being
the exception, but all of those have one
characteristic in common, and it's that
people can use them to build things with.
And that wasn't a concept
around the idea that existed within
Linux desktop environments.
And so we took some of the concepts
and the ideas behind the cyclist style
of independent components
and some modern UX and design and what
we had already experimented with tiling
and other things for our users.
And we combine them all into
a platform that has real intent.
While it's a flagship for Cosmic,
its real intent is to enable people
to create OS experiences.
And I think that's a completely different
approach from the get-go of what
we were trying to build with Cosmic
and why we were trying to build it.
And it's largely to empower people
because we think it'll be
really interesting to see
what products people make with Cosmic.
It's a platform that's extremely powerful
and flexible in a way
that enables you to basically create
whatever user experience you want to.
We want to hand that to Distros
and companies and anyone
that wants to build a user interface
or something unique and see what
creativity and ingenuity leads to.
How did the design concept start?
We started by doing
quite a lot of research.
What at least I saw during
user interviews and reading different
kinds of feedback and talking to people is
that there are different kinds
of workflows, and there are also different
user needs because
all of us are familiar with a certain way
of using a desktop environment,
like a desktop,
which means we have muscle memory.
Some of us are using mouse,
some of us are using shortcuts,
but all this muscle memory is something
that's not sometimes easy for us
to change,
which means that on the one hand,
we knew that we need to fulfill that need
for the users to be familiar
with the desktop environment,
and so that we are not introducing a lot
of things that are completely
new and cryptic and unknown.
We've noticed certain things
that We had in pop us back then
that felt like maybe it was not quite
where we wanted them to be.
I feel like we started with just
taking that user feedback and trying
to figure out how we can make
things easier on people and also
how we can accommodate variety of users.
In our case, we have all kinds
of people using desktop, which means it
was important to accommodate as much
as we can, enhance the flexibility
and customization.
It started early on Then
we started testing different kinds
of layout patterns and different kinds
of ideas, like breaking down the updates
into separate pieces.
And so like breaking one puzzle
into separate pieces.
So it was just so to speak.
But I feel like those separate pieces
in a way allow us to then
be more modular and more flexible.
There's a lot of, I think,
depth in the overall design as well.
We started out by taking what We got
a bunch of futuristic interfaces that
we liked and thought were interesting
and had some vibrance in colors.
It was things like different generations
of L cars from Star Trek.
We pulled those together.
One of the concepts was that we would have
the The window itself for an application.
It was essentially like a piece
of smoked glass and elements
that we put into it were etched into it.
That ended up being the way
that the header goes in.
It doesn't quite have the etched feeling
that we originally thought about,
but that's where it originated.
Then other components were on top of that,
the navigation menu and the context menu.
Those started very early.
We made early prototypes in Figma
to see how well they worked.
It turned out they worked quite well.
There They were both responsive,
and they gave a lot of flexibility
to application design.
And the context menu meant that as you got
into different settings,
you didn't have to go deeper and deeper
into layers to get to what you want
to because the context menu
separates the contextual information about
what you're doing out in a simpler way.
I think that was some of our areas.
Maria, you also
took some inspiration from, I think,
carbon design from IBM and material.
Is that right?
Well, yes, I guess it is in a way,
because we knew that we needed to
create the design system, not merely just
do separate designs, because if you want
the desktop environment to be functional,
then that's part of the deal.
For the design system, we looked at
different kinds of examples.
Definitely material design,
definitely macOS human interface
guidelines, a carbon design system.
It's pretty much any I can put my eyes on,
I looked at because in a way,
how we approach the actual design
processes, let's say, worked
on the settings application first.
That's what allowed us to refine different
patterns and different components,
starting with simple components like
a toggle and ended up with something more
complex like list views and grid views
and different sliders and all
sorts of other things.
We're still in the process
of implementing some of them
and even designing some of them.
But I feel like we've
got a solid foundation.
But reviewing the design systems
was definitely part of that process.
Theming was a big part
of what we were trying to do, too.
I think that's one of the most impressive
parts of Cosmic and the theme system
and how well it works.
How did you pull together
the theme system?
Yeah, theming was an interesting one.
I feel like it's been work on it in waves.
But basically, we knew that We needed
to go for automatic color calculation
pretty early on, or at least
we realized that pretty early on.
After that, it was down to
figuring out the principles,
even starting with things like
which surfaces should be the same color.
Which ones actually
need to change depending, for example,
on the main surface color, or that is
every single color could be customizable.
It's just It's been like a Wild West,
a little bit of trying to put this puzzle
together because, of course,
we did want it to be very flexible.
But there are challenges that come
with that level of flexibility
and that level of customization because
Because obviously,
we needed to keep the color contrast
in mind for text and for icons and make
sure that the interface was
recognizable and readable.
We ended up with that idea
of automatic color calculation
certain colors in the system.
Also, the ability
to customize separate colors like
the window background or accent color
and what we call the primary container.
It's basically a container
that you put on the surface,
like a container we use for navigation.
You can customize those kinds of colors.
Then there are some others
that cascade from that
and just automatically calculate it.
The rules for calculating them,
that was quite a jigsaw puzzle.
Definitely, I got inspired
by Material because Material 3
has that theming system that's very
cool, and they use the tonal palettes
for calculating colors for Material 3.
What we've done, though, is we
used an okayLCH for deriving
those colors, which means that
we basically just take the input in RGB,
transfer it into a KLCH, and then
output again back an RGB color system.
Didn't it fix something like purples?
Right.
So a KLCH has a wider range
of colors, essentially.
But it also fixes something
that's been, I think, inherent
in LCH, where at some point,
if you go in the blue spectrum, it just
on its own would switch to purple color.
It doesn't happen with the KLCH
because now the purples
stay separate from the blues.
There are all sorts of other things.
I think Jeremy actually can
speak to those because I remember us
discussing that in detail.
Yeah, color spaces are pretty complicated.
We were trying to match material designs
as closely as possible
because blending of colors,
which is very important for calculating
colors, we have a base color,
we have an accent color,
and then we calculate a bunch
of other colors based on those.
If you are blending colors together
in a way that produces results
that a user doesn't like,
then your system has failed.
The user's perception of color
is very different from the RGB space.
If you think about it, the human eye
has a much wider range of green.
But to a computer, green
is just 256 different colors, blue
is 256 colors, red is 256 colors.
These You have the same weight
to a computer, but not to the human eye.
Doing all of our color mixing
in the okay LCH space gets it
to mix closer to what human perception
of color really is rather than mixing in
another space that is more tuned for
computer usage or printer usage.
Yeah, figuring out what system
to use was a big part
of figuring out how to allow people
to think the colors of the interface.
Then after that, we just
needed to determine different rules
for different colors.
I won't go into details because it's
a pretty complicated system
to explain, but it's been definitely
an exciting process to try to nail that.
What themes have you
guys been using lately?
I'd love to ask you that, too, Alex.
Every screenshot you send burns my eyes.
Well, if you prepare,
I could show it to the camera.
I've been using But you might
want to avert your eyes for a moment.
Avert your eyes if you're only attuned to
dark mode with the blinds down.
Before he shows us this- I've been
using a-We very strongly believe that
if your tools aren't powerful enough to
allow you to create something ugly, they
also can't create something beautiful.
With Cosmic Theming, you can
go anywhere that you'd like to go.
Alex, I think you went
to cyber punk, right?
Yeah, I made more of a cyber punk theme.
He calls it ugly.
I call it beautiful.
Sorry.
The yellow is not picking up as well.
You guys got to see this yellow.
We could get a screenshot out there.
Here I thought one of the multiple All the
cool experiments that I had that I called
Banana Yellow was too yellow for people.
Frankly not.
I have been also horrified
by what I've seen.
It's got to be the most
yellow as possible.
I've created number of different
themes, and I just can't
imagine living in a world
where you have that high saturation.
But I've seen all kinds of things.
I've been using Ashley's
automatic color generator quite a bit,
and that It tends to pick up a lot
of yellows and oranges because that
ends up being more common than
I thought it was in landscape photos.
And it's a nice feel to it,
almost like an earthy feel.
It'd be good for fall, weird in spring.
Jeremy is alluding to something
that will probably be Cosmic Epoch
2, our second release.
We call it Epoch, so we're on Epoch 1.
Epoch 2 will be next year.
But this is a system that automatically
adapts your theme and accent color
and everything to the wallpaper.
It works quite well,
but not quite production-ready.
It needs more refinement for next release.
Maria, are you on Scarlet
I was on that one for a while.
No.
Maria makes beautiful themes, of course.
Yeah, I made Scarlet witch
actually a while ago.
Now, I've been mostly
oscillating between forest green
and the very pastel sunset one.
It's early sunset.
I just changed my to a steel,
this dark steel blue with the bright blue
accents, and it's quite nice.
I should probably make something that's
actually frost Frost Giants or something.
We'll have to get screenshots
from you guys of this.
I've got a ton of screenshots.
Excellent.
Yeah.
My favorite has been the doom
theme, and I have a CUS.
I don't know what to call it.
Cus 9X or CUS 95 or something, but Windows
95 with the icons and the exact colors.
I love that one.
Cus Mac, which is just the macOS
colors and icons.
Unfortunately, those icons probably
are not licensed in a way that I can even
take a screenshot of them.
Screenshot's okay, right?
We won't tell.
They do really show the power
of the theming because When we do
our Cosmic 95 theme looks just
like Windows 95, and it's quite striking.
Well, I'm going to throw
a few more variables in.
There's a few more things we need to be
able to do, But yeah, it's really close.
We've got to have that good bitmap font
with the horrible aliasing
that Windows 95 had.
The theming community in open source,
I think, is just an amazing, creative,
cool part of our community,
our open sourceness.
We really wanted to empower
that community to make neat stuff.
Let's talk about the rest of the team.
How did we end up choosing
who we chose for building Cosmic.
It started with what we
needed to build, right, Jeremy?
Yeah.
Once we decided that it wasn't going
to work for us to integrate, I had worked
on a Mutter plugin, and it was way more
difficult than I thought it should be.
And the limitations led me to
think that we should try something new.
And so we found, for example, Victoria,
who works on the Cosmic Compositor
because she was a maintainer of the Smith
A Project, which was a project to build a
rust compositor, basically a library for
building rust compositors called Smith A.
And we wanted to have a rust
compositor, so that was
a very easy thing to reason about.
The progress we've made
on that has been insane.
That's easily the biggest project we've
taken on, and the payoff has also insane.
The first time that I saw the tiling
integrated into the cosmic compositor and
just how much more fluid and more logical
it could be than what we had built on top
of a gnome with a Nome shell extension,
everything just clicked into place.
And that was the moment that
I switched over to the Cosmic Compositor.
And the other members of the team,
we've got Michael working on the toolkit.
We've got Ashley working
on applets and also the toolkit.
Michael has been working
on the settings app.
Ian has been working
on the compositor and the settings app.
And this team is a really low-level team
working on brand new things
for the Rust language.
I don't know that we've hit on this yet,
but a lot of the rationale for creating
Cosmic was so that our team could work
in the Rust language
and have those benefits,
have the ability to to statically check
a bunch of different security
vulnerabilities,
to have really lean and really fast
and well-optimized code,
and to have it all compiled to binary
rather than running an interpreted
language inside of the compositor.
Our team was selected for that,
and they're all very, very skilled
Rust programmers and UI programmers
at the same time, which is
a very hard thing to find these days
as this is a very nascent field.
We're essentially
considerable participants
in the Rust windowing ecosystem.
A lot of the projects we're doing and
a lot of the work that we're contributing
and a part of because of Cosmic is also
building at the same time how the future
of building rust applications will work.
One of the things that makes
the compositor is...
One of the things that makes
the Composite is so important.
It is essentially central.
It's considered almost the center
of the desktop environment.
The whole feel of the desktop
comes from the compositor.
It's cool today because compositors were a
boring thing maybe 15 years ago, or they
weren't as exciting to as many people.
And today, Capazitors, I think,
are really hot and really exciting.
A lot of cool stuff happening
in Capazitors because their impact
on the user experience is...
Well, it's They are central
to the user's experience.
That's the reason that it was going
to be, one, a really big investment
if we decided to go that route,
but two, it may have the biggest,
like Jeremy said, payoff.
But all of this also meant
that we had to build...
That there wasn't an existing toolkit.
Well, there's ICE, which is
the toolkit we decided to build on.
But you want to talk a little bit
about why we went ICE instead of...
We looked at GTK, we looked
at Flutter, we looked at cuits.
Yeah, well, the most promising one
for Rust integration was GTK, for sure.
We had already been developing in GTK.
We already had a number of applications
we developed in-house with GTK.
Had the keyboard configurator,
the system 76 driver, the Firmware
Manager, and a bunch of other things.
Our team was already skilled with GTK.
I think the major reason for
us to consider other things was during
the transition from from GTK3 to GTK4.
In GTK3, there was a library
called Libhandy that we were using in
our applications to make them responsive.
Libhandy would let you set up things
that would collapse and open when
the window size got smaller.
When switching over to GDK 4,
most of those items were moved
to a new library called Libidweta.
Libidweta encodes a platform theme,
and that platform platform theme
is a Nome-specific theme
and what they want to ship.
At the same time, they were imposing
a campaign of sorts against distributions
theming their applications.
I don't want any part of that.
We tried writing programs in GTK 4, but
without having those Lib handy widgets,
it would involve a lot of work
to make those programs responsive.
Basically, things had been removed
from GTK 4 that were critical
to making applications
and were only available in Libba Dweida.
If we wanted to create applications
with a different platform theme easily,
then we would have to rewrite those
in our own platform library.
And so that got me thinking,
if we have to make our own platform
library, why not start from scratch
and try to make it Rust all the way down?
I've We certainly run into lots of issues
with GTK, especially with our Vala
applications like the installer and
the pop shop, where the security that Rust
brings in is not there,
and that causes a lot of difficulties
in developing applications.
We were searching for toolkits
that were not GTK and were not cued,
but were instead written in Rust.
There was very little done in this area.
Even still today, I would
say it's a nascent area.
There were some big contenders.
Ice was still in a very early
stage, but it was there.
There was slent, even earlier was called
60F SPS, which was actually made by some
people who had worked on cued earlier.
We evaluated the two, and it ended up
being that ICE had a programming model
that was very similar to the model we
were using for some of our GTK programs.
We had migrated to realm 4,
which was a Elm-style model of...
I don't know exactly how to describe it,
but there's a model, there is a view,
and there's an update function
that takes in messages.
And that programming model was implemented
in realm 4 as a wrap-around GTK4,
wasn't implemented completely
the way that it's supposed to be, but ICE
was very pragmatic at the same time
as being very dedicated to that model.
They had been able
to wrap GPU acceleration and have a bunch
of important features
while being abstracted by that model
that we liked, the ELM programming model.
We started working with ICE.
A lot of things were missing,
and some things are still missing today.
There was no support for input methods.
There was no support for drag and drop.
Clipboard support was sporadic,
and text support was completely broken.
Essentially, Icd would require you to
define a font that you wanted to use, and
that would be used for all of the text
in the application, so you could not
localize the application at all.
You couldn't have any text that wasn't
the font that you had chosen.
And so at some point, I took on
that project and I said, well, Rust needs
to have a library for handling text.
I did a bunch of research on that and came
up with something called Cosmic Text,
which was then integrated into ICE
and provides support for
scanning the system fonts,
finding the fonts that match a certain
script, and then rendering using
that script, and doing this
in an extremely performant way.
So now ICE can GPU,
render any localized font.
That was one critical we had to resolve.
Ashley resolved a bunch of clipboard
and drag and drop issues.
Michael and Ashley
and myself worked on Lib Cosmic,
which is a platform library wrapper around
ICE that provides a lot of other things
ICE doesn't provide,
like an abstraction for locating system
icons and a bunch of different widgets
and also the theming
system that Maria invented.
So all of came together into Liv Cosmic
as a wrap-around ICE.
And during the time, we
upstream tons of changes to ICE.
There's not just the text library,
cosmic text that was integrated into ICE.
I was also experimenting
with software rendering.
Then the maintainer of ICE redid that work
in a way that fit in better.
Ice gained software rendering,
whereas before it only had GPU rendering.
Ashley wrote accessibility support
for ICE that is going to be upstream soon
so that ICE applications
can integrate with screen readers
and other accessibility devices.
Even now, after two years, there's still a
lot of work to be done to close the loop.
But ICE has become, and Lib Cosmic
have become much more professional
options for GUI development
than what was available before.
I've been curious, what is it
about the ELM architecture that our team
It's hard to explain because it's not
like you're forbidden from using
this model with other toolkits.
It's just that it's more
difficult to set up.
Essentially, it enables for I wouldn't
say it's high performance exactly,
and I wouldn't say it's boiler plate-free
either, but it feels to me like
it is more performant to work in.
I don't know how to describe it, but
basically, you have a model, and you have
a bunch of widgets that model generates,
and then the widgets create messages, and
the messages are sent back to the model.
And the model contains
all of the Mutable state.
And with a GTK application, it's a little
different that you may create buttons
that are all reference counted,
and the reference counting introduces
some added complexities, like the
inability to use any widgets in threads.
You You can't do that in GTK at
all, but you can access the ICE model
in a thread all you want.
In GTK, you have to attach callbacks
to each widget, and those callbacks then
have to retain some way of referring
to the state versus sending a message
back to the model which lets you
update the state in one single place.
It's hard to explain, but it makes
the code feel a lot cleaner.
At least for me, it feels like
a lot less work to spin things up,
but I can't really prove that's the case.
That's one of our early goals,
whether we ended up there on accident,
I don't know, but one of our early goals
was to make it easy to develop applets
and applications for Cosmic.
I guess Lib Cosmic and ICE,
I guess the relationship, you can think
of it as Lippa Dweida and GTK in a way.
I would say we don't
have a Lippa Libedueta.
We don't have a platform library
that imposes a platform UI design.
Because when you use Lib
Cosmic, it's more like using GTK3,
and then ICE is more like GDK.
And although Icd has its own
widgets, it doesn't have some of
the platform abstractions like being able
to look up icons and theming.
But Libedueta would be to take Lib Cosmic
and then force a system theme
and force certain UI elements,
and I don't think Liv Cosmic does that.
And you can see that by looking at
all the different Liv Cosmic
applications, a widget in the panel,
and they're all very different.
We have a calendar widget
that's very different from other widgets.
We, of course, have the system tray,
which is literally defined by third-party
applications however they want,
and those are generated using Liv Cosmic.
The window titles are
generated using Liv Cosmic.
This was another A very big advantage for
us is that the same code that's creating
the apps is also creating the applets,
is also creating the shell UI.
The cosmic compositor is using
Lib Cosmic compositor is using LibCosmic
to generate window titles.
I think that's incredible because
that means that we have one library
that defines the system style everywhere,
and the system style is user-defined.
So the user can modify identify the theme,
and everything everywhere changes
if it's the Lib Cosmic application.
So the default install, you've got
your cosmic apps, applets, and the
compositor, all of those things change.
The launcher changes, the Workspaces view
changes, the window titles change,
whether their server declarations
or client declarations does not
matter, they will change,
and everything is defined in one place.
That was very important,
I think, and not something
that was possible with LivaDueda.
Yeah, so it means if you want to have
a custom corner radius for your windows
and your widgets and all these things,
you have one place to adjust that.
Well, You might adjust it.
You have one library to adjust it
in, even though you might have a few
different radiuses you want to change.
But that means the entire platform
is going to adopt what you've adapted
or what you've changed.
Yeah, theoretically.
Yeah, we have more things to move out
to the configuration, things that are
hard-coded that need to be configured.
But yes.
And this is...
The Lib Cosmic could
be used It's portable.
It can be used on Windows, macOS, Redox.
It could be used on a no
standard platform.
If you had an embedded device that was
able to create a frame buffer, Lib Cosmic
is able to take in a custom renderer.
That's what we're We're doing
in the cosmic compositor,
if I remember correctly.
You can have a custom renderer and create
Lib Cosmic GUIs that will show up
in places where other windowing libraries
would find it very difficult.
A very A certain piece
of this was the layer shell.
It was the way we were able
to make the system as modular as it is.
When you look at other whaling compositors
and the way that they are integrating
components, you look at KDE
or Gnome or Hyperland.
From what I understand, the components
are usually integrated into
a single process space where you have...
In the Gnome case, I know this very
well, where we have extensions
that are JavaScript, and they're loaded
into the same processes, and not just
the same process, the same thread
as all of the other compositor UI.
In cosmic, we have every single piece
of UI potentially able to
come from a different place.
The panel is created using layer shell.
The panel then launches applets that then
fill in different spaces in the panel.
We have three different wings
is what they're called.
We have the left,
the right, and the center.
And they're filled in with
different applets, and each applet
is a different program.
And those are filled in using Layer Shell,
which is not supported by GTK.
What is Layer Shell?
Layer Shell is a protocol
to talk to a Wayland server
to place a specific window.
There's other Wayland terminology,
and someone would probably shoot me
if I called it a window, but I call it
a window, and to place a specific window
on a specific layer in a specific place.
Because whaling, the default protocol
for windows or surfaces, as one might
call them, if they want to confuse normal
people, the default protocol for windows
doesn't let you set a position
and doesn't let you set a layer, per se.
So you can set a layer that is
above applications or below applications.
The background for cosmic
is not drawn by the compositor.
It's drawn by a program that runs external
to the compositor that loads
the background and displays it in
a layer shell surface that is underneath
the regular application windows,
which are called top levels in Wayland.
If you want to know why I avoid
Wayland terminology as much as possible,
it's because it's confusing even
to the people who work on it.
So Wayland windows don't have
that ability, but using layer shell
and integrating it into Libcosmic,
which was a huge
A set of code to produce a back-end
that was distinct and specific to Wayland
and Layer Shell and integrating it
into Lib Cosmic,
which was a huge set of code to produce
a back-end that was distinct and specific
to Wayland and Layer Shell,
lets us modularize the whole thing.
The greeter is not part of...
The lock screen is not part
of the compositor either.
So An issue with Nome Shell,
potentially an extension,
can kill the entire compositor
and the whole session, potentially,
because it has access to the compositor
and it's all running in the same context.
With Cosmic, if an applet dies, if
the lock screen dies, it doesn't matter.
It gets restarted by the Cosmic Session
program, and it can reacquire its surface
and then redraw itself.
These are the layers
that enabled us to build the platform
that we were going for, where people
could build their own user experiences.
Maria, do you want to get into
how you could use panels and applets
and build a custom user experience
from the platform we've made?
Yeah, sure.
I think, well, first of all,
your options are limitless.
You can really go as
crazy as you'd like to.
But that said, we try to go for some nice
defaults, which means when you just
start the desktop environment
with the defaults, you have the Panel
at the top and the Doc at the bottom.
Both are customizable, which means Panel
and Doc both include what we call uplets.
What looks like an icon that
opens a menu, and pretty much every icon,
or frequently it's every icon
or a set of icons, is an uplift.
What you can do is you can't
talk Toggle off the panel
because we think that one panel
should stay because otherwise, we don't
want to lock someone into an experience
of not having, let's say, a power button.
But you can toggle off
the dock if you don't use it.
For example, you can auto-hide panels,
and then you can definitely
try to change how they look
and what functionality they include.
If you feel like your top panel doesn't
have enough functionality,
or maybe it just has a lot of empty space,
and you're the one who likes to organize
and put things into their own places,
then you can go into settings application,
get on the panel settings page,
and find the Configure
Panel Uplets button.
Go there and Basically,
drag and drop upload cards
to change where the upload is located.
We structured the panel by segments
so that you have the central segment
and the two sides so that
it's easier to warm different kinds
of layouts with that panel.
You can drag up this from one
region to another one.
For example, if you don't like your time
and calendar right in the center,
you can definitely move that,
for example, to your right.
I know Carl has it frequently
next to the power button,
which seems like nice enough location.
Also, if you don't use applications,
let's say, because people have
different ways of launching applications.
Some people use the doc for that,
some people use the app library, which is
how you put the application button opens.
Some people use the launcher and just
type the name of the application.
There are different kinds of ways.
Let's say you're the one who uses the doc,
which means you probably don't
need that applications button there.
Or maybe you are the one who is using
a lot of shortcuts, which means
you never open applications
with the mouse and you always
use Super A, which is a shortcut for it.
You can just remove that button
and not have it in that left top corner,
and you can put some other outlet.
We don't currently have the weather
outlet, but that's definitely something
we've been dreaming of for a while.
I think that might be something
that people might want to have.
Or it could be...
I don't know.
I'm speculating now because
some of the applets don't exist.
We went with, obviously,
some basic set of applets.
But moving forward, I imagine there would
be some system monitor applets.
I think there were actually,
there were conversations.
I think there was someone
working on it already.
You could build something like...
The community could build or we could
build something like a news outlet where
if you click a news button and a window
can open on your desktop or
another surface that drops down and has a
bunch of news articles open that
are accessible.
You could change workspaces.
We have two different workspaces applets.
One workspace applet opens an overview
that is very similar to the pop OS
and no overview, with the exception
that you can move your workspaces
to be a horizontal or vertical.
But it opens that.
We also have one called numbered
workspaces, which on each monitor,
because workspaces are per display or they
can span displays,
each monitor has a set of numbers,
which indicates the workspace that you
happen to be on depending
on which monitor you're on.
So if you could make a Workspace applet
that is perhaps a grid, if a workspace
grids for what makes more sense to them.
You could make the app library for us
opens up in a window in the center.
We like the esthetic and the functionality
of the the flexibility
that the app library built includes.
But maybe it's not the right thing for...
I believe it's not the right
thing for everyone.
There will be different opinions
and approaches and ideas for it.
So you could have a button that opens
a menu directly underneath it that has
a search field and most recent
applications that have been opened
and you're running applications.
You could build applets to dramatically
change what the user experience is,
thanks to these underlying technologies
like layer shell.
Then with that, a distro that
wants to experiment with user experience,
or as Jeremy said, even devices can...
Any device with a screen will
work with lipcosmic and these components.
You could build a user experience
for a device that's as small as a phone.
I don't even know.
Maybe a watch.
I don't know.
But all the way
up to the biggest screens you
could imagine and have the flexibility
to create whatever user experience
is interesting to you or necessary
or valid for that particular use case.
I just want to add there are a number
of third-party contributors already.
Zephyr Cheese is the GitHub user
who's working on the system monitor.
System monitor clipboard.
There's a llama applet, I think.
Yeah, there are quite a few out there.
One of the things we'll be working
on for Alpha 2 is how we're going to
display third-party applets in the store,
Cosmic store so people can install them,
and then they'd be added to the list that
could be added to the panel at the dock.
We're pulling in all that effort
that the community is doing
to make more unique experiences.
What would you say each of you
is most excited for in both
the first Alpha and also Alpha 2?
I'm most excited about the feedback
that we're going to get from users,
good or bad or indifferent.
This is something we've worked
on for three years, nearly now.
And longer, if you include
the really early work
on Nome extensions in the UX there.
So the vision that we had three years
ago, I think was incredible, is today,
it's actually realized that it doesn't
vary actually that far away
from what we really set out for.
Maria, you don't think so?
No, I'm just one of the things that
it's constantly evolving, which means
it's probably, but it definitely closed.
I think from the highest level of
being able to create experiences with it,
we've achieved what our objective was.
Now we get to put it in front
of people on a larger scale.
There's lots of cosmic users already,
which is pretty encouraging and exciting.
But now we're going to release it.
The alpha will have, frankly, it's almost
scary because the amount of attention I
think it's getting as a release is almost
like a product, and it's just an alpha.
We want to set the right
expectation, but I'm still
really excited about the feedback.
I have to agree with Carl.
The thing I'm most excited about
is to see what happens when we do a first
alpha release and how it's received.
There's a lot of people
using it, but there are There are
more people waiting to use it.
I would tell them they can use it now if I
could reach all of them all at once, but
they're waiting for something official.
They're waiting for a download
that they can get and they can install.
I don't know what's going to happen
because we have the people using it now
are loyal fans who are invested in it
and are using it early because they like
the idea and they want to see it succeed.
But once you push it out as a release
and make it official and have an easy way
to install it, then you'll get people who
are not like that and come from all over
and people who are ready to criticize it.
That honestly is what excites me the most
because I feel like you can't really
finish a product until you have
those people coming in and saying,
What's wrong with it?
Until you have the people who are coming
from other desktop environments
where They're not coming to Cosmic
because they want Cosmic to succeed.
They just want to find something
that meets their own needs.
Having the feedback we have now
where it's mostly from contributors
or people who are already invested in it,
it's not really useful.
It's not really useful.
They'll tell us things that are obvious
or things that are just optimistic,
and they won't come in and say,
Hey, I'm running back to KDE
because this thing was broken.
That feedback, honestly,
is what is required to finish a product.
I wouldn't go as far as to say it's not
useful because we definitely use a lot
of this feedback and we value it, and we
constantly refine what we currently have.
But I'm definitely excited to open
the desktop environment to more variety
of feedback, and I think that's
what Carl and Jeremy were getting at.
Because as Jeremy just pointed out,
we have that a particular, maybe, I don't
want to say type, but a particular user
who's really dedicated and who
is interested and very engaged right now.
We do want to reach people who are just
going to be using it on a daily basis,
potentially moving forward.
I'm not saying they're going to start
doing that with alpha release, maybe.
But we definitely do want to reach
those users and to get their feedback
because that's what majority
of our current pop OS users are, I think.
We definitely want to make sure
that this new desktop environment is not
just something that delights them, but
it also gets out of the way and people
can just install it and get going.
If they maybe get addicted
to tidying, we don't mind.
That's just.
That would be great.
It's one thing to put something
out there in a very hard to access way.
People, to get Cosmic today, if the
easiest way is to install pop OS, edit
a system config file, install a bunch
of packages, reboot, click on a gear
that hardly anybody know even exists,
select the Cosmic session, log in.
It's a lot of steps.
So we have selected a bubble,
the people who are ready to go
through all of those steps just
to see what we've been working on.
And I'm really excited
for that bubble to be popped.
I think the thing that fills me
with excitement more than anything else
is when bubbles pop.
I remember when we were working on open
hardware, and it was just going into it
because there's hardly any good
information out there about hardware.
Going into it, it's, I have no idea
if this is even going to cover
everybody's needs or not.
You just don't know until
it reaches people who aren't
going to reach out to you.
They aren't going to come to you
to test something before it's ready.
They're going to wait for
you to say that it's ready, and then
they'll dump all the stuff on you
to tell you what's wrong with it.
And that's what I'm excited for.
I want to see...
It isn't successful if you can reach
a small audience without hearing back
about a lot of problems.
It's successful when you can
reach a very large audience
and hear back about all the problems.
I'll know that we've finished it
when we have 50 million installs
and the issues coming in
per day are one or two issues a day.
That's when I'll know it's done.
I think the other side
of that is that we've been
on Cosmic for probably 18 months.
It's our daily driver for that long to
very differing degrees for three of us.
It's actually sometimes hard.
When I go back to Fawfowets
and I'm using it, it's a little bit hard
for me to relate to what it's like
going from 2204 to Cosmic
because I've been on Cosmic for so long.
Now we get to see that feedback
and what that's like and learn where the
pain points are and start prioritizing
around those as they come in.
You can hear it in the coverage,
too, of YouTubers.
They're like, Look at this.
Look at that.
It's so cool what they're working
on, but it's not ready yet.
So And they're saying it's not ready yet.
And I'm thinking, well, it is.
What are you saying it's not ready yet?
So I'm worried we're going to stamp it.
It's ready.
And then all of a sudden it will
flip from, okay, are they really going to
put this out there to, oh, my God,
they really did put this out there.
And then they'll finally go through
their review of 100 different things
that are wrong with Cosmic.
And we can't really close the loop
until we get that feedback.
No, We're definitely
going to get a lot of feedback.
There are a lot of things
that we know even is something
you're now to do is to keep working on.
I definitely anticipate that we're going
to have a flood of different things.
It's not like we haven't tested it,
certain patterns and certain UX aspects.
But I feel like we don't have necessarily
maybe the testing on the same scale
because we've been looking for usability
issues essentially all the way through.
But there are certain larger C things or
the things they end up using more than,
let's say, others or things they are
going to start missing more than others.
Those are the things I'm looking for.
We probably actually are going
to do more proactive testing, too.
We're not just going to sit and
wait until people dump everything on us.
That's just going to happen.
But we are definitely planning on
seeking more people once we have alpha
just because we know there's going to be
somewhat fewer bugs to impact the kinds
of feedback that we are getting.
Yeah, I think you mentioned this,
but we have things that we just know.
And so the Alpha, the intent is to
get cosmic to the point where the things
that we just know are very few.
So that those aren't the things
that we keep getting reported and we just
get to triage bugs of stuff we know.
The things that I'm concerned about
are VPNs and people connecting the VPNs.
I've heard that's an issue.
It's not something that we don't do that.
So that's going to be something I expect.
There's actually others.
We just know that Alt, Tilde, if it's
switching between the same application,
it isn't something we have yet.
So there's plenty of things that we still
know that we are going to expect.
But I think what we're saying is
that things we're really excited
about is is what we don't know.
That's what's cool.
I don't know how we're doing
on time, but I guess to get
those burning questions answered, so
what should people expect from the alpha
and when should they expect to see it?
We expect to have a release
by the end of July.
Every indication to me
is that we're on track for that.
I don't see any big blockers to get there.
To set expectations, what we're going to
is very clearly outline what Cosmic can
do today and what's left for us to do.
People say, Well,
there's no Bluetooth settings.
Well, we're going to have
a list that says, Okay,
here's the Bluetooth settings,
and here's a link to the design.
It's not in the alpha yet
because we built our applets
in the panel to be very powerful,
which means from the outlet, you can just
connect to a Bluetooth device.
You don't get full management.
Forgetting a device isn't something
that's there, that's going
to be in the settings page.
But the point is the alpha is at the level
because the applets where you can
set power modes, connect to WiFi,
change brightness, excuse me, change
your output and output devices for audio.
Because those are so robust,
we don't have to have a lot of settings
in the settings application
for it to be usable as a daily driver.
And then it's all the details, a lot
of settings panels is really what's left.
And then the other thing is the bigger
part, as big as that is accessibility
and leveling that up through
the toolkit, through settings,
the compositor to a level that it's...
To us, Cosmic must pass government
regulations for compositor,
for accessibility,
because we ship our products to government
and schools and those customers We
should not only because of just
the business needs,
but also the importance of accessibility
and computing in general and
to work on that.
I think that's, to my mind,
that's what's there and what's missing.
You guys think there's more?
Pretty much some applications,
application refinement.
But we think we're in a good position
to respond to feedback
and actually have the bandwidth
to do that instead of core stuff.
It's going to be, is it having
multiple workspaces per display
confusing in some way to some users?
And okay, if that's the case, what do we
need to work on for improving that UX?
Those are the things I hope to be working
on from a design and new engineering,
new product stuff for the second alpha.
Yeah, there are large things
like accessibility that breaks my heart.
We are not yet there,
but we are hoping to be there.
It's just that the sheer amount
of things that need to happen for it
is what's slowing us down.
But other than that, there are a lot
of small things, but I don't know even
if I'm just going to start
going down that rabbit hole.
It's a rabbit hole.
Then there are all these new things
that we want to be working on, too.
I feel like we're just
in the beginning of that road.
We have a second mixed idea board already.
Things that these They're great
ideas, but we've had to think
about those for a second release.
Guys, we're going to play
a game really quick.
There's Trivia?
I hope it's not Trivia.
It's not Trivia.
Okay.
Good because I'm bad at Trivia.
I We've poorly attempted to
draw some cosmic icons and applets.
We're going to play a game
where you guys get to guess which icon
or applet it is and what it does.
The first person to answer gets
a point, and there's four.
Okay?
Ready?
Okay.
Number one.
I know.
Notifications.
What does that do?
Well, I don't know.
What is that?
It means you have notifications.
This is a nice info,
a notifications outlet that
opens the notification center.
Actually, I think it's
notification center outlet.
That's the official name.
But basically,
it's sitting on the top panel.
It's top, but it could
be placed wherever you wanted.
This is where you
see the notifications, discard them,
turn on the do not disturb mode.
Right?
Yeah.
Cosmic edit.
Oh.
Yeah, Jimmy got it.
Cosmic Edit.
Oh, okay.
And what is that?
It's the text editor.
Somebody wrote it.
I don't know who.
Okay.
This one is...
Keyboard Brightness.
Yes.
And then the last one.
Do not disturb, maybe.
Or a battery.
Don't wiggle around.
No squiggles, yeah.
No squiggles.
I think it's Bluetooth.
You are right.
It's no Bluetooth.
What is that?
What is that?
Like a four-way tie?
Are you all on?
Yeah, everybody likes it.
Technically, squiggles
and wiggles in space time.
Good job, guys.
Proud of you.
All right.
Well, thanks so much
for joining us today, guys.
We really had a lot of fun
hearing about Cosmic, and I think
our audience will, too.
Awesome.
Thanks for having us.
It was a lot of fun.
Thank you.
Thanks.
Bye-bye.
Bye, guys.
12, 1, 0, 3, 2, 1.
This has been the System
76 transmission log.
For more inspiration, check out the
website and follow us on social media.
On your descent back to Earth,
please keep your hands and feet
inside the transport beam at all times.
Captain, sign off in transmission.