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/635698printer/HP-DeskJet_980Cprinter/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:
...
hpijshpijsclass/DJ9xxVIP_smallhpijsclass/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.
Brotherljet4
Large capacity tray requested but not installed!
LCTInstalled eq NoInputSlot eq LargeCapacity Tray4 Tray5
No tray for &value:Copies; sheets available!
LCTInstalled eq NoCopies 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