DockingAtHOME / CONTRIBUTING.md
Mentors4EDU's picture
Upload 42 files
35aaa09 verified
# 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: [email protected]
- 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!