rmToo uses rmToo for its own requirements management, making it a great example of the tool's capabilities.
Because rmToo uses rmToo for requirements management, it is possible to use rmToo as an example for rmToo's features. The rmToo project itself contains requirements files that demonstrate real-world usage patterns.
Note: The following procedure is optional and not needed for using rmToo in your projects.
When you want to create all the documentation for rmToo itself, you can execute the steps described in this section. This is useful for:
- Understanding how rmToo works internally
- Seeing a complete example of a requirements management project
- Contributing to rmToo development
If you're using the source/tar ball distribution:
# Set up environment
source setenv.sh
# Build all documentation
make
# Run tests
make testsThe configuration files for output artifacts are located in doc/requirements/ConfigX.py.
All created documents are stored in the artifacts/ directory.
If you're using the Debian package:
# Navigate to the rmToo directory
cd /usr/share/pyshared/rmtoo
# Run tests
nosetests -v -sNote: Some test cases will fail because they assume that there is a git history available, which is not included in the package.
The generated documents can be found under /usr/share/doc/rmtoo.
rmToo is by default configured to create the complete history of rmToo requirements itself. When using the tar ball or Debian package, the git history is not available.
You might encounter an error like:
Traceback (most recent call last):
File "./bin/rmtoo", line 14, in <module>
main(sys.argv[1:], sys.stdout, sys.stderr)
File "/path/to/rmtoo/lib/RmtooMain.py", line 123, in main
exitfun(not main_impl(args, mstdout, mstderr))
File "/path/to/rmtoo/lib/RmtooMain.py", line 119, in main_impl
return execute_cmds(opts, config, mods, mstdout, mstderr)
File "/path/to/rmtoo/lib/RmtooMain.py", line 55, in execute_cmds
reqs = rc.continuum_latest()
File "/path/to/rmtoo/lib/ReqsContinuum.py", line 46, in continuum_latest
return self.continuum[self.continuum_order[0]]
IndexError: list index out of range
make: *** [artifacts/.rmtoo_dependencies] Error 1
If this happens, change the version control interval configuration to ["FILES", "FILES"] in your configuration file. This tells rmToo to use file-based processing instead of git history.
The rmToo project includes:
- Requirements files: Located in
doc/requirements/ - Topics files: Located in
doc/topics/ - Configuration files: Various
Config*.pyfiles - Generated artifacts: HTML, LaTeX, graphs, and statistics
- Hierarchical requirements organization
- Dependency management between requirements
- Multiple output formats (HTML, PDF, graphs)
- Quality analytics and statistics
- Version control integration
- Constraint checking
When exploring rmToo's self-hosted requirements:
- Requirement writing patterns: Look at how requirements are structured
- Dependency relationships: Study how requirements depend on each other
- Topic organization: See how requirements are grouped into topics
- Configuration examples: Learn from real configuration files
- Output customization: Examine how different outputs are configured
When contributing to rmToo:
- Modify requirements: Edit
.reqfiles indoc/requirements/ - Update topics: Edit
.ticfiles indoc/topics/ - Regenerate documentation: Run
maketo update artifacts - Test changes: Run
make teststo verify everything works - Review artifacts: Check generated HTML, PDF, and graphs
rmToo uses multiple configuration files:
doc/requirements/Config*.py: Different configurations for different output sets- Each configuration demonstrates different features and output combinations
- Real-world example: See how rmToo is used in practice
- Feature demonstration: All major features are used in the project
- Quality assurance: The tool is tested on itself
- Documentation by example: Learn by seeing actual usage
- Continuous validation: Changes are tested against the tool itself
Historical Note: Starting with rmToo version 11, GitPython was shipped with rmToo. The API of GitPython changed rapidly at that time, with three different APIs available. The plan was to remove the bundled GitPython once the API stabilized and use the OS/distribution version instead.
GitPython is used for:
- Version control integration
- Historical analysis
- Baseline management
- Change tracking
For more information about GitPython, see the GitPython project page.
After exploring rmToo's self-hosted requirements:
- Create your own project: Use the template project as a starting point
- Apply learned patterns: Use the patterns you observed in rmToo
- Customize for your needs: Adapt the configuration and structure
- Contribute improvements: Help improve rmToo based on your experience