Contributing to Dingo OS development.
# Fork on GitHub, then clone
git clone https://github.com/YOUR_USERNAME/dingo-os.git
cd dingo-os
# Add upstream remote
git remote add upstream https://github.com/dingo-os/dingo-os.git# Install development dependencies
./scripts/setup-dev.sh
# This installs:
# - Build tools
# - Linters
# - Testing frameworks
# - Pre-commit hooksgit checkout -b feature/my-new-featuredingo-os/
├── .github/ # GitHub Actions, templates
│ ├── workflows/ # CI/CD pipelines
│ ├── ISSUE_TEMPLATE/ # Issue templates
│ └── PULL_REQUEST_TEMPLATE.md
├── branding/ # Visual assets
│ ├── backgrounds/ # Wallpapers
│ ├── icons/ # Icon themes
│ ├── logos/ # Logo files
│ └── plymouth/ # Boot splash
├── configs/ # System configurations
│ ├── apt/ # APT sources and preferences
│ ├── dconf/ # GNOME/dconf settings
│ ├── dingo/ # Dingo-specific configs
│ ├── security/ # Firewall, AppArmor, etc.
│ └── systemd/ # Service files
├── dashboard/ # Dingo Control Center
│ ├── src/ # Source code
│ ├── ui/ # GTK UI files
│ └── tests/ # Unit tests
├── docs/ # Documentation
├── iso-builder/ # ISO generation
│ ├── profiles/ # Build profiles
│ ├── hooks/ # Build hooks
│ └── templates/ # Template files
├── packages/ # Package definitions
│ ├── dev-packages.list
│ ├── gaming-packages.list
│ ├── blockchain-packages.list
│ └── security-packages.list
├── scripts/ # Build and utility scripts
│ ├── build-iso.sh
│ ├── test-vm.sh
│ └── setup-dev.sh
└── tests/ # Integration tests
Shell Scripts:
# Use shellcheck
shellcheck scripts/*.sh
# Follow Google Shell Style Guide
# - Use snake_case for variables
# - Use UPPER_CASE for constants
# - Always quote variablesPython (Dashboard):
# Use black for formatting
black dashboard/src/
# Use flake8 for linting
flake8 dashboard/src/
# Use mypy for type checking
mypy dashboard/src/Follow Conventional Commits:
<type>(<scope>): <description>
[optional body]
[optional footer]
Types:
feat: New featurefix: Bug fixdocs: Documentationstyle: Formattingrefactor: Code restructuringtest: Adding testschore: Maintenance
Examples:
feat(dashboard): add system monitoring widget
fix(gaming): correct GPU detection for AMD cards
docs(installation): update VM instructions
feature/short-description
fix/issue-number-description
docs/what-is-being-documented
chore/maintenance-task
-
Determine the package category:
packages/base-packages.list- Essential packagespackages/dev-packages.list- Developer toolspackages/gaming-packages.list- Gaming toolspackages/blockchain-packages.list- Blockchain tools
-
Add the package:
echo "package-name" >> packages/dev-packages.list- Test the build:
sudo ./scripts/build-iso.sh --test-packages- Create the config in
configs/:
mkdir -p configs/myapp
vim configs/myapp/config.conf- Add to the install manifest:
# In configs/manifest.yaml
- source: configs/myapp/config.conf
dest: /etc/myapp/config.conf
mode: 0644cd dashboard
# Install dependencies
pip install -r requirements.txt
pip install -r requirements-dev.txt
# Run in development mode
python -m dingo_control_center --debug
# Run tests
pytest tests/
# Build for release
python setup.py build- Create command script in
scripts/commands/:
#!/bin/bash
# scripts/commands/mycommand.sh
mycommand_main() {
echo "My custom command"
}- Register in
scripts/dingo:
# Add to command dispatch
case "$1" in
mycommand) shift; mycommand_main "$@" ;;
esac# Run all tests
./scripts/run-tests.sh
# Run specific test
./scripts/run-tests.sh --filter dashboard# Build and test ISO
sudo ./scripts/build-iso.sh
sudo ./scripts/integration-test.sh- ISO boots successfully
- Installation completes
- Desktop loads correctly
- Control Center launches
- Developer tools work
- Gaming mode activates (if included)
- Network connectivity works
- Updates install correctly
# Update from upstream
git fetch upstream
git rebase upstream/main
# Run tests
./scripts/run-tests.sh
# Run linters
./scripts/lint.shgit push origin feature/my-featureThen create Pull Request on GitHub.
- Tests pass
- Linting passes
- Documentation updated
- Changelog entry added
- Commit messages follow convention
- Automated checks run
- Maintainer reviews code
- Address feedback
- Squash and merge
We use Semantic Versioning (SemVer):
MAJOR.MINOR.PATCH- Example:
1.2.3
# 1. Update version
./scripts/bump-version.sh 1.1.0
# 2. Update changelog
vim docs/CHANGELOG.md
# 3. Create release commit
git add .
git commit -m "chore: release v1.1.0"
git tag v1.1.0
# 4. Push
git push origin main --tags- Version bumped
- Changelog updated
- All tests pass
- ISO builds successfully
- ISO tested in VM
- Documentation updated
- Release notes written
Build fails with missing dependencies:
./scripts/setup-dev.sh --reinstallTests fail locally but pass in CI:
# Clean environment
./scripts/clean.sh --all
./scripts/build-iso.sh --cleanDashboard won't start:
cd dashboard
pip install -r requirements.txt --force-reinstallQuestions? Open an issue or join our community chat!