Contributing
How to contribute to the Potato annotation tool.
Contributing to Potato
Potato is fully open-source and welcomes contributions from the community. This guide explains how to contribute effectively.
Getting Started
Prerequisites
- Python 3.8+
- Git
- A GitHub account
Setting Up Your Development Environment
-
Fork the repository on GitHub
-
Clone your fork:
bashgit clone https://github.com/YOUR_USERNAME/potato.git cd potato -
Install dependencies:
bashpip install -r requirements.txt pip install -r requirements-test.txt # For running tests -
Run the tests to ensure everything works:
bashpytest
Ways to Contribute
Reporting Bugs
Found a bug? Open an issue with:
- A clear, descriptive title
- Steps to reproduce the problem
- Expected vs actual behavior
- Your environment (Python version, OS, browser if relevant)
- Error messages or logs if available
Suggesting Features
Have an idea for improvement? Open a feature request describing:
- The problem you're trying to solve
- Your proposed solution
- Why this would benefit other users
Submitting Code
-
Create a branch for your changes:
bashgit checkout -b feature/your-feature-name -
Make your changes, following the coding standards
-
Write tests for new functionality
-
Run the test suite:
bashpytest tests/unit/ -v # Fast unit tests pytest tests/server/ -v # Integration tests -
Commit your changes with a descriptive message:
bashgit commit -m "Add feature: brief description of changes" -
Push to your fork:
bashgit push origin feature/your-feature-name -
Open a Pull Request on GitHub
Coding Standards
Python Style
- Follow PEP 8 style guidelines
- Use meaningful variable and function names
- Add docstrings for public functions and classes
- Keep functions focused and reasonably sized
Documentation
When adding or modifying features:
- Update relevant documentation in the
docs/directory - Add or update example configurations in
project-hub/simple_examples/ - Include inline comments for complex logic
Testing
- Write tests for new features and bug fixes
- Place unit tests in
tests/unit/ - Place integration tests in
tests/server/ - Ensure all tests pass before submitting a PR
Documentation Guidelines
Every major feature should include:
-
Administrator Documentation (
docs/):- Configuration options and defaults
- YAML examples
- Troubleshooting tips
-
Example Project (
project-hub/simple_examples/):- Working configuration file
- Sample data file
- README if complex
Documentation Style
- Use proper YAML syntax (not JSON-style)
- Include complete, runnable examples
- Cross-reference related documentation
- Add screenshots for UI features
Pull Request Guidelines
Before Submitting
- Tests pass locally (
pytest) - Code follows project style
- Documentation is updated
- Commit messages are clear
- Branch is up to date with main
PR Description
Include:
- What the PR does
- Why the change is needed
- How to test the changes
- Screenshots for UI changes
Development Roadmap
Current development priorities:
- Enhanced UI/UX improvements
- Additional annotation schema types
- Better AI integration options
- Performance optimizations
- Documentation improvements
Getting Help
- Documentation: Potato Docs
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Code of Conduct
Please be respectful and constructive in all interactions. We're all here to make Potato better.
License
By contributing to Potato, you agree that your contributions will be licensed under the project's existing license.
Thank you for contributing to Potato!
For more details, see the source documentation.