# 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 ```mermaid 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.