Contributing to OmniDaemon
Thank you for your interest in contributing to OmniDaemon! This guide will help you get started.π― Ways to Contribute
1. Code Contributions
- Bug fixes
- New features
- Performance improvements
- Test coverage
- Documentation improvements
2. Non-Code Contributions
- Bug reports
- Feature requests
- Documentation improvements
- Community support (answering questions)
- Writing tutorials/blog posts
- Creating examples
- Improving error messages
π Getting Started
1. Fork the Repository
2. Set Up Development Environment
3. Create a Branch
π Code Style Guidelines
Python Style
We follow PEP 8 with some modifications:Formatting
Imports
β Testing
Running Tests
Writing Tests
π¦ Adding New Features
Feature Development Workflow
-
Discuss First
- Open a GitHub Issue to discuss the feature
- Wait for maintainer feedback before starting
- Ensure alignment with project vision
-
Design Document (for large features)
- Write a design doc in
docs/architecture/ - Include:
- Problem statement
- Proposed solution
- Alternatives considered
- Migration path (if applicable)
- Write a design doc in
-
Implementation
- Follow code style guidelines
- Add comprehensive tests
- Update documentation
- Add example usage
-
Documentation
- Update relevant docs in
docs/ - Add docstrings to all public methods
- Update
README.mdif applicable
- Update relevant docs in
Example: Adding a New Event Bus Backend
π Reporting Bugs
Before Submitting
- Search existing issues to avoid duplicates
- Try the latest version of OmniDaemon
- Reproduce the bug in a minimal example
Bug Report Template
- OmniDaemon version: 0.1.0
- Python version: 3.11.5
- OS: Ubuntu 22.04
- Redis version: 7.0
Documentation Structure
π Pull Request Process
1. Before Submitting
- Code follows style guidelines (
black,ruff) - All tests pass (
pytest) - New tests added for new features
- Documentation updated
- Commit messages are descriptive
2. Commit Message Format
feat- New featurefix- Bug fixdocs- Documentationtest- Testsrefactor- Code refactoringperf- Performance improvementchore- Maintenance
3. Pull Request Template
4. Review Process
-
Automated Checks
- CI/CD pipeline runs tests
- Linters check code style
- Coverage report generated
-
Maintainer Review
- Code quality
- Test coverage
- Documentation
- Design alignment
-
Feedback
- Address review comments
- Update PR as needed
- Discussion on implementation
-
Merge
- Maintainer approves and merges
- PR gets squashed into single commit
- Automatic release notes generation
π Recognition
Contributors
All contributors are recognized in:- GitHub Contributors page
- Release notes (for significant contributions)
- README.md acknowledgments section
Becoming a Maintainer
Active contributors may be invited to become maintainers based on:- Consistent, high-quality contributions
- Understanding of project architecture
- Community engagement
- Reliability and professionalism
π Code of Conduct
Our Pledge
We are committed to providing a welcoming and inspiring community for all.Our Standards
Positive behavior:- β Be respectful and inclusive
- β Welcome newcomers
- β Accept constructive criticism gracefully
- β Focus on whatβs best for the community
- β Harassment or discrimination
- β Trolling or insulting comments
- β Personal or political attacks
- β Publishing othersβ private information
Enforcement
Violations may result in:- Warning
- Temporary ban
- Permanent ban
π οΈ Development Tips
Debugging
Performance Profiling
Memory Profiling
π Getting Help
Stuck? Hereβs how to get help:
- Check Documentation
- Search Issues
-
Ask the Community
- GitHub Discussions
- Discord (coming soon)
-
Open an Issue
- Provide minimal reproducible example
- Include environment details
- Be respectful and patient
π Learning Resources
Understanding the Codebase
Start with these files:src/omnidaemon/sdk.py- Main SDK interfacesrc/omnidaemon/agent_runner/runner.py- Agent executionsrc/omnidaemon/event_bus/redis_stream_bus.py- Event bus implementationsrc/omnidaemon/storage/redis_store.py- Storage implementation
Recommended Reading
π Release Process
(For maintainers)-
Version Bump
-
Changelog
-
Tag Release
-
GitHub Release
- Go to GitHub Releases
- Create new release from tag
- Add release notes
- Publish
-
PyPI Release
π Thank You!
Your contributions make OmniDaemon better for everyone. Whether itβs code, documentation, or community supportβevery contribution matters. Questions? Open a GitHub DiscussionCreated by Abiola Adeshina and the OmniDaemon Community