Thank you for your interest in contributing to devboost! This document provides guidelines and instructions for contributing.
We welcome contributions of all kinds:
- 🐛 Bug reports
- 💡 Feature requests
- 📝 Documentation improvements
- 🔧 Code contributions
- 🧪 Testing on different platforms
- 📦 New modules
- Fork the repository on GitHub
- Clone your fork:
git clone https://github.com/yourusername/devboost.git cd devboost - Create a branch for your changes:
git checkout -b feature/your-feature-name # or git checkout -b fix/your-bug-fix
- Follow the coding standards in AGENTS.md
- Keep changes focused and atomic
- Add comments explaining why, not what
- Use the
db_*function naming convention
Testing is mandatory - all contributions must be tested before submission.
- Build test:
./build.shsucceeds - Syntax check:
bash -n devboost.shpasses - Plan test:
./devboost.sh planshows expected changes - Idempotency test: Run
applytwice - second run should be no-op - Config test: Test with minimal config and full config
- Dry-run test:
./devboost.sh planworks correctly
We have automated test scripts for all supported platforms:
Linux Testing (Docker/Podman):
# Test on a specific distribution
./tests/test-linux.sh ubuntu
./tests/test-linux.sh debian
./tests/test-linux.sh fedora
./tests/test-linux.sh arch
# Test on all distributions
./tests/test-linux.sh allNote: The script automatically uses Docker or Podman (installing Podman if needed). On macOS, Podman is installed via Homebrew. Arch Linux tests are skipped on ARM64 systems.
macOS Testing (Sandboxed):
# Run tests in a temporary environment (won't affect your config)
./tests/test-macos.shIf you're adding platform-specific code:
- Run the appropriate test script(s)
- Test on macOS (if available) using
./tests/test-macos.sh - Test on Linux using
./tests/test-linux.sh [distro] - Document any platform limitations
See tests/README.md for detailed testing documentation.
If you're adding a new module:
- Test
planmode shows correct output - Test
applymode works correctly - Test idempotency (multiple runs)
- Test with module disabled in config
- Test error handling (missing dependencies, etc.)
- Update
README.mdif adding user-facing features - Update
.devboost.yaml.exampleif adding config options - Update
CHANGELOG.mdwith your changes - Update
AGENTS.mdif changing development guidelines
Follow the CBEAMS commit message style:
<type>(<scope>): <subject>
<body>
<footer>
Examples:
feat(zsh): add support for custom znap path
Allow users to configure znap installation path via
.zsh.znap_path in config file. Defaults to ~/.zsh-snap
if not specified.
Closes #42
fix(starship): correct git_status format syntax
The format string was using invalid variable concatenation.
Changed to use $all_status only, which is the correct
starship syntax.
Fixes #38
test(linux): add Ubuntu 22.04 testing
Verified package installation and module functionality
on Ubuntu 22.04. All modules working correctly.
Related to #15
git push origin feature/your-feature-nameThen create a Pull Request on GitHub with:
- Clear description of changes
- Reference to any related issues
- Confirmation that all tests pass
- Screenshots/logs if applicable
Adding modules is designed to be super easy! See AGENTS.md for detailed instructions.
Quick checklist:
- Create
modules/module_foo.sh - Implement
db_module_foo_register(),plan(), andapply() - Add to
build.sh(file inclusion + registration) - Add config options to
.devboost.yaml.example - Test thoroughly
- Update documentation
- Bash best practices: See AGENTS.md
- Error handling: Always check return codes, provide helpful messages
- Performance: Minimize external calls, cache when appropriate
- Readability: Clear function names, consistent naming, focused functions
- Security: Never execute user input, validate paths, backup before modify
All code must be tested before submission.
- Build and syntax:
./build.sh && bash -n devboost.sh - Plan mode:
./devboost.sh plan(should not error) - Apply mode:
./devboost.sh apply(should work) - Idempotency: Run
applytwice, second should be no-op - Platform tests: Run
./tests/test-macos.sh(macOS) or./tests/test-linux.sh [distro](Linux)
- Test with different config files
- Test error conditions (missing dependencies, etc.)
- Test on different operating systems if possible
- Test edge cases
We especially welcome contributions that test and fix issues on:
- Different Linux distributions (Ubuntu, Debian, Fedora, Arch)
- Different macOS versions
- Different shell versions
If you test on a platform, please note it in your PR!
When reporting bugs, please include:
-
Environment:
- OS and version
- Shell version
- devboost version
-
Steps to reproduce:
- Exact commands run
- Config file (if applicable)
-
Expected behavior:
- What should happen
-
Actual behavior:
- What actually happened
- Error messages
- Logs (with
--verboseflag)
-
Additional context:
- Any relevant system information
- Related issues
When requesting features:
- Describe the use case: Why is this feature needed?
- Propose a solution: How should it work?
- Consider alternatives: Are there other ways to achieve this?
- Check existing issues: Has this been requested before?
- All PRs require review before merging
- Reviewers will check:
- Code quality and style
- Test coverage
- Documentation updates
- Backwards compatibility
- Be open to feedback and suggestions
- Address review comments promptly
- Check AGENTS.md for development guidelines
- Check ARCHITECTURE.md for design details
- Open an issue for questions or discussions
- Be respectful and constructive in all interactions
Contributors will be:
- Listed in the README (if desired)
- Credited in release notes
- Appreciated by the community! 🎉
Thank you for contributing to devboost!