Add CONTRIBUTING.md with project guidelines

This commit is contained in:
Alexander Minges 2025-07-10 15:26:23 +02:00
parent 104a7d57b2
commit 40c9ee5c0d
Signed by: Athemis
SSH key fingerprint: SHA256:TUXshgulbwL+FRYvBNo54pCsI0auROsSEgSvueKbkZ4

142
CONTRIBUTING.md Normal file
View file

@ -0,0 +1,142 @@
# Contributing to doi2dataset
Thank you for your interest in contributing to **doi2dataset**! We welcome contributions from the community and appreciate your help in making this project better.
## Quick Start
1. **Fork** the repository on GitLab
2. **Clone** your fork locally:
```bash
git clone https://git.uni-due.de/your-username/doi2dataset.git
cd doi2dataset
```
3. **Install** development dependencies:
```bash
pip install -r requirements-dev.txt
```
4. **Make** your changes
5. **Test** your changes (see [Testing](#testing) below)
6. **Submit** a pull request
## How to Contribute
### Reporting Issues
- Use the GitLab issue tracker to report bugs or request features
- Provide clear descriptions and steps to reproduce issues
- Include relevant system information and error messages
### Code Contributions
- Create a new branch for your feature or bug fix
- Write clear, descriptive commit messages
- Follow the existing code style and conventions
- Add tests for new functionality
- Update documentation as needed
- Ensure all tests pass before submitting
### Documentation
- Documentation is built using Sphinx and deployed automatically
- Source files are in `docs/source/`
- See the [full documentation](https://doi2dataset-66f763.gitpages.uni) for more details
## Development Setup
### Prerequisites
- Python 3.7+
- pip
### Installation
```bash
# Clone the repository
git clone https://git.uni-due.de/your-username/doi2dataset.git
cd doi2dataset
# Install development dependencies
pip install -r requirements-dev.txt
# Install documentation dependencies (optional)
pip install -r requirements-doc.txt
```
## Testing
We use pytest for testing with comprehensive coverage of core functionalities.
### Running Tests
```bash
# Run all tests
pytest
# Run with coverage
pytest --cov=.
# Generate HTML coverage report
pytest --cov=. --cov-report=html
```
### Test Structure
Tests are organized into several files covering:
- Core functionality (DOI validation, name processing)
- API integration (mock responses)
- Citation building
- Metadata processing
- License processing
- Publication utilities
## Code Style
- Follow existing code conventions
- Write clear, descriptive variable and function names
- Add docstrings for public functions and classes
- Use type hints where appropriate
- Keep functions focused and modular
## Documentation
### Building Documentation Locally
```bash
# Build current branch documentation
cd docs
make html
# Build multiversion documentation
cd docs
make multiversion
```
The documentation supports multiple versions and is automatically deployed via GitLab CI/CD.
## Submitting Changes
1. **Create a branch** from `main` for your changes
2. **Make your changes** with appropriate tests
3. **Ensure all tests pass**
4. **Update documentation** if needed
5. **Submit a merge request** with:
- Clear description of changes
- Reference to related issues
- List of testing performed
## Need Help?
For detailed information about contributing, building documentation, testing, and development setup, please refer to our comprehensive [Contributing Guide](https://doi2dataset-66f763.gitpages.uni/contributing.html) in the documentation.
## Code of Conduct
Please be respectful and constructive in all interactions. We aim to maintain a welcoming environment for all contributors.
## Questions?
If you have questions about contributing, feel free to:
- Open an issue for discussion
- Check the existing documentation
- Contact the maintainers
Thank you for contributing to doi2dataset! 🚀