As of late, I spend a good majority of my time digging into Linux on Chrome OS and testing what works and what doesn’t. As the Command Line series takes shape, we’ve become a little keener to Linux-related commits in the Chromium repository. There’s so much that you can do with Linux apps on Chrome OS but the Crostini project still has its limitations due to the nature of the technology. Running applications in containers requires some workarounds for certain things that are normally native on full Linux distributions.
One of those particular things I’ve been tinkering with is Snap packages. If you’re not familiar with Snaps, they are simply packaged applications that contain all of the necessary bits and pieces to run from the containerized package. Much like Flatpaks and Appimages, Snaps are designed to work on a wide variety of Linux distros because the package holds a universal installer and all of the dependencies needed which negates the need to have the files living in any specific repository. On Chrome OS, install the Snap package manager requires some tweaking and additional dependency installation. Even then, my experience with installing and using Snaps on Chrome OS thus far has been pretty horrible. Most apps won’t launch or throw display output errors. Even when an app does launch, it’s janky and there are a lot of crashes.
So, when Robby came to work yesterday morning and told me that he had found some references to Snap in the Chromium repository, I immediately envisioned Chrome OS having official support for Snaps and the Snapcraft store. If Chromebooks shipped with a pre-installed link for the Snap store and users could utilize a one-click install method for many of the popular Snap apps, that would be a HUGE step forward for Linux on Chrome OS. Not to mention the fact that it could take the Terminal out of the equation and that would be a big factor in helping the average consumer to adopt Linux apps on Chrome OS without having to learn their way around the CLI.
All that said, I started digging into the commits that Robby uncovered and quickly realized that this was an entirely different project I was looking at. Not to say that Snaps won’t eventually work natively on Chrome OS but what I was looking actually appears to be an effort to bring the Chrome browser to the Snap Store. While there is an official Linux version of the Chrome browser, it’s technically only available for Ubuntu, Debian, Fedora and OpenSUSE. Other distros are left using the open-source Chromium browser unless you know how to add the proper repository and what dependencies are required. The two snap-related commits were titled as follows:
Add snapcraft to install-build-deps
Initial integration of snap packaging.Chromium repository
You can see why we thought this might have something to do with Snap support in Chrome OS but digging into the files and comments inside of the commits shed some light on the project. First, among the file paths, I discovered these two lines.
The Debian and RPM packages are the current builds of Chrome for Linux. Below those two packages was the addition of
chrome/installer/linux/snap/build.sh which is a fairly clear indicator that the Chrome team is working on an official Snap package. Further inspection of the comments shows that the team is speaking directly with Snapcraft to overcome some issues that they are having in building the Snap for Chrome. The Snap Store already contains a Snap package for Chromium. So, whatever the hangup is, I’m sure the Chrome team will get it worked out relatively easily.
The only question that remains is “why build a Snap for Chrome?” Chrome remains the most popular browser in the world so I suppose it stands to reason that Google would like to offer the browser to as many users as possible and the Snap Store would be a great path forward. Additionally, this could still be a smaller part of the overall Linux on Chrome OS project. I’m keeping my fingers crossed that Chromebooks will continue to gain easy access to more and more application types and a clean, simple method for users to find and install them. We’ll dive into that more a little later this week.