debian-forge/docs/debian/flowchart.md

165 lines
5.5 KiB
Markdown
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
```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.