Contributing to Horizons OmniChat
Introduction
Thank you for your interest in contributing to Horizons OmniChat! This guide will help you understand our development process and how you can contribute effectively to the project.
Code of Conduct
Our project adheres to a Code of Conduct that we expect all participants to follow. Please read our Code of Conduct before contributing.
Getting Started
Development Environment Setup
- Fork and Clone
```bash
Fork the repository on GitHub, then:
git clone https://github.com/YOUR-USERNAME/horizons-omnichat.git cd horizons-omnichat
Add upstream remote
git remote add upstream https://github.com/evereven-tech/horizons-omnichat.git
2. **Install Dependencies**
```bash
# Initialize development environment
make init
# Install pre-commit hooks
pip install pre-commit
pre-commit install
- Run Local Environment
# Start local development environment make local-up
Development Workflow
1. Branch Strategy
main
: Production-ready codedevelop
: Development branch- Feature branches:
feature/your-feature
- Bug fixes:
fix/issue-description
- Documentation:
docs/topic-description
2. Making Changes
# Create a new branch
git checkout -b feature/your-feature
# Make your changes
# ... edit files ...
# Run tests (feature in roadmap)
make test
# Run linters (feature in roadmap)
make lint
3. Commit Guidelines
We follow Conventional Commits specification:
# Format
<type>(<scope>): <description>
# Examples
feat(webui): add new chat interface component
fix(ollama): resolve model loading issue
docs(deployment): update AWS installation guide
Types:
feat
: New featurefix
: Bug fixdocs
: Documentation changesstyle
: Code style changesrefactor
: Code refactoringtest
: Adding or modifying testschore
: Maintenance tasks
4. Pull Request Process
- Update your branch
git fetch upstream git rebase upstream/main
- Create Pull Request
- Include comprehensive description
- Link related issues
- Add appropriate labels
- PR Checklist
- Documentation updated
- Code follows style guide
- CI checks pass
Documentation
Building Documentation
# Serve documentation locally
make serve
# Build documentation
make docs-build
Documentation Guidelines
- Structure
- Clear headings
- Logical flow
- Code examples
- Diagrams when helpful
- Style
- Clear and concise
- Proper grammar
- Consistent formatting
- Updated links
Release Process
Version Numbering
We use Semantic Versioning:
- MAJOR.MINOR.PATCH
- Example: 1.2.3
Release Steps
- Prepare Release
```bash
Update version
make version-bump VERSION=1.2.3
Update changelog
make changelog
2. **Create Release**
```bash
# Tag release
git tag -a v1.2.3 -m "Release v1.2.3"
# Push to upstream
git push upstream v1.2.3
Getting Help
- Join our Discord Community
- Check FAQ
- Open GitHub Discussions
Next Steps
- Browse Good First Issues
- Review Development API
- Join Developer Discussions
Horizons OmniChat by evereven