DOCS

Contributing to Omnivore

Omnivore is an open-source project and we welcome contributions from the community! Whether you're fixing bugs, adding features, improving documentation, or reporting issues, your help is valuable.

Report Issues

Found a bug? Let us know on GitHub Issues

Submit PRs

Contribute code improvements and new features

Getting Started

1. Fork and Clone

Start by forking the repository and cloning it locally:

BASH
001# Fork the repository on GitHub, then:
002git clone https://github.com/Pranav-Karra-3301/omnivore.git
003cd omnivore
004git remote add upstream https://github.com/Pranav-Karra-3301/omnivore.git

2. Set Up Development Environment

Ensure you have Rust and Cargo installed:

BASH
001# Install Rust (if not already installed)
002curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
003
004# Verify installation
005rustc --version
006cargo --version
007
008# Build the project
009cargo build
010
011# Run tests
012cargo test

3. Create a Branch

Create a new branch for your feature or fix:

BASH
001git checkout -b feature/your-feature-name
002# or
003git checkout -b fix/issue-description

Development Workflow

Code Style

  • Follow Rust's official style guidelines
  • Use cargo fmt to format your code
  • Run cargo clippy to catch common mistakes
  • Ensure all tests pass with cargo test
BASH
001# Format code
002cargo fmt
003
004# Run linter
005cargo clippy
006
007# Run tests
008cargo test
009
010# Run specific test
011cargo test test_name

Commit Guidelines

Write clear, descriptive commit messages following this format:

TEXT
001type(scope): brief description
002
003Longer description if needed. Explain the problem this commit
004solves and any important details.
005
006Fixes #123

Types:

  • feat: New feature
  • fix: Bug fix
  • docs: Documentation changes
  • test: Adding or updating tests
  • refactor: Code refactoring
  • perf: Performance improvements
  • chore: Maintenance tasks

Submitting Pull Requests

Before Submitting

PR Checklist
  • Code follows project style guidelines
  • All tests pass locally
  • Documentation is updated if needed
  • Commit messages are clear and descriptive
  • PR description explains the changes

Submit Your PR

BASH
001# Push your branch
002git push origin feature/your-feature-name
003
004# Then create a PR on GitHub

PR Description Template

MARKDOWN
001## Description
002Brief description of what this PR does.
003
004## Related Issue
005Fixes #(issue number)
006
007## Type of Change
008- [ ] Bug fix
009- [ ] New feature
010- [ ] Documentation update
011- [ ] Performance improvement
012
013## Testing
014- [ ] Tests pass locally
015- [ ] Added new tests for changes
016
017## Screenshots (if applicable)
018Add screenshots here if UI changes are involved.

Reporting Issues

Before Opening an Issue

  • Search existing issues to avoid duplicates
  • Check if the issue is already fixed in the latest version
  • Gather relevant information about your environment

Issue Template

MARKDOWN
001## Description
002Clear description of the issue.
003
004## Steps to Reproduce
0051. Step one
0062. Step two
0073. ...
008
009## Expected Behavior
010What should happen?
011
012## Actual Behavior
013What actually happens?
014
015## Environment
016- OS: [e.g., macOS 14.0]
017- Rust version: [e.g., 1.75.0]
018- Omnivore version: [e.g., 0.1.0]
019
020## Additional Context
021Any other relevant information.

Areas for Contribution

Core Features

Crawler improvements, performance optimizations, new parsing strategies

Knowledge Graph

Entity extraction, relationship mapping, graph algorithms

Documentation

Improve docs, add examples, translate content, fix typos

Community

Join our community to discuss ideas, ask questions, and collaborate:

Code of Conduct

We are committed to providing a welcoming and inclusive environment. Please:

  • Be respectful and considerate
  • Welcome newcomers and help them get started
  • Focus on constructive criticism
  • Respect differing viewpoints and experiences
Thank You!

Your contributions make Omnivore better for everyone. We appreciate your time and effort in improving this project!

Built with Rust. Developed by Pranav Karra