Thank you for your interest in contributing to QuMail! This document provides guidelines for contributing to the project.
- Python 3.8+
- Git
- Basic understanding of cryptography concepts
- Familiarity with PyQt6 (for GUI contributions)
-
Fork the repository
git clone https://github.com/yourusername/qumail.git cd qumail -
Create a virtual environment
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies
pip install -r requirements.txt
-
Test the installation
python launcher.py
- Hardware QKD Integration: Replace simulation with actual quantum hardware APIs
- Mobile Clients: Android/iOS implementations
- Security Auditing: Cryptographic implementation review
- Performance Optimization: Large file handling and memory usage
- Group Messaging: Multi-party secure communication
- Forward Secrecy: Implement perfect forward secrecy
- UI/UX Improvements: Enhanced user interface design
- Documentation: Code documentation and user guides
- Plugin System: Extensible architecture
- Additional Protocols: Support for other post-quantum algorithms
- Internationalization: Multi-language support
- Follow PEP 8 style guide
- Use type hints for all function parameters and return values
- Add docstrings for all public functions and classes
- Maximum line length: 88 characters (Black formatter compatible)
- Document all cryptographic functions thoroughly
- Include security assumptions and threat model in comments
- Use constant-time operations where applicable
- Never implement custom crypto - use established libraries
def encrypt_message(
plaintext: bytes,
recipient_key: bytes,
security_level: int
) -> str:
"""
Encrypt a message using the specified security level.
Args:
plaintext: The message to encrypt
recipient_key: Public key of the recipient
security_level: Encryption level (1-4)
Returns:
JSON string containing encrypted message
Raises:
EncryptionError: If encryption fails
Security Note:
Level 3 provides post-quantum security using Kyber-512 KEM.
Assumes recipient_key is authentic and not compromised.
"""feature/description- New featuresfix/description- Bug fixescrypto/description- Cryptographic changesui/description- User interface changes
Use conventional commit format:
type(scope): description
feat(crypto): add Dilithium signature support
fix(ui): resolve email list scrolling issue
docs(readme): update installation instructions
-
Create a feature branch
git checkout -b feature/your-feature-name
-
Make your changes
- Write clean, documented code
- Add tests if applicable
- Update documentation
-
Test your changes
python launcher.py # Test GUI functionality python -m pytest # Run unit tests (if available)
-
Submit pull request
- Provide clear description of changes
- Reference any related issues
- Include screenshots for UI changes
- Test all encryption levels (1-4)
- Verify email sending/receiving functionality
- Test WebRTC calling features
- Check cross-platform compatibility
- Verify cryptographic implementations
- Test key generation and storage
- Check for timing attacks in crypto code
- Validate input sanitization
- DO NOT open public issues for security vulnerabilities
- Email security issues to: [security@qumail.dev]
- Include detailed reproduction steps
- Allow reasonable time for fixes before disclosure
- All cryptographic modifications require thorough review
- Include references to academic papers or standards
- Provide security analysis and threat model
- Consider backward compatibility
- Code Formatter: Black (
pip install black) - Linter: Flake8 (
pip install flake8) - Type Checker: mypy (
pip install mypy)
- Be respectful and inclusive
- Focus on constructive feedback
- Help newcomers learn
- Maintain professional communication
- Open an issue for bugs or feature requests
- Use discussions for questions and ideas
- Join our development chat (if available)
Before submitting a pull request:
- Code follows PEP 8 style guidelines
- All functions have type hints and docstrings
- Cryptographic code is thoroughly documented
- Changes have been manually tested
- No sensitive data (keys, logs) included
- Pull request description is clear and complete
Thank you for helping make QuMail more secure and robust!