Subject: Re: On attribute-based queries

From: Stuart Cheshire <[email-masked]>
Date: Tue, 6 Aug 2002 19:45:47 -0700

>I am surprised that Apple of all people might suggest that because
>a query appears on the wire in an arcane form, that the user
>should see this.
>
>Of course the chooser software has to filter
>"service:printer:http://169.254.17.202;(name=Epson Stylus 900n)"
>to present the user with something more friendly - like showing
>"Epson Stylus 900n" in its printer selection (assuming that the
>user hasn't even changed the manufacturers default name to
>something more useful).

But is every printer *required* to have a "name=xxx" attribute?

Is every printer required to check that its name is unique, and take some 
action if it is not?

It is fine to talk about what things can be done with this or that 
protocol, but it is hard to write a client that takes advantage of a 
feature unless you know that *ALL* implementers of that protocol will 
implement the feature you are depending upon.

The recipe for an interoperable protocol is a small list of mandatory 
features, and an even smaller list of optional features.

Stuart Cheshire <[email-masked]>
 * Wizard Without Portfolio, Apple Computer
 * Chairman, IETF ZEROCONF
 * www.stuartcheshire.org

---

From: Tim Jansen <[email-masked]>
Date: Wed, 7 Aug 2002 15:45:01 +0200

> But is every printer *required* to have a "name=xxx" attribute?

Yes, if you require this in the service template. And only a service template 
allows you to use a service type like "service:printer".

> Is every printer required to check that its name is unique, and take some

No. You may be able to require this in the service template, but the 
check+register action will not be atomic. 

But I dont think that it is good idea: You don't make things easier when one 
printer is called "Epson Stylus 900n" and the other one "Epson Stylus 900n 
#2". And if you turn both off and on again they may even swap their names, so 
the names are not even stable. 
Saving the printer's name in persistent memory will create other problems, so 
people could wonder why one model is called Epson Stylus 900n #3" even though 
there is only one printer in the network. And what happens if you put a 
printer that has previously been number #2 in a network that already has two 
printers of the type? 

A better solution is to add a unique/serial/random number to the URL or 
attributes so you get a persistent identifier for the printers, e.g.  
"service:printer:http://169.254.17.202;(name=Epson Stylus 
900n),(serialno=65465421)".

bye...