We'd love to accept your patches and contributions to this project. There are just a few small guidelines you need to follow.
- Fork the repository on GitHub
- Clone your fork locally
- Set up the development environment (see Development Guide)
- Create a feature branch for your changes
- Make your changes and add tests
- Submit a pull request
When you actively push changes to one of our development platforms (e.g., using a pull or merge request), you agree that your contribution is placed under GPL3 for the complete project - except the contents of the contrib/template_project folder which is placed under Apache 2 license.
New files must include an appropriate license header including the SPDX license identifier:
# Copyright (c) 2025 by Your Name
#
# SPDX-License-Identifier: GPL-3.0-or-later
#
# This file is part of rmtoo.
#
# rmtoo is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# rmtoo is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with rmtoo. If not, see <https://www.gnu.org/licenses/>.- Follow PEP 8 for Python code
- Use meaningful variable and function names
- Add docstrings for public functions and classes
- Keep functions small and focused
- Add type hints where appropriate
- Add tests for new features
- Ensure all existing tests pass
- Maintain or improve code coverage
- Test on multiple Python versions using tox
# Clone your fork
git clone https://github.com/your-username/rmtoo.git
cd rmtoo
# Create virtual environment
python3 -m venv dev-env
source dev-env/bin/activate
# Install in development mode
pip install -e .# Create a feature branch
git checkout -b feature-your-feature-name
# Make your changes
# ... edit files ...
# Add tests
# ... add or update tests ...
# Run tests
tox
# Run linting
tox -e pep8
tox -e pylint# Run full test suite
tox
# Run specific test categories
pytest tests/RMTTest-Unit/
pytest tests/RMTTest-Blackbox/
pytest tests/RMTTest-Output/
# Check code coverage
pytest --cov=lib --cov=inputs --cov=outputs --cov-report=html tests# Commit your changes
git add .
git commit -m "Add feature: brief description"
# Push to your fork
git push origin feature-your-feature-name
# Create pull request on GitHub- Include a clear description of the bug
- Add a test case that reproduces the issue
- Ensure the fix doesn't break existing functionality
- Discuss the feature in an issue first
- Include comprehensive tests
- Update documentation as needed
- Follow the existing architecture patterns
- Fix typos and improve clarity
- Add examples and use cases
- Update outdated information
- Follow the documentation style guide
- See the setuptools entry points in
setup.pyfor examples - Follow the plugin architecture patterns
- Include tests and documentation
- Register plugins in setup.py
- Clear description of what the PR does
- Tests that verify the functionality
- Documentation updates if needed
- All tests pass in CI
- Code follows style guidelines
- Code quality and maintainability
- Test coverage and quality
- Documentation completeness
- Compatibility with existing features
- Performance implications
- Use the existing plugin architecture
- Follow the stevedore extension patterns
- Add entry points in setup.py
- Include proper error handling
- Use the hierarchical configuration system
- Support both JSON and YAML formats
- Include proper validation
- Document configuration options
- Extend ExecutorTopicContinuum for output plugins
- Support the standard lifecycle methods
- Include proper error handling
- Add comprehensive tests
- Check existing GitHub issues
- Ask questions in pull requests
- Contact maintainers: rmtoo@florath.net
- Treat all contributors with respect
- Provide constructive feedback
- Help newcomers get started
- Follow the code of conduct
- Use clear and concise language
- Explain your reasoning
- Be patient with questions
- Share knowledge and resources
All contributors are acknowledged in the project's release notes and documentation. Thank you for helping make rmToo better!
By contributing, you agree that your contributions will be licensed under the GPL-3.0-or-later license, except for contributions to the contrib/template_project folder which are licensed under Apache 2.0.