First off, thank you for considering contributing to the DIVE (Domain-based Integrity Verification Enforcement) protocol! Your contributions help make web security more robust and accessible.
- Code of Conduct
- How Can I Contribute?
- Development Setup
- Coding Standards
- Testing
- Documentation
- RFC Compliance
- Community
By participating in this project, you agree to abide by our Code of Conduct. Please read it before contributing.
- Check existing issues to avoid duplicates
- Create a new issue with:
- Clear title and description
- Steps to reproduce
- Expected vs actual behavior
- Environment details (OS, Python version, etc.)
- Relevant logs or screenshots
Template:
### Description
[Clear description of the issue]
### Steps to Reproduce
1. [First step]
2. [Second step]
3. [And so on...]
### Expected Behavior
[What you expected to happen]
### Actual Behavior
[What actually happened]
### Environment
- OS: [e.g., Ubuntu 22.04]
- Python: [e.g., 3.10.6]
- DIVE Version: [e.g., 0.1.0]- Check existing issues for similar suggestions
- Create a new issue with:
- Clear use case explanation
- Proposed solution (if you have one)
- Any relevant RFC sections
Template:
### Problem
[Description of the problem this solves]
### Solution
[Your proposed enhancement]
### RFC Reference
[Relevant sections from draft-callec-dive if applicable]- Fork the repository and create your branch from
main - Follow coding standards (see below)
- Add tests for new functionality
- Update documentation if needed
- Submit the PR with:
- Clear title and description
- Reference to related issue(s)
- Test results
PR Template:
### Description
[What this PR does]
### Related Issue
Closes #XXX
### Changes Made
- [Change 1]
- [Change 2]
### Testing
[How you tested these changes]
### RFC Compliance
[If applicable, reference RFC sections this addresses]-
Clone the repository:
git clone https://github.com/diveprotocol/opendive-client.git cd opendive-client -
Install dependencies:
pip install -r requirements.txt pip install -r requirements-dev.txt
-
Run tests:
pytest
This project uses a code formatter to maintain consistent style. Before submitting changes:
-
Run the formatter:
./scripts/format.sh
-
Key formatting rules:
- 4-space indentation
- PEP 8 compliance
- Type hints for all functions
- Docstrings for public APIs
Follow the Conventional Commits specification:
<type>(<scope>): <description>
[optional body]
[optional footer]
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changesrefactor: Code refactoringtest: Test-related changeschore: Maintenance tasks
Example:
feat(dns): add DNSSEC validation timeout configuration
This adds a configurable timeout for DNSSEC validation attempts,
which helps in environments with slow DNS resolvers.
Closes #42
Use descriptive branch names following this pattern:
<type>/<short-description>
Examples:
feat/dns-timeout-configfix/key-resolution-bugdocs/update-readme
- All new features require tests
- Run the full test suite before submitting:
pytest --cov=dive tests/
- Test coverage should not decrease
- Update relevant documentation for new features
- Add docstrings to all public functions and classes
- Follow Google-style docstrings
Example:
def verify_signature(data: bytes, signature: str, public_key: str) -> bool:
"""Verify a DIVE signature against provided data.
Args:
data: The data to verify
signature: Base64-encoded signature
public_key: Base64-encoded public key
Returns:
True if signature is valid, False otherwise
Raises:
ValueError: If inputs are malformed
"""
...All contributions must maintain compliance with the DIVE RFC draft:
- Reference relevant RFC sections in PR descriptions
- Add compliance notes to documentation
- Include test cases that verify RFC requirements
- Discussions: Use GitHub Discussions for design questions
- Chat: Join our Matrix channel
#dive-protocol:matrix.org - Meetings: Bi-weekly community calls (see GitHub for schedule)
All contributors will be:
- Added to the CONTRIBUTORS.md file
- Recognized in release notes
- Invited to co-author relevant publications
Thank you for contributing to make the web more secure with DIVE!