# Contributing to Docking@HOME Thank you for your interest in contributing to Docking@HOME! This document provides guidelines for contributing to the project. ## Code of Conduct We are committed to providing a welcoming and inclusive environment. Please be respectful and constructive in all interactions. ## How to Contribute ### Reporting Bugs 1. Check if the bug has already been reported in [HuggingFace Discussions](https://huggingface.co/OpenPeerAI/DockingAtHOME/discussions) 2. If not, create a new discussion with: - Clear title and description - Steps to reproduce - Expected vs actual behavior - System information (OS, GPU, CUDA version, etc.) - Relevant logs or error messages ### Suggesting Features 1. Check existing feature requests in Issues 2. Create a new issue with: - Clear description of the feature - Use case and motivation - Proposed implementation (if applicable) ### Contributing Code 1. **Fork the repository** 2. **Create a feature branch** ```bash git checkout -b feature/your-feature-name ``` 3. **Make your changes** - Follow the coding style (see below) - Add tests for new functionality - Update documentation as needed 4. **Commit your changes** ```bash git commit -m "Add feature: description" ``` 5. **Push to your fork** ```bash git push origin feature/your-feature-name ``` 6. **Create a Pull Request** ## Development Setup ```bash # Clone the repository git clone https://huggingface.co/OpenPeerAI/DockingAtHOME cd DockingAtHOME # Install dependencies pip install -r requirements.txt npm install # Build C++/CUDA components mkdir build && cd build cmake .. && make -j$(nproc) # Run tests ctest pytest ``` ## Coding Standards ### C++ - Follow C++17 standard - Use meaningful variable and function names - Add Doxygen comments for public APIs - Use RAII for resource management - Prefer smart pointers over raw pointers ### Python - Follow PEP 8 style guide - Use type hints - Add docstrings for all functions and classes - Use Black for formatting - Maximum line length: 100 characters ### JavaScript - Follow ES6+ standards - Use meaningful variable names - Add JSDoc comments - Use async/await for asynchronous code ## Testing - Write unit tests for new functionality - Ensure all tests pass before submitting PR - Aim for >80% code coverage ```bash # C++ tests cd build ctest -V # Python tests pytest tests/ -v --cov # JavaScript tests npm test ``` ## Documentation - Update README.md if adding user-facing features - Update API documentation for new functions - Add examples for new functionality - Update MODEL_CARD.md if changing capabilities ## Pull Request Process 1. Ensure CI/CD checks pass 2. Update CHANGELOG.md 3. Request review from maintainers 4. Address review feedback 5. Squash commits if requested 6. Wait for approval and merge ## Recognition Contributors will be: - Listed in CONTRIBUTORS.md - Acknowledged in release notes - Credited in publications (for significant contributions) ## Questions? - Email: andrew@bleunomics.com - Discussion Forum: [HuggingFace Discussions](https://huggingface.co/OpenPeerAI/DockingAtHOME/discussions) ## License By contributing, you agree that your contributions will be licensed under the GPL-3.0 License. --- Thank you for helping make computational drug discovery more accessible!