<html><body><p><strong>EDIT</strong>: With the immensely greater wisdom that comes with being a day older, I'm now more or less convinced this whole post is wrong. But instead of editing it and confusing people who read the original, I've left it here and written a <a href="https://www.happyassassin.net/2015/09/18/identifying-fedora-media-redux-what-is-atomic/">follow-up</a>. Please read that.</p>

<p>Thanks to <a href="http://blog.linuxgrrl.com/2015/09/15/fedora-atomic-logo-idea/">mizmo</a> for inspiring this post.</p>

<h2>On 'Fedora Atomic' as a flavor</h2>

<p>Mo wrote that the Cloud WG has decided that, from Fedora 24 onwards, they will focus on <a href="http://www.projectatomic.io/">Atomic</a>-based images as their primary deliverables. In response to this, Mo and Matt Miller were kicking around the idea of - as I understand it - effectively rebranding the 'Cloud' flavor of Fedora as the 'Atomic' flavor.</p>

<p>This immediately struck me as problematic, and after a bit of thought I was able to identify why.</p>

<p>The current Fedora flavors - Cloud, Server, and Workstation - can be characterized as <em>contexts</em> in which you might want to deploy Fedora. "I want to deploy Fedora on a Cloud!", or "I want to deploy Fedora on a Workstation!", or "I want to deploy Fedora on a Server!" Yes, there's arguably a <em>bit</em> of overlap between 'Cloud' and 'Server', but we do have a reasonable answer to that ('Cloud' is about new-fangled cattle, 'Server' is about old-fashioned pets).</p>

<p>Atomic is not a context in which you might deploy Fedora. You can't say "I want to deploy Fedora on an Atomic!", it just doesn't work. Atomic is rather what I'm referring to as a <em>deployment method</em>. It's a mechanism by which the system is deployed and updated. Another <em>deployment method</em> - the counterpart to 'Atomic' - would be 'RPM'. Atomic happens to a deployment method that's quite appropriate for Cloud deployments, but that doesn't mean you can just do <code>s/Cloud/Atomic/g</code> and everything will make sense.</p>

<p>So for me the idea is simply not conceptually compatible with how we define the flavors. We might even, for instance, want to build 'Atomic Workstation' instances of Fedora. I believe there's even been interest in doing that, before.</p>

<p>Mo's post suggests that we might treat 'cloud' rather like we currently treat 'ARM', as a sort of orthogonal concept to the flavors, with a kind of parallel identity on the download site. I would suggest that it would make more sense to do exactly the opposite: it's <em>Atomic</em> that should be given a sort of parallel existence. We might want to have an Atomic landing page which focused on all the Atomic implementations of Fedora. But it's not, for me, a flavor.</p>

<h2>Thinking about identifying Fedora media</h2>

<p>So you might be aware, I have a little project called <a href="https://www.happyassassin.net/fedfind">fedfind</a>, which is broadly about finding Fedora media. About half of the work fedfind does is <em>finding</em> the media. The other half of the work it does is <em>identifying</em> them. Fedora 23 Beta RC1 has 59 'images', approximately (depending on whether you count <code>boot.iso</code> files separately from their hardlinked alternate names). Trying to come up with a set of attributes that would serve as a sort of conceptual framework for identifying images has been an interesting (and ongoing!) challenge. In fact, as a result of thinking about the 'Atomic' proposal, I've just revised fedfind's approach a little. So, I thought I'd write quickly about how fedfind does it.</p>

<p>I first thought about this stuff before starting fedfind, when I wrote an <a href="https://fedoraproject.org/wiki/User:Adamwill/Draft_fedora_image_naming_policy">image naming policy</a>. fedfind initially followed that policy precisely. Events have overtaken it a bit, though, so the current implementation isn't quite the same. And today, I've added the <em>deployment method</em> concept as an attribute in fedfind's system. The changes described here are sitting in my editor right now, but should show up in git master soon!</p>

<p>Some of the attributes fedfind uses are fairly obvious (<em>arch</em> is just the arch, and <em>release</em>, <em>milestone</em> and <em>compose</em> are just version identifiers), so I'll focus on the more interesting ones. fedfind provides a couple of properties - <em>desc</em> and <em>shortdesc</em> - for images which can be used as descriptions; taken together, all these properties allow us to give a unique identity to every one of the 59 images in 23 Beta RC1, as well as covering all historical releases (in my checks anyway). <em>shortdesc</em> contains <em>payload</em>, <em>deployment</em> (if not 'rpm'), <em>imagetype</em>, and <em>imagesubtype</em> (if present); <em>desc</em> adds <em>arch</em>. For any given release's images, there should be no duplicated <em>desc</em>s.</p>

<h3>imagetype and imagesubtype</h3>

<p>These identify the 'type' of the image specifically. What's the difference between the Fedora 22 x86_64 Workstation live image and the Fedora 22 x86_64 Workstation network install image? They're the same version, same arch, same <em>payload</em> (see below) - but different <em>imagetype</em>. A few images also have an <em>imagesubtype</em>. For instance, we provide two types of Vagrant image, for use with libvirt and virtualbox; these have <code>vagrant</code> as the <em>imagetype</em> and <code>libvirt</code> or <code>virtualbox</code> as the <em>imagesubtype</em>.</p>

<h3>flavor, loadout and payload</h3>

<p>It's intended that most every fedfind image should have either a <em>flavor</em> or a <em>loadout</em>; for convenience, whichever one it has is also available as the <em>payload</em>. This can be thought of as 'what's the actual content of the image'. Flavors are <code>workstation</code>, <code>server</code>, and <code>cloud</code>; loadouts are things like <code>kde</code>, <code>xfce</code>, <code>mate</code> etc. (for live images and ARM disk images), plus some oddballs. There is a <code>minimal</code> for ARM disk images, and <code>source</code> and <code>desktop</code> for older releases where we had source CDs/DVDs and 'Desktop' live images. There's one fairly special case: pre-Fedora.next DVDs and network install images, <code>boot.iso</code>s, and current nightly images have no <em>flavor</em> or <em>loadout</em>, but have the special <em>payload</em> <code>generic</code>.</p>

<p>Current fedfind releases have a concept of <em>subflavor</em>, which is only used to give some Cloud images a <em>subflavor</em> of <code>atomic</code>. After thinking about this (above) it seemed completely wrong, so today I've changed things around so the <em>subflavor</em> property is gone, and instead we have...</p>

<h3>deployment</h3>

<p>As discussed above, this is the 'deployment method'. Currently it's either <code>rpm</code> or <code>atomic</code>.</p>
</body></html>