Subject: "Constant feature sets"

From: Ted Hardie <[email-masked]>
Date: Tue, 19 Jan 1999 10:54:54 -0800 (PST)

First, my apologies for the delay in commenting on the work Bill and
Graham have put forward; second, my thanks to both of them for taking
on the hardest problem this group has left to solve.

Having named it hard, I would like to take a crack at defining the
problem and discussing what methods there are for solving it.  (In
the text below, I use the term "grouping" to talk about features
which are associated with each other, but do not fully describe
the features of a resource or the capabilities of a device.  It's
not a particularly great phrase, and replacement suggestions are
welcome).

The Problem:

When there are multiple, static representations of a particular
resource, the features which describe the differences between the
representations are bounded and the method by which the resources can
be distinguished are pretty clear.  In our current architecture the
method for doing so requires, however, that the features which do not
distinguish between them be repeated in every group.  This means that
a representation which can be printed on a4 paper, in 16 shades of
grey, using postscript level 2, using a times-roman 12 point font must
be distinguished from a representation which can be printed on
na-letter, in 16 shades of grey, using postscript level 2, using
courier 12 point font.  (Note, by the way, that the groupings in the
example imply that you can fit things on to na-letter only by changing
fonts; you cannot simply vary both the paper and the font).  The
constant features cannot be left out, because the devices need to
compare their capabilities against them, but the waste of repeating
them goes up enormously with the number of representations; with
dynamic representations, this gets even worse.  Having some way to
reference the constant features without repeating them would obviously
be a win.  

The same is true on the flip side; there are a lot capabilities within
devices, most of them constant.  Having some way to reference the
constant set without repeating them is also a big win, especially
where bandwidth is low.

The Example in many of our minds:

In HTTP, sending a full set of Accept-* headers got to be so wasteful
that many devices stopped using that method for negotiation and
shifted to User-Agent or other methods (this was, of course, only part
of the problem, and a full treatment would include the "Accept */*"
problem and other things).  In a sense, User-Agent became a feature
grouping identifier; it wasn't a good one, though, because it often
either implied capabilities which had been disabled or did not include
extensions.

Possibilities:

As Bill and the CCPP work implies, you can use a URI that points to a
constant grouping.  That URI can be used as a token, for situations in
which both negotiating parties understand the feature grouping it
implies.  The URI token will not, sadly, be known to both parties in
all situations.  If the URI gives a pointer to a location with a
canonical representation of the features it implies, chances of
success go up, but it will not always be possible to retrieve the
representation and disaggregate the features.  (Both for the case in
which a device cannot use the URI scheme and for the case in which the
canonical representation of the resource is not available).  A
traditional URI won't help in the "multiple inclusion" aspect of the
problem, because you need to assign the groupings dynamically.  We
could steal the work of the mhtml work and assign an "internal" URI to
the set of constant items as part of the message, then use that
identifier as an internal reference.

The primary problem with the URI method is update; it requires systems
to constantly keep up with new URIs, some of which will represent the
same constellation of features.  On the cell phone side, for example,
Qualcomm dhas branded the phone I have with 5 different company names
that I am aware of, and I would bet each would require references to
*their* URI space.

Several folks have implied that we could use hashes of features rather
than pointers to feature groupings.  I can certainly see that working
in the "multiple representation" side, but I am not sure about the
external reference side.  Any proponents willing to speak out?

Any other possible solutions that scale to the extent we need?

			regards,
				Ted Hardie
				[email-masked]

---

From: Graham Klyne <[email-masked]>
Date: Wed, 20 Jan 1999 13:32:53 +0000

At 10:54 19/01/99 -0800, Ted Hardie wrote:
[...]
>problem and discussing what methods there are for solving it.

Ted,

From where I stand, you have not so much described "the problem", but
another scenario for the application of "constant feature sets".

I think we need to distil these scenarios into some kind of clear,
application-independent statement of the goals of a "constant feature set"
proposal.

Comments?

#g