This was the first in person DevConf in a while and this time it was in summer. That’s quite a difference conference. As they said in the closing talk, the “tree track” was quite popular. There were a bunch of deckchairs under a tree next to the ice cream truck in the shade of a big tree.

For Foreman we had a booth where we had a live system to show things and our designer @MariSvirik had her laptop with some designs. She took a lot of notes with user feedback.

In case people are interested:

Overall it was much quieter than previous editions. Part of this may be the summer, which means visitors didn’t want to stay inside at our booth. It may also be because of reduced travel budges in companies.

Upgrading of provisioning templates was one interesting thing that came up. While talking about it, we came to implementing diffs between provisioning templates. That would make it easier to see what they’re missing. Taking it a step further would add tracking where the template was cloned from, making it possible to implement a “diff to original” button in the UI.

I suggested that the Foreman 3.5 custom pre/post snippet hooks feature should make it less needed to clone the whole template. In a later discussion with others it was raised that when using foreman_templates to sync in content (like via git) it would prefix template names with some name, which breaks the feature. We didn’t come up with an elegant solution.

On Sunday we started our booth but there was nobody. That meant I could visit talks.

My list:

Fedora package update? Assess its impact in Copr

Overall an interesting approach. The Fedora Python team creates a (temporary) COPR for a package update. In the COPR they build the new package. Then they look at reverse dependencies and rebuild those packages too. If there are failures, they create another COPR without the change. Any packages that pass in the clean COPR are suspects that deserve further investigation. Overall it showed some nice uses of COPR.

Small tool I noticed and didn’t know before: pkgname to get the package name from a NEVRA:

$ echo fedora-packager-0: | pkgname

What’s new in systemd

Features that caught my attention:


The existing Type=notify implements a reload as sending a signal to the process and then at some point in the future the service may be reloaded. The new type extends the existing communication socket with sending a message after the reload is complete. Allowing the user to know when it really completed.


An interesting tool to work with OS images.

systemctl soft-reboot

I was making notes while this was talked about, but it shuts down all services and starts them up again. Could be interesting for some use cases.

Migration of OpenSSL from dist-git to src-git in Fedora

The packaging for OpenSSL has a lot of patches. Using src-git makes sense for them, but for us I don’t think it really does. Overall Foreman’s packaging model is different from Fedora. We have a single foreman-packaging repository where Fedora has a repository for each package.

Converting Linux distributions to other distros

I only saw half of this, but the one interesting note is that when using convert2rhel with CentOS Stream it is actually a downgrade. Few packagers ever test downgrades, so there are many potential dragons. An audience member asked if users could start with only applying security updates and waiting for the next RHEL point release, but I noted that CentOS Stream doesn’t publish errata so that’s not easy to do (and he agreed).

Conflict Resolution for Open Source Teams

This was a very interesting session. We had a very lively discussion, which totally didn’t work with it being streamed. I’d recommend it, but the recording is probably bad because the audience isn’t captured.

The one thing I noticed is that many conflict examples were incidents, but in the discussion it often came up that incidents are rarely interesting. Much more often it’s about relationships where over time you may have multiple incidents.

The speaker also prepared a workshop to practice, but because of the discussions we didn’t get to that at all.

Dynamic RPM Spec Files - The Future of Packaging?

This is an effort I was already aware of. EL 9 introduced dynamic build requires and I’m looking forward to using it (see the Fedora change and my PR showcasing it). Sadly we can’t until we drop EL 8 (and I asked, but the backport is big). However, it will make future packaging easier, especially in nightly.

This new effort takes it further and makes it possibly to dynamically generate subpackages and in the future replace parts of the main package as well.

One example is Python packaging where the actual pythonXY-$pkg subpackage can be generated dynamically, perhaps even for all supported Python versions.

Similar, in the future I can imagine the main Foreman package would have more logic about how to package Foreman plugins. Something we do today with templates, but this feature would make it native.

Overall I’m looking forward to play with this.

Fedora ELN at Meta: a testbed for fleet upgrades

It partially overlapped with my previous talk, so I only saw part of it. The most interesting part I picked up is that CentOS Stream 10 will branch soon. They also talked about many issues they run into, but given Foreman doesn’t even run on EL 9 yet, we’re not really in a position to effectively test anything.