Contributing¶
Thank you for your interest in contributing to the Open Science Collective! We welcome contributions of all kinds from everyone.
Development Workflow¶
All development follows: Issue -> Feature Branch -> PR -> Review -> Merge
- Pick an issue from GitHub Issues
- Create feature branch:
git checkout -b feature/issue-N-short-description - Implement with atomic commits
- Create PR with
gh pr create - Address review findings before merging
- Merge with merge commit (never squash)
# Example workflow
gh issue list # Find issue to work on
git checkout -b feature/issue-7-description # Create branch
# ... implement ...
git add -A && git commit -m "feat: add X" # Atomic commits
gh pr create --title "feat: add X" --body "Closes #7"
git push -u origin feature/issue-7-description
gh pr merge --merge --delete-branch # Merge commit, never squash
Ways to Contribute¶
Code Contributions¶
- Fix bugs or implement new features
- Improve test coverage (with real tests, no mocks)
- Refactor and optimize existing code
Documentation¶
- Fix typos and improve clarity
- Add examples and tutorials
- Improve API documentation
Community¶
- Answer questions from other users
- Report bugs and suggest features
- Share your use cases and feedback
Setting Up Your Environment¶
# Clone the repository
git clone https://github.com/OpenScience-Collective/osa
cd osa
# Install dependencies with uv
uv sync
# Install pre-commit hooks
uv run pre-commit install
# Run tests
uv run pytest tests/ -v
Code Style¶
We use Ruff for Python linting and formatting:
Guidelines¶
- Type hints required for all public APIs
- Docstrings for public functions and classes (Google style)
- Atomic commits with concise messages, no emojis
- Pre-commit hooks for automatic formatting
Testing¶
- NO MOCKS: Real tests with real data only
- Dynamic tests: Query registries/configs, don't hardcode values
- Coverage: >70% minimum
- Run
uv run pytest --covbefore committing
Questions?¶
If you have questions or need help:
- Open an issue on GitHub
- Start a discussion in the repository