Skip to content

Latest commit

 

History

History
182 lines (130 loc) · 4.41 KB

File metadata and controls

182 lines (130 loc) · 4.41 KB

Contributing to EverMemOS

Thank you for your interest in contributing to EverMemOS! We welcome contributions from the community.

🚀 Getting Started

Prerequisites

  • Python 3.10+
  • Docker and Docker Compose
  • uv package manager

Development Setup

  1. Fork and clone the repository:
git clone https://github.com/YOUR_USERNAME/EverMemOS.git
cd EverMemOS
  1. Install dependencies:
uv sync
  1. Set up environment variables:
cp env.template .env
# Edit .env with your configuration
  1. Start development services:
docker-compose up -d

📝 Code Style

Python Guidelines

  • Follow PEP 8 style guide
  • Use type hints for function parameters and return values
  • Add docstrings for classes and functions
  • Maximum line length: 100 characters

Key Rules

  • No relative imports: Use absolute imports from project root
  • No wildcard imports: Avoid from module import *
  • DateTime handling: Use common_utils.datetime_utils instead of direct datetime module
  • No code in __init__.py: Use only as package markers

🔀 Git Workflow

Branch Naming

  • feature/description - New features
  • fix/description - Bug fixes
  • docs/description - Documentation updates
  • refactor/description - Code refactoring

Commit Messages

We use Gitmoji for commit messages.

Format: <emoji> <type>: <description>

Examples:

✨ feat: Add new memory retrieval algorithm
🐛 fix: Fix memory leak in vector indexing
📝 docs: Update API documentation
♻️ refactor: Simplify memory extraction logic
✅ test: Add tests for profile extraction
⚡ perf: Optimize vector search performance

Common Gitmoji:

Emoji Code Usage
:sparkles: New feature
🐛 :bug: Bug fix
🚑 :ambulance: Critical hotfix
📝 :memo: Documentation
♻️ :recycle: Refactor code
🔥 :fire: Remove code/files
:white_check_mark: Add tests
:zap: Performance improvement
🔧 :wrench: Configuration changes
🗃️ :card_file_box: Database changes
⬆️ :arrow_up: Upgrade dependencies
🐳 :whale: Docker related
🚀 :rocket: Deployment

See gitmoji.dev for full reference.

Pull Request Process

  1. Create a feature branch from main:
git checkout -b feature/your-feature-name
  1. Make your changes following the code style guidelines

  2. Test your changes:

# Run tests (if applicable)
pytest tests/

# Check code style
ruff check .
  1. Commit your changes with clear, descriptive commit messages

  2. Push to your fork:

git push origin feature/your-feature-name
  1. Open a Pull Request with:

    • Clear description of changes
    • Reference to related issues (if any)
    • Screenshots (if UI changes)
  2. Address review feedback promptly

🧪 Testing

  • Add tests for new features
  • Ensure existing tests pass
  • Maintain or improve code coverage

📚 Documentation

  • Update relevant documentation when changing functionality
  • Add docstrings to new functions and classes
  • Update README.md if adding major features
  • Keep API documentation in sync with code changes

🐛 Reporting Bugs

Please report bugs by creating a bug report with:

  • Clear, descriptive title
  • Steps to reproduce
  • Expected vs actual behavior
  • Environment details (OS, Python version, etc.)
  • Relevant logs or error messages

💡 Suggesting Features

Feature requests are welcome! Please submit a feature request with:

  • Check if the feature is already requested
  • Provide clear use cases
  • Explain why this feature would be useful
  • Consider backward compatibility

📄 License

By contributing to EverMemOS, you agree that your contributions will be licensed under the Apache License 2.0.

🤝 Code of Conduct

  • Be respectful and inclusive
  • Welcome newcomers
  • Focus on constructive feedback
  • Maintain a professional environment

📞 Questions?


Thank you for contributing to EverMemOS! 🎉