|  | 
|  | 1 | +# Package Management Process | 
|  | 2 | + | 
|  | 3 | +GhostBSD operates a three-tier package repository system that delivers stable packages to users while supporting continuous development and thorough testing. | 
|  | 4 | + | 
|  | 5 | +## Repository Structure | 
|  | 6 | + | 
|  | 7 | +GhostBSD maintains three distinct package repositories: | 
|  | 8 | + | 
|  | 9 | +### Unstable Repository | 
|  | 10 | +- **Purpose**: Developer playground and experimental builds | 
|  | 11 | +- **Target Users**: Developers working on new features and ports | 
|  | 12 | +- **FreeBSD Base**: Tracks the next FreeBSD releng development branch (e.g., releng/15.0 when created) | 
|  | 13 | +- **Update Frequency**: Independent development builds | 
|  | 14 | +- **Risk Level**: High - experimental features and bleeding-edge development | 
|  | 15 | +- **Isolation**: Operates independently from testing and stable repositories | 
|  | 16 | + | 
|  | 17 | +### Testing Repository   | 
|  | 18 | +- **Purpose**: Pre-production testing environment (what "unstable" was previously) | 
|  | 19 | +- **Target Users**: Contributors and community members who help test packages | 
|  | 20 | +- **FreeBSD Base**: Current stable FreeBSD release (e.g., 14.3-RELEASE) | 
|  | 21 | +- **Update Frequency**: Regular builds awaiting validation before user deployment | 
|  | 22 | +- **Risk Level**: Medium - packages undergo testing before reaching users | 
|  | 23 | + | 
|  | 24 | +### Stable Repository | 
|  | 25 | +- **Purpose**: Production packages for end users | 
|  | 26 | +- **Target Users**: All GhostBSD users | 
|  | 27 | +- **FreeBSD Base**: Current stable FreeBSD release | 
|  | 28 | +- **Update Frequency**: Synchronized from testing after validation | 
|  | 29 | +- **Risk Level**: Low - fully tested and validated packages | 
|  | 30 | + | 
|  | 31 | +## Package Flow | 
|  | 32 | + | 
|  | 33 | +``` | 
|  | 34 | +[Unstable]     [Testing] → [Stable] | 
|  | 35 | +     ↓              ↓          ↓ | 
|  | 36 | +Development   Community   Production | 
|  | 37 | +(Independent)  Testing | 
|  | 38 | +``` | 
|  | 39 | + | 
|  | 40 | +### How Packages Move | 
|  | 41 | + | 
|  | 42 | +1. **Unstable Repository (Independent Development)** | 
|  | 43 | +   - Developers build and test experimental features | 
|  | 44 | +   - Tracks the next FreeBSD releng development branch for early compatibility testing | 
|  | 45 | +   - Packages do not automatically flow to testing or stable | 
|  | 46 | +   - Provides early feedback on upcoming FreeBSD version compatibility | 
|  | 47 | + | 
|  | 48 | +2. **Testing to Stable Flow** | 
|  | 49 | +   - Testing serves as the validation environment before user deployment | 
|  | 50 | +   - Packages undergo builds and testing in the testing repository | 
|  | 51 | +   - Only after thorough testing are packages synchronized to stable | 
|  | 52 | +   - Same repository build with testing gates before promotion to stable | 
|  | 53 | + | 
|  | 54 | +## Package Repository Configuration | 
|  | 55 | + | 
|  | 56 | +#### Stable (Default for Users) | 
|  | 57 | +``` | 
|  | 58 | +GhostBSD: { | 
|  | 59 | +  url: "https://pkg.ghostbsd.org/stable/${ABI}/latest", | 
|  | 60 | +  signature_type: "pubkey", | 
|  | 61 | +  pubkey: "/usr/share/keys/ssl/certs/ghostbsd.cert", | 
|  | 62 | +  enabled: yes | 
|  | 63 | +} | 
|  | 64 | +
 | 
|  | 65 | +GhostBSD-base: { | 
|  | 66 | +  url: "https://pkg.ghostbsd.org/stable/${ABI}/base", | 
|  | 67 | +  signature_type: "pubkey", | 
|  | 68 | +  pubkey: "/usr/share/keys/ssl/certs/ghostbsd.cert", | 
|  | 69 | +  enabled: yes | 
|  | 70 | +} | 
|  | 71 | +``` | 
|  | 72 | + | 
|  | 73 | +#### Testing (For Contributors and Community Testers) | 
|  | 74 | +``` | 
|  | 75 | +GhostBSD: { | 
|  | 76 | +  url: "https://pkg.ghostbsd.org/testing/${ABI}/latest", | 
|  | 77 | +  signature_type: "pubkey", | 
|  | 78 | +  pubkey: "/usr/share/keys/ssl/certs/ghostbsd.cert", | 
|  | 79 | +  enabled: yes | 
|  | 80 | +} | 
|  | 81 | +
 | 
|  | 82 | +GhostBSD-base: { | 
|  | 83 | +  url: "https://pkg.ghostbsd.org/testing/${ABI}/base", | 
|  | 84 | +  signature_type: "pubkey", | 
|  | 85 | +  pubkey: "/usr/share/keys/ssl/certs/ghostbsd.cert", | 
|  | 86 | +  enabled: yes | 
|  | 87 | +} | 
|  | 88 | +``` | 
|  | 89 | + | 
|  | 90 | +#### Unstable (For Developers) | 
|  | 91 | +``` | 
|  | 92 | +GhostBSD: { | 
|  | 93 | +  url: "https://pkg.ghostbsd.org/unstable/${ABI}/latest", | 
|  | 94 | +  signature_type: "pubkey", | 
|  | 95 | +  pubkey: "/usr/share/keys/ssl/certs/ghostbsd.cert", | 
|  | 96 | +  enabled: yes | 
|  | 97 | +} | 
|  | 98 | +
 | 
|  | 99 | +GhostBSD-base: { | 
|  | 100 | +  url: "https://pkg.ghostbsd.org/unstable/${ABI}/base", | 
|  | 101 | +  signature_type: "pubkey", | 
|  | 102 | +  pubkey: "/usr/share/keys/ssl/certs/ghostbsd.cert", | 
|  | 103 | +  enabled: yes | 
|  | 104 | +} | 
|  | 105 | +``` | 
|  | 106 | + | 
|  | 107 | +## System Benefits | 
|  | 108 | + | 
|  | 109 | +### For Developers | 
|  | 110 | +- **Sandbox Environment**: Unstable provides an isolated development environment | 
|  | 111 | +- **Early FreeBSD Testing**: Developers test against the next FreeBSD releng development branch | 
|  | 112 | +- **No User Impact**: Development work does not affect testing or production users | 
|  | 113 | + | 
|  | 114 | +### For Contributors and Community Testers | 
|  | 115 | +- **Focused Validation**: Testing repository focuses on pre-production validation | 
|  | 116 | +- **Stable Base**: Built on stable FreeBSD releases for consistent testing environments | 
|  | 117 | +- **Clear Gateway**: Serves as the final validation gate before user deployment | 
|  | 118 | + | 
|  | 119 | +### For Users | 
|  | 120 | +- **Proven Stability**: Packages reach users only after community testing validation | 
|  | 121 | +- **Reliable Updates**: Community testing ensures package quality before deployment | 
|  | 122 | +- **Consistent Experience**: Built on stable FreeBSD releases | 
|  | 123 | + | 
|  | 124 | +## Repository Operations | 
|  | 125 | + | 
|  | 126 | +### FreeBSD Release Alignment | 
|  | 127 | + | 
|  | 128 | +When FreeBSD creates a new releng development branch (e.g., `releng/15.0`): | 
|  | 129 | + | 
|  | 130 | +1. **Unstable** switches to track the next FreeBSD releng development branch | 
|  | 131 | +2. **Testing** continues operating with current stable FreeBSD (14.3-RELEASE)  | 
|  | 132 | +3. **Stable** remains synchronized with testing | 
|  | 133 | + | 
|  | 134 | +This operational model: | 
|  | 135 | +- Detects FreeBSD compatibility issues early in unstable | 
|  | 136 | +- Provides extended testing periods for major FreeBSD updates | 
|  | 137 | +- Ensures smooth transitions for end users via the testing→stable flow | 
|  | 138 | + | 
|  | 139 | +### Development Operations | 
|  | 140 | + | 
|  | 141 | +#### Experimental Development | 
|  | 142 | +- Developers operate in the unstable repository for experimental work | 
|  | 143 | +- Features are developed and tested against the next FreeBSD releng development branch | 
|  | 144 | +- No automatic promotion to testing occurs - requires deliberate decisions | 
|  | 145 | + | 
|  | 146 | +#### Production Pipeline | 
|  | 147 | +1. Packages are built in testing repository | 
|  | 148 | +2. Community validation and testing procedures are applied | 
|  | 149 | +3. Successful packages are synchronized to stable for users | 
|  | 150 | + | 
|  | 151 | +#### Security Updates (CVEs) | 
|  | 152 | +1. Security updates are built and tested in testing repository | 
|  | 153 | +2. Expedited community validation processes are applied | 
|  | 154 | +3. Quick synchronization to stable for security patches | 
|  | 155 | + | 
|  | 156 | +## System Implementation | 
|  | 157 | + | 
|  | 158 | +### Build Infrastructure | 
|  | 159 | +- Independent build environment for unstable (next FreeBSD releng development branch) | 
|  | 160 | +- Shared build infrastructure for testing/stable (same repository with different promotion stages) | 
|  | 161 | +- Automated synchronization mechanisms from testing to stable | 
|  | 162 | + | 
|  | 163 | +### Testing Procedures | 
|  | 164 | +- Community testing in testing repository before stable promotion | 
|  | 165 | +- Validation gates before synchronization to stable | 
|  | 166 | +- Community-driven validation processes | 
|  | 167 | + | 
|  | 168 | +### User Communication | 
|  | 169 | +- Documentation of repository purposes | 
|  | 170 | +- Guidelines for developers on unstable usage | 
|  | 171 | +- Release notes for testing→stable promotions | 
|  | 172 | + | 
|  | 173 | +## Historical Context | 
|  | 174 | + | 
|  | 175 | +GhostBSD's three-tier system addresses challenges from previous approaches: | 
|  | 176 | + | 
|  | 177 | +- **Previous Two-Tier System**: Unstable served dual purposes of development and pre-production testing | 
|  | 178 | +- **Developer Isolation**: Developers now operate in an experimental environment without affecting the user pipeline | 
|  | 179 | +- **Testing Clarity**: Testing repository now operates as a focused pre-production environment | 
|  | 180 | + | 
|  | 181 | +This system separates development experimentation from the user-focused testing→stable pipeline while giving developers early access to the next FreeBSD releng development branches. | 
0 commit comments