Cosmic Pop!
What is PopOS and System76?
If you haven’t heard about the latest Linux news, System76, the makers of high-quality Linux computers and the creators of PopOS, released an alpha preview of their new desktop environment - Cosmic, a few weeks ago. This is super exciting because it’s the first time in long while where a new desktop environment has been created with the level of input and work that the System76 team has put in1.
I think the last time I heard about a new desktop environment was when GNOME 3.0 and Ubuntu’s Unity desktop came out over a decade ago, leading to the development of MATE, Cinnamon, and other environments like LXQT and Budgie. Those environments seem to be using either the GNOME or KDE libraries as part of their development process.
With Cosmic, the System76 team went with a completely different toolkit - the multi-platform Iced development library. Not only are they using a different toolkit to developed their user interface they’re also using the Rust programming language to build their new version of the Cosmic desktop.
I’m not too familiar with Rust myself, but I’ve heard a lot about it lately. It’s been gaining popularity, and some developers want to use it more in Linux. In late 2022, Rust became the first language besides C or Assembly to be supported in the development of the Linux kernel.
I thought Rust was more like Python, a scripting language, but I’ve seen it said that it’s actually a modern version of C and C++. When I look at some code and the syntax used, it does look a lot like C/C++.
The story behind Rust is pretty interesting. It was created by an employee of Mozilla’s Research team named Graydon Hoare in 2006. Over time, many big tech companies started using it, like Amazon, Google, Microsoft, and Mozilla itself. Some of these companies got together to form the Rust Foundation to support the project.
So, why did System76 decide to make these changes to GNOME and its toolkit? Well, let me tell you about Pop OS (or Pop!_OS as it’s officially called by System76).
Pop OS is based on Ubuntu, but it’s got a different user experience. They focus on long-term support (or LTS) versions2, which means they get security updates for years. This is why the current non-alpha version is based on Ubuntu 22.04, while the alpha version is based on Ubuntu 24.04 (the latest LTS version).
Pop OS in its current form is heavily customized with GNOME extensions to create a specific look and feel. The use of extensions to achieve this has caused some problems. GNOME major updates sometimes have led to extensions no longer functioning3, and System76 had to update extensions for every GNOME release, making feel as though they needed to hack the extensions to get things done. Disagreements between System76’s software engineers and the GNOME development team on the future direction of GNOME likely contributed to the decision to develop Cosmic using Rust and Iced and to move on from their reliance on the GNOME desktop and its toolkit.
With the introduction out of the way, I will be sharing my thoughts on the new Cosmic desktop from System76.
-
I think the last time I heard about a new desktop environment was when GNOME 3.0 and Ubuntu’s Unity desktop came out over a decade ago, leading to the development of MATE, Cinnamon, and other environments like LXQT and Budgie. ↩︎
-
Canonical, the company behind Ubuntu, generally releases long-term support (LTS) releases every 2 years, while maintaining their yearly cycle where they release a version of Ubuntu in April and October. These updates usually reach an end-of-life period within a year of their release, for instance Ubuntu 23.04 which was released in April 2023 reached this state in January 2024. It is understandable why System76 would avoid releasing their desktop on these versions and investing development time, effort, and funs for a release that is supported for about 8-9 months. ↩︎
-
I’ve experienced this issue myself a few times where an extension I was using in a previous version of GNOME (on Ubuntu) no longer works on the latest version of the GNOME desktop. In some cases I was able to modify a configuration setting on the extension to get it to work, but that is not an ideal solution. ↩︎