Google Summer of Code/2014/Ideas/Catalyst

From Gentoo Wiki
Jump to:navigation Jump to:search


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.

Contacts Required Skills, Gentoo,Python,Bash,Git,Ability to solve package build/merge failures

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. Documentation: 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.