Adrian's blog

My writings on GNOME

A Desktop for All

TL;DR: I would like to turn GNOME OS, GNOME’s home-grown distro for testing and development of the GNOME Desktop, into a daily-drivable general purpose OS.

Immutable or Atomic Linux distros have been gaining popularity in recent years, in part due to their tangible benefits for user experience. I wanted to improve on that. So, in 2018, I got involved by starting carbonOS, my niche little Linux distro with a singular goal: Build an OS that makes the Linux Desktop usable for non-enthusiasts.

Sharp Edges

You, the reader, are a Linux nerd. So am I! We know and care about OSs, Desktop Environments, FOSS, and lots of other niche things. Put another way, we’re enthusiasts: we care enough about all these things that we’re willing to invest the time, energy, and passion necessary to live with the Linux Desktop. We’ve decided to accept the occasional sharp edges if it allows us to reap the rewards of FOSS.

Enthusiasts are awesome! A culture of enthusistasts has served us extremely well so far. But I’m often left pondering: why should we enthusiasts get to enjoy all the benefits of FOSS and the Linux Desktop, but the people who don’t know, don’t care, or simply don’t have the time to be enthusiastic can’t?

I think of my friends and family: they don’t deserve mistreatment by the tech companies any more than we do. Many of them love the idea of Linux and agree with our values, but decided not to stick with it after actually trying it. They’re interested, but just not interested enough to overcome our barriers to entry. They don’t care about packages, or codecs, or drivers, or patents, or licenses, or all these things that have become something we just need to deal with as Linux enthusiasts. I believe that many will start to care about these things once they join our communities, like we all did, but right now they’re just not joining

This is the outlook that has motivated my work in FOSS for all these years. It has been the driving motivator behind my work on carbonOS, and in my opinion it’s a perspective that guides GNOME’s direction in many ways.

Fitting Everything Together

So what would an OS optimized for usability look like? I used carbonOS as a testing ground to answer that question, and came up with this:

  • GNOME: The OS should use a stock GNOME desktop, and pre-install only the stock GNOME apps.
    • Notably, this makes it pretty hard for the OS to have a brand identity distinct from the desktop environment. This was a permissible side-effect for me.
    • Why GNOME? Simple: I use and prefer GNOME, and believe in GNOME’s design and technical direction!
  • Flatpak: The OS should rely on Flatpak for app distribution. It’s just the right choice for what we’re trying to achieve here:
    • Flatpak is cross-distro, which encourages app development for the entire Linux Desktop. It melts borders between distributions, and encourages the more advanced users to explore the diverse ecosystem without worry that their apps won’t work in their new environment.
    • Flatpak is cross-desktop, which gives GNOME access both to high-quality apps from other communities like KDE, and to high-quality platform-agnostic apps like Blender, Firefox, etc.
    • Flatpak is designed around sandboxing, which provides the necessary infrastructure to keep our users and their data protected.
    • Flatpak permits proprietary apps, which helps ease people into Free Software. Practically speaking, most people can’t just drop all proprietary software at once and completely convert to FOSS. Flathub permits apps like Steam and Discord, whose presence on the Linux Desktop has made it viable for the large gaming community and for products like the Steam Deck. Proprietary apps on Linux allow users to replace their Proprietary Operating Systems, which means more people will be using more FOSS.
  • Robust: The OS should be difficult to break on accident, and in the rare event that it breaks the user should be able to trivially roll-back and keep using their device. Especially when updates are involved! Updates must be bulletproof and people shouldn’t think about them.
  • Immutable: Every copy of the OS should be identical. This makes it more robust and debug-able. If a feature is missing, then that’s something the OS has to take responsibility for — it’s not a misconfiguration on the user’s part. This is different from the popular hybrid-immutable model, which still allows the user to install packages. In my opinion, allowing package overlays disincentivizes the development of proper permanent solutions for missing OS functionality, since users can just rely on adding an overlay. Ultimately, the need to install packages to work around issues just ensures that nobody uses hybrid-immutable distros immutably, which curbs the benefits of immutability while at the same time subjecting the user to the extra sharp edges immutability introduces.
  • Secure: The OS should leverage available platform security features (like UEFI Secure Boot and the TPM) and new software techniques (like systemd-homed) to better balance user convenience with the security and privacy benefits of encryption.
  • Modern: The OS should focus on our modern platform technologies: Wayland, Pipewire, XDG Portals, and so on. It should offer the latest GNOME release to those who want it. It should also balance innovation against the fact that newest doesn’t always equal best, and sometimes we have regressions that will affect our users. Where that balance lies is still to be decided (but likely not at either of the extremes: LTS or rolling).
  • Flexible: The OS should be easy to adapt to the variety of form factors that GNOME supports (desktops, laptops, tablets, phones), and it should be easy to to make versions optimized to run on specific hardware.
  • Opinionated: Every option we introduce is a decision a user has to make. This can be a bad thing, especially if the user is not an enthusiast and doesn’t have the necessary background knowledge to make their decision. An OS that forces the user to make decsisions that they’re not interested in making does not provide a good experience. For example, we don’t want to run into a situation where the user has to decide which package format to use when installing an app.

I took the summer of 2023 off to realize this vision. This quickly got me involved in GNOME and in the STF Project, in systemd, and in GNOME OS. Wait, what’s GNOME OS?!?

GNOME OS

