Here are some ideas on how new things could be implemented ---------------------------------------------------------- Suggested by Till The items are not sorted in a special way, especially they are not sorted by importance. Conserving Foomatic data for certain distros or old driver versions ------------------------------------------------------------------- This can be realized most easily by CVS tags which start a new branch. When a distro or a driver is released one tags the CVS. So retrieving this CVS state gives a Foomatic package fitting to the appropriate distro or driver. Bug fixes for old distros or drivers which do not apply any more to the current state of Foomatic can be commited to the appropriate CVS branch. The web interface of FSG OpenPrinting could have buttons than where one can choose the driver or distro version for which one wants to have the Foomatic data. Printer compatibility classes ----------------------------- Instead of needing to add many compatible printers to the drivers and to the constraints of options one could introduce compatibility classes. A compatibility class contains absolutely compatible printers, which means printers which work with the same drivers, the same options, and the same choices for the options. Then one can put the class name into the list of supported printers of a driver and also into the constraints of the options and so one avoids needint to insert tenth of printers everywhere. Especially there are many HP inkjets which are absolutely compatible to each other (around ten classes instead of 100 printers) and there are many clones of HP LaserJet printers. The classes could be defined in a new subdirectory "class" besides the existing "printer", "driver", and "option" subdirectories. The XML file could look as follows (this is the class of new HP inkjets as defined for the HPIJS driver. It contains only the "small" models with paper sizes up to Legal format): printer/635698 printer/HP-DeskJet_980C printer/530418 ... Then the entry to include these printers in the HPIJS driver entry would reduce to ... class/DJ9xxVIP_small ... The 1200-dpi photo quality choice is unique to this printer class, so it will have the constraints: ... hpijs hpijs class/DJ9xxVIP_small hpijs class/DJ9xxVIP_large ... This way the manual entering of Foomatic daya will get much easier. Option conflicts ---------------- Option conflicts prevent the user from making choices which make printing impossible or simply do not make sense (as Duplex on transparencies or 1200 dpi on plain paper). I have already thought about adding a fourth subdirectory (besides "printer", "driver", "opt") named "conflict" containing files like Large capacity tray not installed but either requested or needed due to the requested amount of copies. Brother ljet4 Large capacity tray requested but not installed! LCTInstalled eq No InputSlot eq LargeCapacity Tray4 Tray5 No tray for &value:Copies; sheets available! LCTInstalled eq No Copies gt 250 Here "eq" means "equal to one of the items listed" and "gt" means greater than the given item. A conflict happens when all the conditions in the lines are fullfilled and it should show the in the GUI. mean the same as in the other files. Graying out options ------------------- Some options do not make sense when other options have a certain setting, as for example adjustment of Cyan, Magenta, and Yellow when grayscale or bw printing is chosen. So one could add conditions to an option's XML file when it should be grayed out, as