Announcing Project Bluefin

Today we "relaunched" ublue-os/bluefin as projectbluefin.io. This is a beta until Spring 2024.

Bluefin is a custom image of Fedora Silverblue by a bunch of cloud-native nerds. We want a reliable desktop experience that runs everything but we're too lazy to maintain anything. So we automated the entire delivery pipeline in GitHub.

Say hello to Bluefin. She is a Deinonychus antirrhopus, "terrible claw". Artwork by Andy Frazer.

Originally Bluefin was "Fedora Silverblue for Ubuntu Expatriates". I was migrating to Fedora at the time and wanted Silverblue but with a more Ubuntu-like desktop: a dock and appindicators.

Over time it became apparent that it could stand on its own as an alternative for people who are tired of Linux desktops that aren't as reliable as cheap Chromebooks. We were tired of this shitty situation so decided to add a bit o' shine to Fedora Silverblue and maintain it as a clean, atomic layer on top of the default image. It's not a distribution, since you can always revert back to a stock image.

Justin Garrison gives us a quick tour!

So she became Bluefin, which coincidentally was the name of Canonical's office building on the Thames in London. Since it's basically an Ubuntu-style workflow on top of Fedora this seemed to make sense and scratch the easter egg itch.

So after about two years of prototyping and real world usage, we think she's ready for more people to try. We're calling this a Beta, with the hope of going GA in the spring.

Since she's built on Universal Blue we get all the benefits of the main images. While it can run on any PC, we also have specific images for Framework, Asus, and Microsoft Surface devices. Work is underway to generate images based on the work of the Fedora Asahi SIG, so hopefully soon we'll have something for Mac users.

Updates are automatic and transparent, with built in drivers. It can do anything a Chromebook can, but can use flathub packages for applications, and crucially, a choice of browsers. And since a container runtime is included, it also means you can run just about any Linux workload.

Wallpapers by Jacob Schnurr, every season represents the ecology of our open source ecosystems

Major upgrades are handled at the CI level by our contributors, and everything is set up to run automatically. We ingest Fedora, apply our changes, and then ship the OCI image to you every day. An image-based desktop with the least amount of end-user maintenance as we can automate. Since it's just a container you can fork to your heart's content to make your own adjustments, or start from scratch.

We intend to use Cockpit to act as fleet management. It is a powerful tool, however it's not set up out of the box, we hope to work on this over time as it's a complex issue, but it's also a problem to look forward to!

Taking Care of Developers

With the normal use case taken care of let's look at ourselves. Fedora Silverblue variants come with a container runtime, Podman. This means that we can basically run anything we want. We include distrobox for an interactive experience so that users can use whatever distribution image they want as their day-to-day.

But we needed a bit more oomph, so doing a just devmode in a terminal will switch you to bluefin-dx, our developer image. In here you'll find Visual Studio Code with devcontainers, devbox with Fleek for nix, devpod, and homebrew. And we toss in some shortcuts to install Jetbrains Toolbox.

We also take care of the underlying stuff that you need, like LXD/LXC, KVM, and virt-manager. Incus is available as a tech preview. And lastly we include Docker on the image so you can just docker yourself to a more familiar place if you prefer to use it.

VSCode comes ready with devcontainers out of the box

You can swap your userspace as you see fit. By default it's Bluefin/Ubuntu, but I've been enjoying Bluefin/Alpine for it's speed and small size. At some point I'll migrate to using Wolfi images too.

Use whatever you want, or stick to the stock Fedora images. We purposely don't dictate a developer workflow, whatever works for you. Homebrew is my preferred route and is what I recommend to people who are migrating to Bluefin DX.

We use the just task runner to ship a bunch of convenience features (and workarounds too). This has started to become a great method for our community to ship shortcuts to each other. For example one contributor submitted just ml-box - a one command shortcut to get pytorch up and running. When you look at what it can do vs. setting up Nvidia drivers and container support by hand it becomes clear that enabling contributors to "ship" directly to developers is a powerful pattern.

Sustainability of our Open Source Contributors

And lastly, we wanted to make something lightweight from a contribution perspective. Universal Blue is Containerfiles with Python/Shell. It's a common toolset that tons of people know, and with our community's cloud-native knowledge we were able to fully automate much of the toil in maintaining your computer. I have not seen an "upgrade screen" on any of my computers for over two years, Bluefin quietly hums in CI/CD on GitHub. You don't even know she's there. (Probably because we are being hunted).

