Contributing Guidelines#
Thank you for taking the time to contribute to the CAPIBARA Collaboration! Whether you’re fixing a bug, improving documentation, or suggesting a feature — every contribution matters.
Please read our Code of Conduct to keep our community inclusive and respectful.
📌 Getting Started#
Prerequisites#
Read the README of the repo to understand the project goals and setup
Make sure Git is installed and set up
Familiarize yourself with the GitHub flow
Review our Governance Charter and Membership Agreement
Useful Links#
🐛 Creating a Good Issue#
Before Creating an Issue#
Check Existing Issues: Search open and closed issues to avoid duplicates
Use Templates: If available, use the issue template appropriate for your concern
Check Documentation: Ensure your question isn’t already answered in docs
Issue Requirements#
If you notice a bug or have an idea for a feature:
Title: Clear, descriptive title
Description: Detailed explanation of the problem or suggestion
Context: Operating system, software versions, etc.
Reproduction Steps: For bugs, specific steps to reproduce
Expected vs Actual: What should happen vs what actually happens
Screenshots: If applicable, include screenshots or error messages
Related Issues: Link to any related issues
Issue Assignment#
You can work on any issue that:
Hasn’t been assigned
Has the “help wanted” label
Is marked as “good first issue”
Always comment on the issue to let others know you’re working on it. This prevents duplicate work.
🚀 Making Contributions#
We welcome all types of contributions! Here’s how to make meaningful changes:
🔧 Local Setup#
Fork the Repository
# Click 'Fork' button on GitHub, then: git clone https://github.com/<your-username>/<repo-name>.git cd <repo-name>
Create a New Branch
git checkout -b <branch-type>/<short-description> # Examples: # git checkout -b fix/typo-in-readme # git checkout -b feat/add-new-sensor-support # git checkout -b docs/update-contributing-guide
Set Up Development Environment
# Check for environment setup instructions in README # Common setup: python -m venv venv # create virtual environment source venv/bin/activate # activate virual environment pip install -r requirements.txt # install the required packages
Make Your Changes
Follow the project’s coding standards
Add tests for new functionalities
Update documentation as needed
Keep changes focused (one feature/fix per PR)
Test You Changes
# Run existing tests pytest # Run liners if available flake8 . black --check .
Commit Guidelines#
We follow conventional commits:
# Format: type(scope): description
# Examples:
git commit -m "fix(parser): handle null values in CSV import"
git commit -m "feat(api): add new endpoint for sensor data"
git commit -m "docs(readme): update installation instructions"
git commit -m "test(analysis): add unit tests for statistics module"
Commit Types
feat: New featurefix: Bug fixdocs: Documentationstyle: Formatting, missing semi-colons, etc.refactor: Code restructuringtest: Adding testschore: Maintenance tasks
**Keep Commits Atomic:
One logical change per commit
Commit often, push when ready
Write clear commit messages
🔄 Opening a Pull Request (PR)#
PR Creation#
Go to your fork on GitHub and click “Compare & Pull Request”
Complete the PR template with:
Summary of changes
Related issue numbers (e.g.,
Closes #123)Testing performed
Screenshots (if UI changes)
Enable “Allow edits from maintainers”
PR Requirements Checklist#
Before submitting, ensure:
Code follows project style guidelines
Tests pass locally
Documentation updated
No new linting errors
Commit messages follow conventions
PR addresses single concern (split large changes)
Changes are backward compatible (or document breaking changes)
License headers maintained in new files
Review Process#
Automated Checks: CI/CD runs tests and linting
Code Review: At least one maintainer reviews
Feedback: Address review comments promptly
Merge: After approval and all checks pass
Review Expectations:
Be respectful and constructive
Focus on code, not individuals
Explain reasoning for suggestions
Thank reviewers for their time
🎯 Contribution Areas#
Code Contributions#
Bug fixes
New features
Performance improvements
Test coverage
Refactoring
Documentation#
Tutorials and guides
API documentation
Translation
Example projects
README improvements
Design & UX#
UI/UX improvements
Graphics and diagrams
User research
Accessibility improvements
Community#
Answering questions
Reviewing PRs
Mentoring newcomers
Writing blog posts
Giving thanks
📊 Tracking Contributions#
For Students#
If contributing for academic credit:
Notify Steering Committee of requirements
Document hours and contributions
Request supervisor coordination if needed
Ensure compliance with institutional policies
Contribution Recognition#
All contributions are recognized through:
GitHub contributor graph
Publication acknowledgements
Annual contributor awards
Speaker opportunities
🛠️ Development Guidelines#
Code Style#
Follow language-specific conventions
Use meaningful variable names
Comment complex logic
Keep functions small and focused
Testing#
Write tests for new functionality
Maintain or improve test coverage
Test edge cases
Include integration tests where appropriate
Documentation#
Document public APIs
Update README for significant changes
Include examples
Keep documentation in sync with code
Dependencies#
Justify new dependencies
Check license compatibility
Keep dependencies updated
Document in DEPENDENCIES.md
❓ Getting Help#
Resources#
Contact Points#
Technical Questions: Repository maintainers
Governance Questions: Steering Committee
Code of Conduct: Contact Form
General Inquiries: GitHub Discussions
Meetings#
Check for meeting availability for specific members.
🙏 Acknowledgments#
Thank you for contributing to open science! Your work helps advance space science and supports student researchers worldwide.
Remember: Every contribution matters, no matter how small. Whether fixing a typo or building a new instrument, you’re helping make science more open and accessible.
These guidelines adapt to our growing community. Suggestions for improvement are always welcome via issues or pull requests.