Skip to content

Commit b24dddc

Browse files
committed
Added Package Management Process and linked it in Ports contributors' documentation.
1 parent e422da2 commit b24dddc

File tree

2 files changed

+182
-0
lines changed

2 files changed

+182
-0
lines changed

contributor/ports/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22

33
Welcome to the GhostBSD ports contribution documentation! Here’s how you can help maintain our ports tree and updated ports.
44

5+
- [Package Management Process](package-process.md) - Understanding GhostBSD's three-tier package repository system
56
- [Maintaining GhostBSD Ports in Sync with FreeBSD Ports](maintaining-ports-tree.md) - Learn how to keep our ports current with FreeBSD.

contributor/ports/package-process.md

Lines changed: 181 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,181 @@
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

Comments
 (0)