# Quick end-of-year update

**URL:** <https://universal-blue.discourse.group/t/quick-end-of-year-update/345>\
**Category:** Bluefin\
**Tags:** developer-experience, bluefin-news\
**Created:** [January 1, 2024, 4:58am UTC](https://universal-blue.discourse.group/t/quick-end-of-year-update/345 "2024-01-01T04:58:27Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![j0rge](https://yyz2.discourse-cdn.com/free1/user_avatar/universal-blue.discourse.group/j0rge/32/8_2.png) [@j0rge](https://universal-blue.discourse.group/u/j0rge)\
**Post date:** [January 1, 2024, 4:58am UTC](https://universal-blue.discourse.group/t/quick-end-of-year-update/345/1 "2024-01-01T04:58:27Z")

</div>

Happy new year everyone! Tonight we celebrate [5 million pulls](https://universal-blue.discourse.group/t/image-pull-milestone-thread/113/3) across the org, and while we don’t have an equivalent to the Bazzite Buzz I thought I’d take a minute to catch people up on what’s happening while I wait for the ball to drop. 😃

Most of this update is developer experience related. Stock `bluefin` has been finished for some time, but we’re nerds so let’s talk about `bluefin-dx`

[![](https://global.discourse-cdn.com/free1/uploads/univeral_blue/original/1X/43dc97da274498a5dff5358e0852f0b9a612c50d.jpeg "Bluefin development in 2023") ](https://www.youtube.com/watch?v=7YPYtX1JHck)

## vscode

Thanks to @jeefy @m2Giles and others we now have a fully functional vscode experience that comes out of the box with [devcontainer](https://containers.dev) support. We’ve gone ahead and added the docker extension as well, so maybe now vscode will stop bugging you about the extension (hah!). You’ll need to still manually put yourself into the docker group but we’re hoping to do that automatically soon. I’ve updated the documentation here:

[https://universal-blue.discourse.group/docs?topic=39](https://universal-blue.discourse.group/docs?topic=39)

I think the biggest change is we’re basically doubling down on the devcontainer pattern. Fedora is focusing on toolbox as a developer environment, but observations of users over the past few years has convinced me that people are just confused with toolboxes and dev environments. So we’ve decided to just explicitly split the command line experience from the dev experience.

Here’s some back story: [Recommend docker as the default for vscode/devcontainers · Issue #726 · ublue-os/bluefin · GitHub](https://github.com/ublue-os/bluefin/issues/726)

Just to be clear, podman and all the upstream tools Fedora ships with will all still be there (actually we need a volunteer to help curate a podman dev section in the first run wizard!) Nearly every dev I’ve talked to uses both podman and docker in some capacity, so whatever, ship em both. 😃 Let’s see what happens!

## homebrew

Thanks to the work of the [Wolfi OS community](https://github.com/wolfi-dev) we now have a new container for you to play with. `just bluefin-cli` will pull it down, and then follow the instructions distrobox tells you.

We were using homebrew on the host in the past, but found that having it on the host [broke flatpaks](https://github.com/ublue-os/bluefin/issues/687). So we had to containerize it. Adding homebrew to the ubuntu container is doable but the thing was exploding in size (upwards of 800+ MB) so I wanted to base it on a more bottom-up approach like how Wolfi is doing container images. Here’s an [intro blog post](https://www.chainguard.dev/unchained/introducing-wolfi-the-first-linux-un-distro) from the wolfi folks on their approach. The new bluefin-cli container is half the size and the team is very aggressive with updates.

The intent for this container is “what would rebuilding the entire unix command line look like?” We’re intending to ship a set of default packages in here that is built from the ground up. All those cool rust utils you read about, uutils by default, atuin, eza, micro, neovim, all that stuff. This will be our playground while the ubuntu and fedora containers will remain stock.

## Prompt

Which leads me to prompt: [Setting up the Ptyxis Terminal](https://universal-blue.discourse.group/t/setting-up-the-prompt-terminal/300)

We’ve needed a container-focused terminal for a while and those of you on `bluefin:39` have been playing with it. Sorry about the broken keyboard shortcuts, we’re hoping to sort out the issues as fast as we can. The end state is a cli/terminal experience that’s entirely containerized and transparent without having to do the mental math of “am I in a container or on the host?” Ideally, always in a container. 😄

The upstream project has been very receptive to fixing bugs and I’ve been emailing back and forth with Christian Hergert and things are looking great so far. I’m feeling pretty confident about how it’ll shape up in the spring. Which leads me to:

## What’s left?

All Universal Blue images depend on this Fedora feature: [Changes/OstreeNativeContainerStable - Fedora Project Wiki](https://fedoraproject.org/wiki/Changes/OstreeNativeContainerStable)

If you’ve been following along this was supposed to land in Fedora 38. And then it got punted to Fedora 39. And then again got punted to Fedora 40. Sometimes that’s just how open source works. 😄

We will still call these images “beta” until the work lands in Fedora. The teams at Fedora have been very supportive of our work, check out this [Fedora podcast episode](https://www.youtube.com/watch?v=cHYyGVOae84) where we discuss Universal Blue with some Fedora folks!

Additionally the CoreOS and osbuild teams at Red Hat have been awesome, you might want to follow the osbuild project, which we hope will turn into really great offline images for us: [GitHub - osbuild/osbuild: Build-Pipelines for Operating System Artifacts](https://github.com/osbuild/osbuild)

And there’s also work going on in Anaconda to support OCI installers. If you’ve been following the project then you might be keenly aware of how awful the installation experience is, I’m really looking forward to 2024. 😄

## Incus

We’re big fans of the original lxc/lxd, and Brian Ketelsen is working on bringing Incus support in as a first class citizen. There’s work to be done here and it’s still early days, so mostly I just want to say that we’re working on it and there’ll be new updates on this at a later date.

## How to help!

We’re an open source project so feel free to dive in. We’re still in need of ARM-knowledgeable folks to get ARM builds going, and everyone keeps asking about Asahi support but we need help in that front.

Eric Curtin has done some great work to get us there but it needs to be finished off, we’d love to be able to have first class support for ARM powered Macs, so if you’re into shiny fruit, apply within!

Have a happy new year and stay safe out there folks!

---

<div class="post-metadata">

**Author:** ![travier](https://yyz2.discourse-cdn.com/free1/user_avatar/universal-blue.discourse.group/travier/32/127_2.png) [@travier](https://universal-blue.discourse.group/u/travier)\
**Post date:** [January 1, 2024, 10:37pm UTC](https://universal-blue.discourse.group/t/quick-end-of-year-update/345/2 "2024-01-01T22:37:50Z")

</div>

> [@j0rge](#):
>
> Nearly every dev I’ve talked to uses both podman and docker in some capacity, so whatever, ship em both. 😃 Let’s see what happens!

Running both on the same system will likely create issues, notably regarding networking. In Fedora CoreOS land, we recommend using only one at a time: [Fedora CoreOS Frequently Asked Questions :: Fedora Docs](https://docs.fedoraproject.org/en-US/fedora-coreos/faq/#_can_i_run_containers_via_docker_and_podman_at_the_same_time)

---

<div class="post-metadata">

**Author:** ![j0rge](https://yyz2.discourse-cdn.com/free1/user_avatar/universal-blue.discourse.group/j0rge/32/8_2.png) [@j0rge](https://universal-blue.discourse.group/u/j0rge)\
**Post date:** [January 1, 2024, 10:47pm UTC](https://universal-blue.discourse.group/t/quick-end-of-year-update/345/3 "2024-01-01T22:47:57Z")

</div>

Good to know! We can probably just turn it into a toggle.

EDIT, p5’s looking at using it on-demand:

> <https://github.com/ublue-os/bluefin/pull/772>
>
> Timothée Ravier from RedHat has informed us that running both Podman and Docker …can result in unexpected behaviour.  
> This PR does not start the Docker service by default, but whenever someone interacts with the socket (e.g. \`docker container ls\`) the \`docker.service\` unit will be started automatically. This seems to replicate the current CoreOS behaviour.
> 
> Please see below for tests ran to confirm if this works as expected:
> 
> \<details\>
> 
> To confirm this behaviour, I did the following:
> 1. Stopped the \`docker.service\` systemd unit
> 2. Confirmed the \`docker.socket\` was running and \`docker.service\` was stopped
> 3. Ran \`docker container ls\` which returned expected results
> 4. Confirmed the \`docker.service\` was running
> 
> \`\`\`
> redpanda-sample-quadlet on  redpanda-sample-quadlet on ☁️ (eu-west-1) 
> ❯ systemctl status docker.socket 
> ● docker.socket - Docker Socket for the API
> Loaded: loaded (/usr/lib/systemd/system/docker.socket; disabled; preset: enabled)
> Active: active (running) since Mon 2024-01-01 12:23:05 GMT; 10h ago
> Triggers: ● docker.service
> Listen: /run/docker.sock (Stream)
> Tasks: 0 (limit: 37362)
> Memory: 0B
> CPU: 1ms
> CGroup: /system.slice/docker.socket
> 
> Jan 01 12:23:05 fedora systemd\[1\]: Starting docker.socket - Docker Socket for the API...
> Jan 01 12:23:05 fedora systemd\[1\]: Listening on docker.socket - Docker Socket for the API.
> 
> redpanda-sample-quadlet on  redpanda-sample-quadlet on ☁️ (eu-west-1) 
> ❯ systemctl status docker.service
> ● docker.service - Docker Application Container Engine
> Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: disabled)
> Drop-In: /usr/lib/systemd/system/service.d
> └─10-timeout-abort.conf
> Active: active (running) since Mon 2024-01-01 12:23:16 GMT; 10h ago
> TriggeredBy: ● docker.socket
> Docs: https://docs.docker.com
> Main PID: 1852 (dockerd)
> Tasks: 41
> Memory: 186.6M
> CPU: 4.611s
> CGroup: /system.slice/docker.service
> ├─1852 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
> └─2728 /usr/bin/docker-proxy -proto tcp -host-ip 127.0.0.1 -host-port 36269 -container-ip 172.18.0.5 -container-port 6443
> 
> Jan 01 12:23:15 fedora dockerd\[1852\]: time="2024-01-01T12:23:15.361488135Z" level=info msg="IPv6 enabled; Adding default IPv6 external servers: \[nameserver 2001:4860:4860::8888 nameserver 200\>
> Jan 01 12:23:15 fedora dockerd\[1852\]: time="2024-01-01T12:23:15.425903442Z" level=info msg="No non-localhost DNS nameservers are left in resolv.conf. Using default external servers: \[nameserv\>
> Jan 01 12:23:15 fedora dockerd\[1852\]: time="2024-01-01T12:23:15.426010473Z" level=info msg="IPv6 enabled; Adding default IPv6 external servers: \[nameserver 2001:4860:4860::8888 nameserver 200\>
> Jan 01 12:23:15 fedora dockerd\[1852\]: time="2024-01-01T12:23:15.483494027Z" level=info msg="No non-localhost DNS nameservers are left in resolv.conf. Using default external servers: \[nameserv\>
> Jan 01 12:23:15 fedora dockerd\[1852\]: time="2024-01-01T12:23:15.483506044Z" level=info msg="IPv6 enabled; Adding default IPv6 external servers: \[nameserver 2001:4860:4860::8888 nameserver 200\>
> Jan 01 12:23:15 fedora dockerd\[1852\]: time="2024-01-01T12:23:15.747024900Z" level=info msg="Loading containers: done."
> Jan 01 12:23:15 fedora dockerd\[1852\]: time="2024-01-01T12:23:15.796405146Z" level=info msg="Docker daemon" commit=311b9ff graphdriver=overlay2 version=24.0.7
> Jan 01 12:23:15 fedora dockerd\[1852\]: time="2024-01-01T12:23:15.796460110Z" level=info msg="Daemon has completed initialization"
> Jan 01 12:23:16 fedora dockerd\[1852\]: time="2024-01-01T12:23:16.306556552Z" level=info msg="API listen on /run/docker.sock"
> Jan 01 12:23:16 fedora systemd\[1\]: Started docker.service - Docker Application Container Engine.
> 
> redpanda-sample-quadlet on  redpanda-sample-quadlet on ☁️ (eu-west-1) 
> ❯ sudo systemctl stop docker.service
> \[sudo\] password for admin: 
> Stopping 'docker.service', but its triggering units are still active:
> docker.socket
> 
> redpanda-sample-quadlet on  redpanda-sample-quadlet on ☁️ (eu-west-1) 
> ❯ systemctl status docker.service
> ○ docker.service - Docker Application Container Engine
> Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: disabled)
> Drop-In: /usr/lib/systemd/system/service.d
> └─10-timeout-abort.conf
> Active: inactive (dead) since Mon 2024-01-01 22:59:54 GMT; 5s ago
> Duration: 10h 36min 27.729s
> TriggeredBy: ● docker.socket
> Docs: https://docs.docker.com
> Process: 1852 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=0/SUCCESS)
> Main PID: 1852 (code=exited, status=0/SUCCESS)
> CPU: 4.761s
> 
> Jan 01 22:59:54 fedora dockerd\[1852\]: time="2024-01-01T22:59:54.201385814Z" level=info msg="ignoring event" container=2fdddcc6feec108b09fa3140bb831bc135297edcfb9f59d90ba33717a7b0616a module=l\>
> Jan 01 22:59:54 fedora dockerd\[1852\]: time="2024-01-01T22:59:54.206545461Z" level=warning msg="ShouldRestart failed, container will not be restarted" container=ade1d00a523e176b1b051d1fd68036e\>
> Jan 01 22:59:54 fedora dockerd\[1852\]: time="2024-01-01T22:59:54.206590661Z" level=warning msg="ShouldRestart failed, container will not be restarted" container=651e9ab5b94f728dd5ca73abdc064a0\>
> Jan 01 22:59:54 fedora dockerd\[1852\]: time="2024-01-01T22:59:54.206547401Z" level=warning msg="ShouldRestart failed, container will not be restarted" container=d360b50f84012cf784fc8d38f51eea1\>
> Jan 01 22:59:54 fedora dockerd\[1852\]: time="2024-01-01T22:59:54.206597392Z" level=warning msg="ShouldRestart failed, container will not be restarted" container=2fdddcc6feec108b09fa3140bb831bc\>
> Jan 01 22:59:54 fedora dockerd\[1852\]: time="2024-01-01T22:59:54.593385553Z" level=info msg="stopping event stream following graceful shutdown" error="\<nil\>" module=libcontainerd namespace=moby
> Jan 01 22:59:54 fedora dockerd\[1852\]: time="2024-01-01T22:59:54.593605515Z" level=info msg="Daemon shutdown complete"
> Jan 01 22:59:54 fedora systemd\[1\]: docker.service: Deactivated successfully.
> Jan 01 22:59:54 fedora systemd\[1\]: Stopped docker.service - Docker Application Container Engine.
> Jan 01 22:59:54 fedora systemd\[1\]: docker.service: Consumed 4.761s CPU time.
> 
> redpanda-sample-quadlet on  redpanda-sample-quadlet on ☁️ (eu-west-1) 
> ❯ docker container ls
> CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
> d360b50f8401 kindest/node:v1.27.3 "/usr/local/bin/entr…" 46 hours ago Up Less than a second local-cluster-worker2
> 2fdddcc6feec kindest/node:v1.27.3 "/usr/local/bin/entr…" 46 hours ago Up Less than a second 127.0.0.1:36269-\>6443/tcp local-cluster-control-plane
> ade1d00a523e kindest/node:v1.27.3 "/usr/local/bin/entr…" 46 hours ago Up Less than a second local-cluster-worker
> 651e9ab5b94f kindest/node:v1.27.3 "/usr/local/bin/entr…" 46 hours ago Up Less than a second local-cluster-worker3
> 
> redpanda-sample-quadlet on  redpanda-sample-quadlet on ☁️ (eu-west-1) 
> ❯ systemctl status docker.service
> ● docker.service - Docker Application Container Engine
> Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: disabled)
> Drop-In: /usr/lib/systemd/system/service.d
> └─10-timeout-abort.conf
> Active: active (running) since Mon 2024-01-01 23:00:39 GMT; 2s ago
> TriggeredBy: ● docker.socket
> Docs: https://docs.docker.com
> Main PID: 1063658 (dockerd)
> Tasks: 37
> Memory: 43.3M
> CPU: 417ms
> CGroup: /system.slice/docker.service
> ├─1063658 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
> └─1063999 /usr/bin/docker-proxy -proto tcp -host-ip 127.0.0.1 -host-port 36269 -container-ip 172.18.0.5 -container-port 6443
> 
> Jan 01 23:00:38 fedora dockerd\[1063658\]: time="2024-01-01T23:00:38.317713091Z" level=info msg="IPv6 enabled; Adding default IPv6 external servers: \[nameserver 2001:4860:4860::8888 nameserver \>
> Jan 01 23:00:38 fedora dockerd\[1063658\]: time="2024-01-01T23:00:38.423939512Z" level=info msg="No non-localhost DNS nameservers are left in resolv.conf. Using default external servers: \[names\>
> Jan 01 23:00:38 fedora dockerd\[1063658\]: time="2024-01-01T23:00:38.423958522Z" level=info msg="IPv6 enabled; Adding default IPv6 external servers: \[nameserver 2001:4860:4860::8888 nameserver \>
> Jan 01 23:00:38 fedora dockerd\[1063658\]: time="2024-01-01T23:00:38.529232501Z" level=info msg="No non-localhost DNS nameservers are left in resolv.conf. Using default external servers: \[names\>
> Jan 01 23:00:38 fedora dockerd\[1063658\]: time="2024-01-01T23:00:38.529245211Z" level=info msg="IPv6 enabled; Adding default IPv6 external servers: \[nameserver 2001:4860:4860::8888 nameserver \>
> Jan 01 23:00:38 fedora dockerd\[1063658\]: time="2024-01-01T23:00:38.737180185Z" level=info msg="Loading containers: done."
> Jan 01 23:00:38 fedora dockerd\[1063658\]: time="2024-01-01T23:00:38.770042937Z" level=info msg="Docker daemon" commit=311b9ff graphdriver=overlay2 version=24.0.7
> Jan 01 23:00:38 fedora dockerd\[1063658\]: time="2024-01-01T23:00:38.770290620Z" level=info msg="Daemon has completed initialization"
> Jan 01 23:00:39 fedora dockerd\[1063658\]: time="2024-01-01T23:00:39.217715284Z" level=info msg="API listen on /run/docker.sock"
> Jan 01 23:00:39 fedora systemd\[1\]: Started docker.service - Docker Application Container Engine
> \`\`\`
> 
> \</details\>

---

<div class="post-metadata">

**Author:** ![JohnAtl](https://yyz2.discourse-cdn.com/free1/user_avatar/universal-blue.discourse.group/johnatl/32/3485_2.png) [@JohnAtl](https://universal-blue.discourse.group/u/JohnAtl)\
**Post date:** [January 2, 2024, 1:04am UTC](https://universal-blue.discourse.group/t/quick-end-of-year-update/345/4 "2024-01-02T01:04:25Z")

</div>

Thanks for the updates @j0rge !  
I appreciate all the work you and the teams do!

Happy New Year!

---

<div class="post-metadata">

**Author:** ![Joseph\_of\_Earth](https://yyz2.discourse-cdn.com/free1/user_avatar/universal-blue.discourse.group/joseph_of_earth/32/143_2.png) [@Joseph\_of\_Earth](https://universal-blue.discourse.group/u/Joseph_of_Earth)\
**Post date:** [January 2, 2024, 1:23am UTC](https://universal-blue.discourse.group/t/quick-end-of-year-update/345/5 "2024-01-02T01:23:31Z")

</div>

Welcome welcome to the forum! 😉
