System76’s engineers picked Iced, a Rust-based cross-platform GUI toolkit, over GTK for their in-house developed COSMIC Desktop.
System76, a computer manufacturer specializing in the sale of notebooks, desktops, and servers, is a well-known name in the Linux community. Being a strongly Linux-oriented company, System76 utilizes free and open-source software and offers its own Ubuntu-based Linux distribution, Pop!_OS.
The distro uses COSMIC Desktop, an in-house developed desktop environment based on GNOME but extends on it with additional functionality.
Unfortunately, about a year ago, due to a heated discussion between the developers of Pop!_OS and GNOME, System76 removed GNOME from the equation entirely and chose to rewrite their desktop environment from scratch, respectively COSMIC, matching their vision and understanding of functionality.
And here, the story repeats itself. In other words, System76 faced the same dilemma as Canonical around 10-12 years ago when their proposals were rejected by the GNOME team, resulting in the birth of the Unity desktop environment.
No More GTK, Welcome Rust
First and foremost, let me state that this is a big deal. Something that can potentially change the key players in the Linux desktop segment. The decision to build your desktop environment from the ground up is courageous and deserves our respect.
And just as everyone expected COSMIC to be yet another GTK-based desktop environment, System76’s engineers revealed the big news. COSMIC will be completely independent of the GTK toolkit, relying solely on Iced, a cross-platform GUI library for Rust focused on simplicity and type-safety.
Michael Murphy, a software engineer at System76, writes on Reddit:
The UX team has been carefully designing widgets and applications over the last year. We are now at the point where it is critical for the engineering team to decide upon a GUI toolkit for COSMIC. After much deliberation and experimentation over the last year, the engineering team has decided to use Iced instead of GTK.
Two very early prototypes are shown below, showing COSMIC’s basic controls in dark and light modes.
If you’re wondering why System76’s engineers chose the Rust-based Iced GUI toolkit over C-based GTK, here’s a partial explanation:
GTK is one of the most inefficient GUI toolkits because of GObject and C. Every widget and piece of data is a separate heap allocation with dynamic dispatch. Iced is significantly faster at rendering in comparison and doesn’t require dynamically loading dozens of chunky libraries.Michael Murphy, Software Engineer at System76
To put it another way, System76’s engineers are working on a widget library similar to GNOME’s libadwaita, but with greater theming and customization capabilities, using the Rust-based Iced GTK toolkit.
Of course, the Reddit discussion provides many further technical details that impacted the Iced versus GTK decision, but we won’t go over them here for the risk of boring our readers. Anyone who wants to read it can, and the developers at System76 have been quite responsive in answering all questions.
It is important to note that the project is still in its early stages, and no Iced-based applications have yet been developed.
Now, probably the biggest question for all of us is when we may expect a stable version of the new Pop!_OS COSMIC Desktop. Unfortunately, there is no published roadmap committing to particular deadlines, but a stable version will likely be released in a mid-next year at the earliest.
The good news is that everything is and will be open source. So, if Linux users welcome the COSMIC desktop, it can be easily adapted and made available for other Linux distributions. Something that could skyrocket its popularity.
One thing is sure: when the stable version of the Pop!_OS COSMIC Desktop hits the streets, it will be one of the most important events of the year in the Open Source community. But, then, all we have to do is wait.
Of course, our media will keep you updated on all the significant changes as this promising desktop environment progresses.