IPP Mail Archive: IPP>MOD (with missing text) Issue with Conditionally Mandatory

IPP>MOD (with missing text) Issue with Conditionally Mandatory

Robert Herriot (Robert.Herriot@Eng.Sun.COM)
Mon, 21 Jul 1997 13:20:13 -0700

[ somehow most of the paragraphs in the email I sent on
Friday disappeared in transit, perhaps the period after "optional" which
ended up in column 1 deleted all that followed. Here is the full text. ]

I have a concern about the concept of conditionally-mandatory which
applies to all job template attributes. I think it doesn't really help
us understand what a conforming implementation must implement.

After writing the paragraphs below, I have concluded that job-template
attributes should all be optional, and we should drop the
"conditionally mandatory" term. At the very least, they have to be
optional for print servers. There may be some argument for making some
of them conditionally mandatory in embedded printers, but the extra
complexity of the explanation may not be worth the trouble. We all need
to give this issue some more thought. As long as the explanation is so
murky, I don't think any two people would come up with the same list of
mandatory attributes for an implementation and that is no better than
making them optional.

Now for the details.

Before discussing the issue, we should understand that there are two
categories of attributes:

o printer control (e.g. media or sides)
o job control (e.g. job-priority, job-sheets or notify-events)

And there are two types of implementations

o embedded printer
o print server

We also need to look at the model document's definition of
conditionally mandatory. The following is paraphrasing from 3 parts of
the model document. It says an implementation must support the
attribute if it knows about and is able to support it, and need not
support the attribute that controls a feature that the output device
does not implement or expose. It also says that if a certain
implementation supports only one well-known value of some
"xxx-supported" attribute, it is not required that that implementation
support that attribute.

This definition is somewhat reasonable for an embedded printer. It is
easy to determine if an output device supports an IPP printer control
attribute, though if the feature has only one value it may not be easy
to determine if the value is "well-known". If a printer supports only
letter paper, then the rules above say that support of "media" is not
required. But suppose the size is B only. Is B "well-known" enough to
qualify for the exclusion? If IPP has an exclusion for a known feature,
the rule should exclude "non- selectable" features rather than
"well-known" because "well-known" is subjective.

This definition is somewhat more difficult for job control attributes
in an embedded printer. There is no hardware associated with job-sheets
or job-priority. So an output-device "knows" about such a feature only
if its software implements it, in which case IPP likely supports it.
This all seems rather circular. So the answer is that all job control
attributes are optional for embedded printers.

For print servers, the rule is quite inscrutable because a print server
can potentially serve all types of printers with a variety of features.
Are all printer-control attributes mandatory because a connected
printer could have the feature or all printer-control attributes
optional because the printer-server itself has none of the features?
Because job-control attributes are normally implemented by a print
servers and not output devices, the feature doesn't exist unless it is
implemented, hence nothing is mandatory. So I am left not knowing what
to do for a print server. Can I implement nothing or must I implement
all to be conforming. I think everything is optional.

When I look at the four combinations of the 2 types of implementations
and 2 types of attributes, I conclude that only printer control
attributes in embedded printer implementations could be conditionally
mandatory. All job control attributes in embedded printers and all
attributes in print servers must be optional.