Welcome Contributors!
Thank you for your interest in contributing to Aurora OS. We welcome contributions of all kinds:- Code improvements and new features
- Bug fixes and security patches
- Documentation updates
- Test coverage improvements
- Performance optimizations
Contribution Workflow
Create a Feature Branch
Always create a new branch for your changes:Branch naming conventions:
feature/- New featuresfix/- Bug fixesdocs/- Documentation updatesrefactor/- Code refactoringtest/- Test improvements
Make Your Changes
Implement your changes following our coding standards:
- C Code
- Rust Code
- Documentation
- Follow kernel coding style
- Use meaningful variable names
- Add comments for complex logic
- Keep functions focused and small
Commit Your Changes
Use Conventional Commits format:Types:
Commit Message Format
feat:- New featurefix:- Bug fixdocs:- Documentation onlyrefactor:- Code refactoringtest:- Adding or updating testsci:- CI/CD changeschore:- Maintenance tasks
Open a Pull Request
- Go to the original Aurora OS repository on GitHub
- Click “New Pull Request”
- Select your fork and branch
- Fill out the PR template with:
- Description of changes
- Related issues
- Testing performed
- Screenshots (if applicable)
PR titles should also follow conventional commit format:
feat: add networking stackCode Review Process
Automated Checks
Your PR will automatically run:
- Build verification (all architectures)
- Unit tests
- QEMU boot tests
- Source validation
- Linting and formatting checks
Branch Protection
Themain branch is protected with the following requirements:
- Required Checks
- Review Requirements
- Merge Restrictions
- All CI tests pass
- Build succeeds for x86_64
- Unit tests pass
- QEMU boot test passes
- No merge conflicts
See
docs/branch-protection.md in the repository for detailed configuration.Development Guidelines
Coding Standards
C Kernel Code
C Kernel Code
- Use C11 standard
- No standard library dependencies
- Follow existing code style
- Add function documentation
- Keep functions under 100 lines when possible
- Avoid global variables
Rust Code
Rust Code
- Use
#![no_std]for kernel code - Run
cargo fmtandcargo clippy - Add
///documentation comments - Use
unsafeonly when necessary - Document safety requirements
Assembly Code
Assembly Code
- Use GAS syntax (
.Sfiles) - Add comments explaining register usage
- Preserve caller-saved registers
- Document calling conventions
Security Considerations
- Memory safety checks
- Integer overflow protection
- Capability permission validation
- Input sanitization
- Proper error handling
Reporting Issues
Bug Reports
When reporting bugs, include:- Description - Clear summary of the issue
- Steps to Reproduce - Detailed reproduction steps
- Expected Behavior - What should happen
- Actual Behavior - What actually happens
- Environment - OS, architecture, versions
- Logs - Relevant error messages or logs
Feature Requests
For feature requests, explain:- Use Case - Why is this feature needed?
- Proposed Solution - How should it work?
- Alternatives - What alternatives exist?
- Implementation Ideas - Any thoughts on implementation?
Code of Conduct
Aurora OS follows a code of conduct to ensure a welcoming community. Key principles:- Be respectful and inclusive
- Focus on constructive feedback
- Assume good intentions
- Help newcomers get started
Read the full Code of Conduct at
CODE_OF_CONDUCT.md in the repository.Getting Help
If you need help contributing:GitHub Discussions
Ask questions and discuss ideas
GitHub Issues
Report bugs and request features
Development Setup
Environment setup guide
Testing Guide
Learn how to test your changes