Skip to main content

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

  1. Discuss First
    • Open a GitHub Issue to discuss the feature
    • Wait for maintainer feedback before starting
    • Ensure alignment with project vision
  2. Design Document (for large features)
    • Write a design doc in docs/architecture/
    • Include:
      • Problem statement
      • Proposed solution
      • Alternatives considered
      • Migration path (if applicable)
  3. Implementation
    • Follow code style guidelines
    • Add comprehensive tests
    • Update documentation
    • Add example usage
  4. Documentation
    • Update relevant docs in docs/
    • Add docstrings to all public methods
    • Update README.md if applicable

Example: Adding a New Event Bus Backend


🐛 Reporting Bugs

Before Submitting

  1. Search existing issues to avoid duplicates
  2. Try the latest version of OmniDaemon
  3. Reproduce the bug in a minimal example

Bug Report Template

Environment
  • OmniDaemon version: 0.1.0
  • Python version: 3.11.5
  • OS: Ubuntu 22.04
  • Redis version: 7.0
Traceback
Additional Context Any other relevant information.
Additional Context Any other relevant information.

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

Types:
  • feat - New feature
  • fix - Bug fix
  • docs - Documentation
  • test - Tests
  • refactor - Code refactoring
  • perf - Performance improvement
  • chore - Maintenance

3. Pull Request Template

4. Review Process

  1. Automated Checks
    • CI/CD pipeline runs tests
    • Linters check code style
    • Coverage report generated
  2. Maintainer Review
    • Code quality
    • Test coverage
    • Documentation
    • Design alignment
  3. Feedback
    • Address review comments
    • Update PR as needed
    • Discussion on implementation
  4. 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
Unacceptable behavior:
  • ❌ Harassment or discrimination
  • ❌ Trolling or insulting comments
  • ❌ Personal or political attacks
  • ❌ Publishing others’ private information

Enforcement

Violations may result in:
  1. Warning
  2. Temporary ban
  3. Permanent ban
Report violations to: mintify.com

🛠️ Development Tips

Debugging

Performance Profiling

Memory Profiling


📞 Getting Help

Stuck? Here’s how to get help:

  1. Check Documentation
  2. Search Issues
  3. Ask the Community
  4. Open an Issue
    • Provide minimal reproducible example
    • Include environment details
    • Be respectful and patient

🎓 Learning Resources

Understanding the Codebase

Start with these files:
  1. src/omnidaemon/sdk.py - Main SDK interface
  2. src/omnidaemon/agent_runner/runner.py - Agent execution
  3. src/omnidaemon/event_bus/redis_stream_bus.py - Event bus implementation
  4. src/omnidaemon/storage/redis_store.py - Storage implementation

📅 Release Process

(For maintainers)
  1. Version Bump
  2. Changelog
  3. Tag Release
  4. GitHub Release
    • Go to GitHub Releases
    • Create new release from tag
    • Add release notes
    • Publish
  5. 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 Discussion
Created by Abiola Adeshina and the OmniDaemon Community