Developer Guide
Complete guide for rmToo developers, contributors, and advanced users.
Getting Started
Development Setup
Planning and Vision
Architecture Overview
Core Components
rmToo follows a plugin-based architecture:
- Input Plugins: Parse requirement tags and dependencies (e.g., ReqName, ReqDescription, RDepDependsOn)
- Storage Backend: Support for text files and YAML formats
- Validation: Syntax and semantic error checking
Processing Engine
- TopicContinuumSet: Version-controlled collection of requirements and topics
- Dependency Resolution: Automatic dependency graph creation
- Analytics: Quality checking modules (DescWords, HotSpot, TopicCohe, ReqTopicCohe)
Output Generation
- Output Plugins: Generate different artifact formats (html, latex2, graph2, xml1, etc.)
- Template System: Jinja2-based template processing
- Multi-format Support: Parallel generation of multiple output types
Plugin Architecture
All plugins are registered through setuptools entry points:
entry_points={
'rmtoo.input.plugin': [
'ReqName = rmtoo.inputs.ReqName:ReqName',
# ...
],
'rmtoo.output.plugin': [
'html = rmtoo.outputs.html:html',
# ...
],
}
Development Workflow
Setting Up Development Environment
- Clone the repository
- Create virtual environment
- Install in development mode:
pip install -e .
- Run tests:
tox
or pytest
Making Changes
- Create feature branch
- Implement changes with tests
- Run full test suite
- Submit pull request
Testing
- Unit Tests: Core component testing
- Blackbox Tests: Full integration testing
- Output Tests: Format-specific validation
- Syntax Tests: Input validation
Run tests with: tox
(recommended) or pytest
Code Quality
- Follow PEP 8 standards
- Use meaningful names
- Add docstrings for public interfaces
- Include type hints where appropriate
Extending rmToo
- Create class in
rmtoo/inputs/
inheriting from appropriate base
- Add entry point in setup.py
- Implement required methods for tag parsing
- Add tests
Adding Output Plugins
- Create class in
rmtoo/outputs/
inheriting from ExecutorTopicContinuum
- Add entry point in setup.py
- Implement lifecycle methods for artifact generation
- Add tests
Configuration System
- Hierarchical configuration merging
- JSON/YAML format support
- Variable substitution:
"${variable_name}"
- Environment variable support
Key Development Areas
Quality Assurance
- Comprehensive test coverage (95%+)
- Multiple Python version support (3.8-3.13)
- Continuous integration with GitHub Actions
- Code quality monitoring with SonarCloud
- Efficient dependency graph processing
- Optimized template rendering
- Memory-conscious large requirement set handling
Compatibility
- Cross-platform support (Linux, macOS, Windows)
- Multiple Python versions
- Backward compatibility maintenance
Getting Help
Development Resources
Documentation
- Man pages:
man rmtoo
- Code documentation: Well-documented source code
- Example projects: Template project and email client example
Contributing
We welcome contributions! Please:
- Read the Contributing Guide
- Set up your Development Environment
- Follow our coding standards
- Include tests with your changes
- Submit pull requests for review
Ready to contribute? Start with the Contributing Guide!