Call for opinions on Negotiate header

Ted Hardie:
[....]
>> >Section 9.6:
>
>  [Koen:]
>> I don't see how Negotiate: transparent is better design than just
>> Negotiate:, Negotiate: has perfectly fine semantics even if there is
>> no value in the header field.  I modeled it after Keep-Alive.  Are
>> you saying that some people hate such constructs enough that a token
>> keyword is needed to keep them happy?  I thought the general trend on
>> this list was to resist unnecessary bytes.
>
>The problem occurs once you start adding values.  At the moment Negotiate:
>has a single meaning, and there is no semantic difficulty.  Now suppose
>that Larry has a stroke of genius one morning and proposes a great new way
>to negotiate.  And when we start using Negotiate: Masinter, we will all
>know that the Negotiation took place using the new Masinter negotiation
                           ^^^^^^^^^^ 
       I think you mean `can take place', Negotiate is a request
       header which indicates capabilities, not a response header
       which tells whether capabilities were used.

>syntax.  But what happens when we want to negotiate using Transparent *and*
>Masinter?  If we use Negotiate: Transparent, Masinter, it's dead clear.  If
>we use Negotiate: Masinter, it is not clear whether the presence of the
>Negotiate: header is enough alone to indicate whether transparent
>negotiation is available, or was used.

According to the current definition of the Negotiate header, its
presence alone always indicates that TCN is available.

>  So having an initial value may
>save us from having to add cruft in the form of a later Negotiate-Masinter:
>header.

You would have to go for a Negotiate-Masinter header only if a user
agent could support Masinter negotiation without supporting TCN.  I
don't think I would mind the addition of cruft in that case.  However,
I also would not mind having `negotiate: transparent' in stead of
`negotiate:' that much.

This seems largely a matter of taste, so I'll call for WG opinions.

-------

To everyone who cares: please answer the questions below and mail the
answers directly to me, I'll summarize on the list.

Question 1: How should a user agent indicate that it supports
transparent content negotiation?

 [ ] A: By sending the header field `Negotiate:'
 [ ] B: By sending the header field `Negotiate: transparent'

Question 2: If B were used, would you prefer shorter keywords which
use less bytes, for example `Negotiate: tcn'?

 [ ] Yes
 [ ] No
 [ ] Don't care

--------

For reference, the current section 9.6:

9.6 Negotiate

   The Negotiate request header can contain directives for any content
   negotiation process initiated by the request.  Presence of this
   header indicates that the user agent supports transparent content
   negotiation for the current request.

      Negotiate = "Negotiate" ":" #negotiate-directive

      negotiate-directive = token [ "=" ( token | quoted-string ) ]

   An example is

      Negotiate:

   This specification does not define any negotiate-directives, this
   is left to future extensions.  Servers should ignore all
   negotiate-directives they do not understand.  The presence or
   absence of a Negotiate header in a request is significant in
   calculations performed by the network negotiation algorithm.


Koen.

Received on Wednesday, 18 September 1996 12:03:46 UTC