Thank you for your interest in contributing to Aurora ISO Builder! This guide will help you get started with contributing to the project.
- Code of Conduct
- Getting Started
- Development Setup
- Making Changes
- Testing
- Submitting Changes
- Style Guide
- Resources
This project follows the Universal Blue Code of Conduct. By participating, you are expected to uphold this code.
Before you begin, ensure you have the following tools installed:
- Git: Version control
- Just: Command runner for automation
- Pre-commit: For running validation hooks
- Bash: For running scripts
# Install Just command runner
curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to ~/.local/bin
export PATH="$HOME/.local/bin:$PATH"
# Install pre-commit
pip install pre-commit
# Clone the repository
git clone https://github.com/ublue-os/aurora-iso.git
cd aurora-iso
# Install pre-commit hooks
pre-commit install- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/aurora-iso.git cd aurora-iso - Add upstream remote:
git remote add upstream https://github.com/ublue-os/aurora-iso.git
- Install pre-commit hooks:
pre-commit install
Create a descriptive branch name:
feat/add-new-feature- For new featuresfix/bug-description- For bug fixesdocs/update-readme- For documentation changeschore/update-deps- For maintenance tasks
We use Conventional Commits for all commit messages:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Types:
feat: New featurefix: Bug fixdocs: Documentation changeschore: Maintenance tasksrefactor: Code refactoringtest: Adding or updating testsci: CI/CD changes
Examples:
feat: add support for custom kernel arguments
fix: correct Anaconda profile partitioning scheme
docs: update README with new ISO variants
chore: update pre-commit hooks to v5.0.0
If using AI assistance, include an attribution footer:
feat: improve ISO configuration script
Assisted-by: Claude 3.5 Sonnet via Zed AI
Always validate your changes before committing:
# Run all pre-commit hooks
pre-commit run --all-files
# Validate Just syntax
just check
# Test ISO configuration script syntax
just test-iso-config
# Auto-fix formatting issues
just fixISO builds are automatically triggered on pull requests. The workflow will:
- Build ISOs for all configured flavors
- Generate checksums
- Upload artifacts to GitHub
You can download and test the generated ISOs from the GitHub Actions artifacts.
To manually test the ISO configuration script:
# Validate bash syntax
bash -n iso_files/configure_iso_anaconda-webui.sh
# Or use the Just recipe
just test-iso-config-
Sync with upstream:
git fetch upstream git rebase upstream/main
-
Run validation:
pre-commit run --all-files just check just test-iso-config
-
Test your changes: Ensure the ISO builds successfully in GitHub Actions
-
Push your changes:
git push origin your-branch-name
-
Create a Pull Request on GitHub with:
- Clear title using conventional commit format
- Detailed description of changes
- Link to related issues (if applicable)
- Screenshots or logs (if relevant)
-
Wait for CI checks to complete:
- Just syntax validation
- Pre-commit hooks
- ISO build (if workflow files changed)
-
Address review feedback if requested
-
Squash commits if requested by maintainers
## Description
Brief description of what this PR does.
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Documentation update
- [ ] Maintenance/chore
## Testing
- [ ] Validated locally with `just check`
- [ ] Ran pre-commit hooks
- [ ] Tested ISO configuration script syntax
- [ ] ISO builds successfully in GitHub Actions
## Related Issues
Closes #123
## Additional Notes
Any additional context or notes for reviewers.- Use
#!/usr/bin/bashor#!/usr/bin/env bashshebang - Use
set -eoux pipefailfor strict error handling - Quote variables:
"${VARIABLE}" - Use meaningful variable names in UPPER_CASE
- Add comments for complex logic
- Follow existing patterns in
iso_files/configure_iso_anaconda-webui.sh
Example:
#!/usr/bin/bash
set -eoux pipefail
readonly IMAGE_NAME="aurora"
readonly IMAGE_VERSION="stable"
if [[ -n "${IMAGE_NAME}" ]]; then
echo "Building ISO for ${IMAGE_NAME}"
fi- Use 2 spaces for indentation
- Quote strings when necessary
- Use
---document separator - Keep workflows readable with descriptive names
- Use descriptive recipe names
- Add comments for complex recipes
- Group related recipes with
[group('name')] - Mark internal recipes with
[private] - Use consistent formatting (run
just fix)
Example:
# Build ISO for specific flavor
[group('ISO')]
build-iso flavor="main":
#!/usr/bin/bash
set -eoux pipefail
echo "Building ISO for {{ flavor }}"- Use descriptive headings
- Include code blocks with language specification
- Keep lines under 120 characters when possible
- Use relative links for internal documentation
- Edit
iso_files/configure_iso_anaconda-webui.sh - Test syntax:
just test-iso-config - Create PR with changes
- Wait for ISO build to complete
- Test the generated ISO
- Flatpaks are defined in Brewfiles in the get-aurora-dev/common repository
- Edit
*system-flatpaks.Brewfilein the common repository - Flatpaks are dynamically extracted during ISO build
- Format:
flatpak "app.id.here"
- Edit workflow file in
.github/workflows/ - Validate YAML syntax:
pre-commit run check-yaml - Create PR and monitor workflow execution
- Ensure all checks pass
- Edit
Justfile - Validate syntax:
just check - Test affected recipes
- Run
just fixto format - Create PR
- Aurora Documentation
- Universal Blue Docs
- AGENTS.md - AI agent development guide
- Titanoboa - ISO builder
If you need help:
- Check the documentation
- Review AGENTS.md for detailed instructions
- Search existing issues
- Ask in Discourse forums
- Join our Discord
Contributors are recognized in several ways:
- Listed in GitHub contributors
- Mentioned in release notes for significant contributions
- Acknowledged in project documentation
Thank you for contributing to Aurora ISO Builder! 🚀