We take our governance and procedures seriously, and welcome contributions. I try to take the same amount of care and dedication that I do when contributing to CNCF projects.

After spending over five years in cloud-native, I feel like we finally have an alternative operating system using the methods we're all familiar with. It just wasn't available on the desktop, until Fedora made it happen! Now it's up to us to consume it, and improve it!

Here's the companion video to this blog post.

A fresh start for the next generation

I hope you'll join us. We've already got lots of tech in here including kind, flux, helm, and kubectl. We intend to accelerate the consumption of cloud-native tech by acting as your SREs.

I'll be traveling to conferences over the next 18 months talking about sustainability of our open source ecosystems and developers. Those talks will be delivered via Bluefin on a Framework 13. After using Linux since 1998 I believe this to be the state of the art of the Linux desktop. You won't find a more powerful system with the least amount of work - so if you see me ask for the demo.

We've been dogfooding Bluefin in some form or another for about two years, and Universal Blue's images have been pulled over 2 million times, it feels mature enough to move the Beta. I don't think bluefin-dx will ever be finished because we'll be revving at the same pace as the rest of cloud-native development, so that should be fun!

She might nip at you on occasion with a paper cut, but she evolves quickly. Clever girl.

Find me at KubeCon North America for your very own bundle of joy!

Full Disclosure

I started this project when I was on sabbatical. One of those "find yourself" ones where you're thinking about stuff like ... "Where does my career go from here?" The whole open source sustainability thing is bugging me, and I started working at the CNCF to help fix this problem.

And my passion projected kinda ended up being a "hello world". What if we could use the Linux desktop to onboard people right into cloud native? There's way dumber ideas out there lol. Here's more color on how I'm thinking about sustainability in open source:

Here's me trying to explain all this in 15 minutes! It also explains why Bluefin is a dinosaur, she's trying to find her place in the ecosystem.

Finishing the Beta

There's a few things that need to be sorted over the next six months. Mostly it involves the installation experience. It's hard to integrate code that doesn't exist so we're still waiting for Fedora's installer to become more robust at handling OCI installation. I'd like to personally thank the developers at Fedora and Red Hat for their support in working on these features, we're pretty confident that the installation process will get much better in the next six months. Luckily installation is the roughest part, once you're past that, it should be smooth sailing!

There are also lots of little paper cuts here and there. For example we don't automatically "detect and install Nvidia drivers" since that's not how these systems work, so you have to manually rebase to that image. That sort of thing.

Reliability is pretty great, the GitHub Package Registry keeps 90 days of images available so we can always boot off of any of those images if required, and due to the nature of the system it removes a bunch of the packaging complexity from the client entirely.

Appendix: Their Stories

Jacob Schnurr and Andy Frazer brought Bluefin to life. If there's one lesson I've learned from this project is the technology is only one part of the equation. I purposely chose the dichotomy of paleo artists and operating systems at the leading edge of machine learning to be a statement on where we stand. A tool designed to make automation the most efficient it can possibly be, and yet unable to exist without the imagination of the human.

Here's some more shots of the gang in all the prehistoric glory ...

Deinonychus antirrhopus, "Bluefin" - This was the species that changed our view of dinosaurs
Dolly the Dimetrodon. They are actually a synapsid, not a dinosaur. You have more in common with Dolly than Dolly does to any of these dinosaurs. An incredible notion once you think about it!
Karl, represents the Developer Experience. When I'm in my Linux terminal I want to feel powerful and strong. With his help I shred through my backlog – issues, eliminated. Builds – green. Tests – passing. Karl also represents the raw power of Kubernetes, which is why we ship so many cloud-native tools by default.
Bluefin is a mother and takes care of her family, like we must take care of each other. Things that threaten her chicks end up meeting the other side of her personality ...
We call this one "murder chicken". Inspired by the raptor chase in S1E4 of Prehistoric Planet
And just like real life, she comes in all sorts of varieties. This one is "Murder Crow"
The team overwhelmingly fell in love with "Glitter Chicken". I'll be making a special Pride run of these at some point!
.. and lastly this Kentrasaurus - you don't want to mess with them.
Show Comments