GNOME OS is GNOME’s development, testing, and QA distribution. It’s not designed to be useful as a general-purpose system, and so it hasn’t been the center of attention. However, that makes it a convenient place to experiment, and ultimately through sheer coincidence the GNOME OS team ended up developing something that follows my vision using the same technology that I was. The only real difference was intent: carbonOS was intended for mass adoption, and GNOME OS was not. In essentially every other aspect, the projects had the same roadmap: following Lennart Poettering’s “Fitting Everything Together” proposal, providing a stock GNOME experience, and even using the same build system (BuildStream).

In late 2023, I was invited to and attended the annual Image-based Linux Summit, the All Systems Go! conference, and a GNOME OS hackfest in Berlin. There, I learned that some in the GNOME community have been thinking about building an end-user focused GNOME OS for well over a decade: here’s a blog post and GUADEC talk from 2010.

So over the following months, I’ve had numerous conversations with a number of people involved in the GNOME community. We discussed the implications of the GNOME project making an end-user GNOME-focused OS. Generally, I found that the reception and outlook are positive.

Then, at Akademy 2024, KDE’s Harald Sitter gave a talk titled “An Operating System of Our Own”. Much of what he had to say closely mirrored my thoughts and the discussions I’ve been having. To our KDE friends: best of luck on KDE Linux (aka “Project Banana”)!

The Akademy talk inspired me to finally write this blog post. If people are open to the idea, maybe we should do the same in GNOME? GNOME OS already has the right core architecture… maybe I could work to expand its scope?

But then where would that leave my project?

The Announcement

I have stopped development of carbonOS as an independent project. This means that carbonOS’s independent packaging is no longer maintained. The project and its mission will continue, however: ideally in GNOME OS and as part of the GNOME Project, or as a downstream fork of GNOME OS.

This wasn’t an easy decision for me to make. At first it felt like I was abandoning a project that I had invested years of my life into, but after more thought I decided that wasn’t the right way to look at the situation. Ultimately, carbonOS’s packaging was just a means to achieve my mission. The new Git repository does not change the core values of the project.

This isn’t to say that GNOME OS is ready for daily driving. Please, don’t judge it by its current state! You probably shouldn’t install it on your main computer. But I’m planning to invest my time to incorporate the necessary improvements to make GNOME OS production-ready.

Concerning Our Community

The road ahead isn’t trivial. Building an OS and doing it right is hard for many reasons. There’s lots to discuss, especially in a large community of diverse interests like GNOME. The GNOME Project has always been an upstream for distributions, so it building its own distribution raises many questions. I’ll try to address some of these concerns (with my own, personal opinions):

  • Does this mean that GNOME will change its relationship with its existing downstreams? No, I don’t expect any changes. GNOME maintainers are generally also active participants in their distro’s community. They help maintain distros both personally and professionally. I don’t think people would change the status quo over this new experiment. I sincerely hope that GNOME OS is treated like any other distro by GNOME module maintainers.
  • How will GNOME get this into people’s hands? This would have to be solved in steps: we’d need to start with enthusiasts and early adopters before we start exploring ways to reach wider audiences. Eventually, I would like to see the GNOME community forging partnerships with hardware vendors to distribute GNOME OS.
  • How will this be made sustainable? A distro takes a lot of work, time, and infrastructure. Indeed. GNOME OS is uniquely small in scope, and so there aren’t nearly as many packages to maintain compared to a normal distro. Also, GNOME OS has already existed for a long time, and it has proven itself sustainable. It’s a highly collaborative project, with involvement from different vendors. It’s built on the GNOME Flatpak Runtime, which is itself built on the Freedesktop SDK. Contributions to any will help sustain all three. Of course, sustainability can always be improved!
  • Do you plan to monetize GNOME OS? Yes, eventually. The best way to develop software sustainably is to pay the developers. So, I think raising funds to reinvest into GNOME OS and into the rest of the GNOME stack is critically important. How exactly to do that is still an open question, but here are some possibilities: selling support to users or hardware vendors, directly charging users for GNOME OS under a “Pay What You Want” model, collecting donations, or applying to grants.
  • If you plan on selling support, does this mean you’re planning to compete in the Enterprise space? I don’t think so; at least not in the enterprise space that exists today. I don’t think anyone is interested in providing Long Term Support for GNOME OS builds. Nor is GNOME OS for servers.
  • What is the involvement of the GNOME Foundation? The Foundation is (and has been) providing GNOME OS’s infrastructure and hosting, like they do for any other GNOME community project. That is the extent of the Foundation’s involvement. The Directors I’ve proposed this idea to are concerned about all of the same points I’m bringing up here. So: I’ve started work on a proposal to the Board for new structures that will give the Foundation an objective framework under which to categorize and promote all distributions that ship the GNOME desktop. This proposal isn’t finished, nor have I collected any feedback on it, nor am I an expert on nonprofits and their legal obligations, so I will not be publishing details about it at this time. I expect that the Foundation will publish their official stance once they decide it’s ready.

Ultimately, different distros address different audiences and market needs. I believe that a GNOME OS as I’ve described here can open new fronts to new users who are currently underserved by the Linux Desktop. And since this would be an upstream GNOME project, investment here (like the Sovereign Tech Fund’s investment into encrypted home directories and secure boot paths) builds technologies that are available for all vendors to use and build on, thanks to the power of FOSS and our broad ecosystem.

As a reminder, these are all my opinions. I don’t speak for anyone else in the community, nor do I speak for the Foundation. I’m aiming to start a conversation with everyone: our users, our maintainers, our contributors, and our distributors. Please, send your thoughts, questions, and concerns! I’m excited to discuss!

The best place to discuss this would be on the GNOME Discourse, under the gnome-os tag. The GNOME OS team is reachable at #gnome-os:gnome.org on Matrix. I’m also reachable on Mastodon: @AdrianVovk@fosstodon.org.