Skip to content

Latest commit

 

History

History
163 lines (121 loc) · 4.11 KB

File metadata and controls

163 lines (121 loc) · 4.11 KB

Contributing to the Crypto Educational Repository

We love your input! We want to make contributing to this educational repository as easy and transparent as possible, whether it's:

  • Reporting a bug
  • Discussing the current state of the code
  • Submitting a fix
  • Proposing new features
  • Becoming a maintainer

We Develop with Github

We use GitHub to host code, to track issues and feature requests, as well as accept pull requests.

Pull requests are the best way to propose changes to the codebase. We actively welcome your pull requests:

  1. Fork the repo and create your branch from main.
  2. If you've added code that should be tested, add tests.
  3. If you've changed APIs, update the documentation.
  4. Ensure the test suite passes.
  5. Make sure your code lints.
  6. Issue that pull request!

Any contributions you make will be under the MIT Software License

In short, when you submit code changes, your submissions are understood to be under the same MIT License that covers the project. Feel free to contact the maintainers if that's a concern.

Report bugs using Github's issue tracker

We use GitHub issues to track public bugs. Report a bug by opening a new issue; it's that easy!

Write bug reports with detail, background, and sample code

Great Bug Reports tend to have:

  • A quick summary and/or background
  • Steps to reproduce
    • Be specific!
    • Give sample code if you can.
  • What you expected would happen
  • What actually happens
  • Notes (possibly including why you think this might be happening, or stuff you tried that didn't work)

Development Process

Setting up the development environment

  1. Clone the repository:
git clone https://github.com/yourusername/crypto-educational.git
cd crypto-educational
  1. Create a virtual environment:
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. Install dependencies:
pip install -r requirements.txt

Running Tests

We use pytest for testing. To run tests:

# Run all tests
pytest

# Run specific test file
pytest tests/test_crypto.py

# Run with coverage report
pytest --cov=crypto_algorithms tests/

Code Style

We follow PEP 8 and use several tools to maintain code quality:

  1. Black for code formatting:
black .
  1. MyPy for type checking:
mypy crypto_algorithms
  1. Pylint for code analysis:
pylint crypto_algorithms

Documentation

We use Google-style docstrings. Example:

def function_name(param1: type1, param2: type2) -> return_type:
    """Short description.

    Longer description if needed.

    Args:
        param1: Description of param1
        param2: Description of param2

    Returns:
        Description of return value

    Raises:
        ErrorType: Description of error condition
    """
    pass

Areas for Contribution

1. Cryptographic Components

  • Additional hash functions
  • New signature schemes
  • Zero-knowledge proofs
  • Post-quantum algorithms

2. Blockchain Components

  • Advanced consensus mechanisms
  • Smart contract implementation
  • Layer 2 solutions
  • Sharding implementation

3. Visualization Tools

  • New visualization types
  • Interactive tutorials
  • Performance improvements
  • Mobile responsiveness

4. Documentation

  • Tutorial writing
  • API documentation
  • Example creation
  • Translation

5. Testing

  • Unit test coverage
  • Integration tests
  • Performance benchmarks
  • Security testing

Community

Code of Conduct

This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code.

Communication

  • GitHub Issues: Technical discussions and bug reports
  • GitHub Discussions: General questions and ideas
  • Pull Requests: Code review and feature discussion

License

By contributing, you agree that your contributions will be licensed under its MIT License.