Skip to main content

Contributing

Thank you for your interest in contributing to HySDS! This guide will help you get started with contributing to the project.

Community Overview

HySDS is a community-driven project with:

  • 50+ active developers and integrators
  • 78+ repositories in the organization
  • 83+ releases
  • 30+ contributors to the core platform

Ways to Contribute

1. Code Contributions

  • Bug fixes
  • New features
  • Performance improvements
  • Documentation updates

2. Non-Code Contributions

  • Documentation improvements
  • Bug reports
  • Feature requests
  • Use case examples
  • Community support

Getting Started

Setting Up Development Environment

# Fork and clone the repository
git clone https://github.com/your-username/hysds.git
cd hysds

# Create virtual environment
python3 -m venv venv
source venv/bin/activate

# Install dependencies
pip install -r requirements.txt
pip install -r requirements-dev.txt

# Set up pre-commit hooks
pre-commit install

Development Workflow

  1. Create a Branch
# Create a branch for your work
git checkout -b feature/your-feature-name
  1. Make Changes
  • Write code following our style guide
  • Add tests for new functionality
  • Update documentation as needed
  1. Commit Changes
# Stage and commit your changes
git add .
git commit -m "feat: describe your changes"
  1. Push Changes
git push origin feature/your-feature-name

Coding Standards

Python Style Guide

  • Follow PEP 8 guidelines
  • Use meaningful variable names
  • Add type hints for Python 3.8+
  • Include docstrings for classes and functions

Example:

from typing import List, Optional

def process_data(input_file: str, options: Optional[dict] = None) -> List[str]:
"""
Process input data according to specified options.

Args:
input_file: Path to input file
options: Optional processing parameters

Returns:
List of processed data strings
"""
# Implementation
pass

Testing

Running Tests

# Run all tests
pytest

# Run specific test file
pytest tests/test_specific.py

# Run with coverage
pytest --cov=hysds tests/

Writing Tests

# test_example.py
import pytest
from hysds.your_module import YourClass

def test_your_feature():
instance = YourClass()
result = instance.your_method()
assert result == expected_value

Documentation

Writing Documentation

  • Use clear, concise language
  • Include code examples
  • Add diagrams where helpful
  • Update relevant README files

Building Documentation

# Install documentation dependencies
pip install -r docs/requirements.txt

# Build documentation
cd docs
make html

Pull Request Process

  1. Before Submitting

    • Ensure all tests pass
    • Update documentation
    • Add changelog entry
    • Follow commit message conventions
  2. Submitting PR

    • Create detailed PR description
    • Link related issues
    • Request appropriate reviewers
  3. Review Process

    • Address reviewer comments
    • Make requested changes
    • Keep PR updated with main branch

Community Channels

Getting Help

Regular Meetings

  • Bi-weekly multi-mission coordination meetings
  • Community development discussions
  • Feature planning sessions

Issue Reporting

Bug Reports

  • Use the bug report template
  • Include system information
  • Provide reproducible examples
  • Attach relevant logs

Feature Requests

  • Use the feature request template
  • Describe the problem solved
  • Provide use cases
  • Suggest implementation details

Recognition

We recognize contributions through:

  • Attribution in release notes
  • Documentation credits
  • Community acknowledgments
  • Project statistics

Code of Conduct

We maintain a welcoming, inclusive community:

  • Be respectful and professional
  • Value diverse perspectives
  • Follow project guidelines
  • Help others learn and grow

Additional Resources


Questions? Reach out to us: