Google Summer of Code/2013/Ideas/Catalyst
Catalyst is Gentoo's stage building software which automates the building of Gentoo's release media. Unfortunately it's software base is in need of some major updating. A rewrite has been started a couple of times. The most recent catalyst rewrite branch will be the starting point for future work. Catalyst is written in a combination of python and bash, much like it's package manager portage. Problems with the original code include, not being installed to python's site-packages, poor code organization (growing pains), hard coded paths making changes difficult, not using what are now built-in python features and modules, etc.. An initial restructure has been done with some code split into smaller logical files/modules. Also some of the hard coded paths have been made configurable.
Completion of code re-write
- Migrate more code to use python built-in's rather than it's own code. ie: ConfigParser, argsparse,...
- Make more variables configurable, remove all remaining hard coded paths.
- Modularize the code further where it makes sense and reduce code duplication.
- Update or create docstrings for all functions and classes.
- Add more inline code comments to explain why something is done the way it is.
- Update portions of the code to match new features in portage, compression utilities, etc.
- Make catalyst package manager agnostic, allowing it to use any PMS compliant package manager.
- Add more options for image types produced.
- Possibly add more target types
- Separate out the command line code from the main operational api. This allows for the creation of alternate front-ends or embedding catalyst's operation into other tools.
- debug!, debug!, debug!
- Produce user instruction documentation about how to create/use the different target types
- Instructions for image generation options.
- Instructions for user configurable variables and how they might affect what is produced.
- Document anything else that may come up.