debian-forge/debian-forge-docs/flowchart.md

5.5 KiB
Executable file

Fedora Bootc Ecosystem: Top-Down Linear Flow

Overview

This flowchart shows the complete Fedora bootc ecosystem from package sources to user deployment, in a linear top-down progression.

The Complete Flow

graph TD
    %% Start: Package Sources
    A[Fedora Package Sources] --> B[Koji Build System]
    B --> C[Mock Build Environments]
    C --> D[RPM Packages in Koji]
    
    %% Configuration Management
    D --> E[workstation-ostree-config Repository]
    E --> F[Treefiles (YAML)]
    F --> G[Package Groups & Variants]
    G --> H[Fedora Comps Sync]
    
    %% Build Process (with ostree-importer step)
    D --> I[rpm-ostree compose tree]
    F --> I
    I --> J[OSTree Repository with Commits]
    J --> J1[ostree-importer to official repo]
    J1 --> K[rpm-ostree compose container-encapsulate]
    K --> L[Special bootc containers]
    
    %% Base Images Created
    L --> M[quay.io/fedora/fedora-bootc:42]
    L --> N[Fedora Silverblue]
    L --> O[Fedora Kinoite]
    L --> P[Other Atomic variants]
    
    %% User Customization Paths
    M --> Q[Users build FROM base images]
    Q --> R[Custom bootc containers]
    
    %% Path 1: Direct Containerfile
    Q --> S[Write Containerfile directly]
    S --> T[Container-First build path]
    
    %% Path 2: BlueBuild abstraction
    Q --> U[Write recipe.yml]
    U --> V[BlueBuild generates Containerfile]
    V --> T
    
    %% BlueBuild processing
    U --> W[BlueBuild CLI processes recipe.yml]
    W --> X[Generates Containerfile automatically]
    X --> T
    T --> Y[Custom Fedora Atomic Images]
    Y --> Z[ISO, QCOW2, RAW formats]
    
    %% Production conversion tools (clarified roles)
    R --> AA[bootc-image-builder]
    M --> AA
    AA --> BB[Standard bootable images]
    
    R --> CC[osbuilder/osbuild]
    M --> CC
    CC --> DD[Advanced custom images]
    CC --> DD1[OSTree composition]
    CC --> DD2[Package management]
    CC --> DD3[Complex build orchestration]
    
    %% Traditional Fedora path
    D --> EE[Pungi Compose System]
    EE --> FF[Traditional Fedora ISOs]
    
    %% User experience limitations
    Y --> GG[Steep Learning Curve]
    Y --> HH[Compatibility Gaps]
    Y --> II[Slow rpm-ostree Operations]
    Y --> JJ[Hardware/Driver Issues]
    
    %% User lifecycle operations
    M --> KK[rpm-ostree upgrade]
    M --> LL[rpm-ostree rollback]
    M --> MM[rpm-ostree rebase]
    
    %% These affect the user experience
    KK --> NN[System updates]
    LL --> OO[System rollbacks]
    MM --> PP[System rebasing]

Key Components

1. Package Infrastructure

  • Input: Fedora Package Sources
  • Output: RPM Packages in Koji repository
  • Tools: Koji Build System, Mock Build Environments

2. Configuration Management

  • Input: RPM Packages + Fedora package groups
  • Output: Treefiles (YAML) defining variants
  • Tools: workstation-ostree-config repository, Fedora Comps Sync

3. Build Process

  • Input: RPM Packages + Treefiles
  • Output: Special bootc containers
  • Tools: rpm-ostree compose tree → ostree-importer → rpm-ostree compose container-encapsulate

4. Base Images

  • Input: Special bootc containers
  • Output: Official Fedora bootc containers and variants
  • Examples: quay.io/fedora/fedora-bootc:42, Fedora Silverblue, Kinoite

5. User Customization

  • Input: Base bootc images
  • Output: Custom bootc containers
  • Paths:
    • Direct: Containerfile → Custom container
    • BlueBuild: recipe.yml → BlueBuild → Containerfile → Custom container

6. Production Tools

  • Input: Custom bootc containers
  • Output: Bootable disk images
  • Tools:
    • bootc-image-builder: Standard bootable images
    • osbuilder/osbuild: Advanced customization, OSTree composition, package management, complex build orchestration

7. Traditional Fedora

  • Input: RPM Packages
  • Output: Traditional Fedora ISOs
  • Tools: Pungi Compose System

8. User Limitations

  • Input: Custom Fedora Atomic Images
  • Output: User experience challenges
  • Issues: Learning curve, compatibility gaps, slow operations, hardware limitations

9. User Lifecycle Operations

  • Input: Base bootc images
  • Output: System management operations
  • Operations: rpm-ostree upgrade, rollback, rebase
  • Purpose: Fundamental to the "atomic" nature of the system

What Each Step Produces

Step Input Output Tool
Package Sources Source code RPM Packages Koji + Mock
Configuration RPMs + package groups Treefiles (YAML) workstation-ostree-config
Build Process RPMs + Treefiles OSTree commits rpm-ostree compose tree
Import OSTree commits Official repo ostree-importer
Encapsulate OSTree commits bootc containers rpm-ostree compose container-encapsulate
Base Images bootc containers Official variants Container registry
User Customization Base images Custom containers Containerfile or BlueBuild
Production Tools Custom containers Bootable images bootc-image-builder/osbuilder
Traditional Fedora RPMs ISOs Pungi
User Lifecycle Base images System operations rpm-ostree commands

What This Shows

This flowchart demonstrates that Fedora bootc requires:

  • Complete package infrastructure
  • Configuration management system
  • Specialized build tools
  • User abstraction layers
  • Multiple production conversion options
  • User lifecycle management

For Debian Atomic to work similarly, it needs equivalent infrastructure and tools.