Welcome Contributors
Aeolos is a hobby x86_64 operating system project, and contributions are welcome! Whether you’re fixing bugs, adding features, improving documentation, or experimenting with OS concepts, this guide will help you get started.Getting Started
1. Set Up Your Environment
Before contributing, ensure you have a working development environment:Install dependencies
Install required build tools:
nasm, gcc, mtools, xorriso, and qemu-system-x86.See the Development Setup guide for detailed instructions.2. Explore the Codebase
Familiarize yourself with the project structure:Areas to Contribute
Current Status
From the project README, these areas are in progress and need work:Usermode Support
Partial implementation - needs completion
Virtual Filesystem
Partial implementation - needs work
Disk Drivers
Not yet implemented
Input Drivers
Mouse and keyboard drivers needed
Suggested Contributions
Complete usermode support
Complete usermode support
- Implement user space memory management
- Add system call interface
- Create process loading from VFS
- Test usermode task switching
kernel/sys/syscall.ckernel/proc/task.ckernel/mm/vmm.c
Implement disk drivers
Implement disk drivers
- Add ATA/SATA driver
- Implement NVMe support
- Create block device abstraction
- Integrate with VFS
kernel/dev/disk/Add input drivers
Add input drivers
- PS/2 keyboard driver
- PS/2 mouse driver
- USB HID support (advanced)
- Input event queue
kernel/dev/input/Improve VFS
Improve VFS
- Complete file operation APIs
- Add filesystem mounting
- Implement file permissions
- Add directory operations
kernel/fs/vfs/*.c
Enhance memory management
Enhance memory management
- Optimize page allocator
- Add memory defragmentation
- Implement demand paging
- Add memory statistics
kernel/mm/pmm.c(Physical memory)kernel/mm/vmm.c(Virtual memory)
Add networking
Add networking
- Network card drivers (e1000, rtl8139)
- Network stack (TCP/IP)
- Socket API
- Create new directory:
kernel/net/
Contribution Workflow
1. Fork and Branch
2. Make Your Changes
Write code
Follow the existing code style:
- Use K&R brace style
- 4-space indentation (no tabs in C code)
- Descriptive variable names
- Add comments for complex logic
3. Commit Your Work
Write clear, descriptive commit messages:First line: Brief summary (50 chars or less)Followed by blank line, then detailed explanation if needed.
4. Push and Create Pull Request
- Go to your fork on GitHub
- Click “Pull request”
- Select your branch
- Write a clear description of your changes
- Reference any related issues
Code Style Guidelines
C Code Style
Follow the existing style in the codebase:Assembly Code Style
For.s files (AT&T syntax):
.nasm files (Intel syntax):
Error Handling
Use appropriate error handling:Testing Your Changes
Manual Testing
- Basic Test
- With Serial Output
- SMP Testing
- Without KVM
Debug Testing
Test with debugging enabled:Continuous Integration
Aeolos uses GitHub Actions for CI (.github/workflows/c-cpp.yml:9-26):
- Checkout with submodules
- Install dependencies
- Build successfully
- Generate
os.isoartifact
Pull Request Guidelines
Before Submitting
PR Description Template
Getting Help
GitHub Issues
Ask questions or report bugs
Development Setup
Build environment help
Debugging Guide
Learn debugging techniques
Download Builds
Get latest CI artifacts
Code of Conduct
Be respectful and constructive:- Be welcoming to new contributors
- Focus on technical merit of ideas
- Provide constructive feedback on PRs
- Help others learn and improve
- Have fun experimenting with OS development!
Recognition
All contributors are valued! Your contributions will be:- Credited in commit history
- Visible in GitHub’s contributor list
- Part of the Aeolos project history