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.

System76 Transmission Log Episode 10: COSMIC updates, Hardware Updates and an interview with members of the COSMIC development team at System76
Broadcast by