Hi, I put some more thoughts into the class hierarchy topic, and wrote them down. My Goal is to help sharing, copying and distributing single classes which solve specific problems, as well as improving manageability of FAI install configurations in general.
The proposed structure makes this possible. Handling classes in the proposed way would give us the benefit of classes being easily renamed and copied (from templates), and could be delivered in Debian packages easily. We can have at the same time a place where static packages store class info, and a locally changing custom config space. Admittedly, we'd need some more hierarchy-parsing intelligence then we have now. I have no guess right now, how much work that is. I also didn't think about yet, if/how we can make this as an addition to the traditional mechanisms. O.K, the idea looks like this: CLASSNAME/ class_scripts/ -> (1) <NR>[-NAME] variables -> (2) package_config -> (3) disk_config (4) debconf (5) a debconf file for that class README (6) hooks/ (7) <TASKNAME> <TASKNAME> depends(8) scripts/ (9) <NR>[-NAME] <NR>[-NAME] version And here the explanations: (1) the classic class directory (2) a file which was before class/CLASSNAME.var (3) a file which defines all packages needed for that class. Should we make a directory as before? maybe we want some packages be only installed if another class is defined? On the other hand, the proposed way we don't need to name the file CLASSNAME in a directory package_config. I think a class name should appear in as little locations as possible, to make class renaming easy. (4) a file that was before: disk_config/CLASSNAME (5) a debconf file for that class (6) a file containing some info what this class is about (7) the classic hooks directory, only that the files inside don't need the classname added again. (8) a file with a list of classes this class depends on (9) the classic scripts directory, only there are no extra subdirectories and the CLASSNAME doesn't appear again here. (19) file with a version string inside This is just a rough idea, I think will try to make an example implementation some day 'cause I like to see how it "feels" :) What do you think? Anything wrong or good with that? Henning