Thank you for your interest in contributing to slinit!
- Use the GitHub issue tracker to report bugs
- Include steps to reproduce, expected behavior, and actual behavior
- Include slinit version, OS, and Go version
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-change) - Make your changes
- Run tests:
go test ./... - Run functional tests if applicable:
./tests/functional/run-tests.sh - Commit with a clear message
- Push to your fork and open a Pull Request
- Follow standard Go conventions (
gofmt,go vet) - Keep changes focused and minimal
- Add tests for new functionality
- Update documentation if needed
git clone https://github.com/sunlightlinux/slinit.git
cd slinit
go build ./...
go test ./...- Unit tests:
go test ./...(~751 tests across 21 packages) - Functional tests:
./tests/functional/run-tests.sh(52 QEMU-based tests) - Fuzz targets:
go test -fuzz=FuzzConfigParse ./tests/fuzz(21 targets across 4 files) - Requires
qemu-system-x86_64for functional tests
cmd/- Entry points (slinit, slinitctl, slinit-check, slinit-monitor, slinit-shutdown, slinit-init-maker, slinit-nuke, slinit-mount, plus OpenRC shims: rc-service, rc-update, rc-status)pkg/- Core packages (service, config, control, shutdown, process, eventloop, logging, utmp, autofs, checkpath, platform)internal/util/- Path and parsing utilitiescompletions/- Shell completions (bash, zsh, fish)tests/functional/- QEMU integration teststests/fuzz/- Fuzz targetsdemo/- QEMU demo environment
By contributing, you agree that your contributions will be licensed under the Apache License 2.0.