Subject: Re: LDAP Enhancement Style Guide

From: Bruce Greenblatt <[email-masked]>
Date: Sat, 31 Mar 2001 21:04:11 -0800

At 01:56 PM 3/31/2001 -0800, Rob Weltman wrote:
>Bruce Greenblatt wrote:
> >
> > I have been requested to publish an update of this draft.  So, attached is
> > an update of my "LDAP Enhancement Style Guide" internet draft.  Please
> > publish it as an update to draft-greenblatt-ldapextstyle-00.txt.  Several
> > comments were received on the previous edition, and have been
> > incorporated.  Many thanks to those who responded, especially Kurt 
> Z!  Thanks,
> >
> > Bruce Greenblatt
>
>   Interesting about control extensibility. My first draft on the proxy 
> auth control didn't include extensibility hooks. It only specified the 
> fields required by the control as conceived. A couple of people suggested 
> that perhaps in the future it could be extended to passing other 
> credential fields, so I changed its value contents to a SEQUENCE in the 
> second revision. Then other people (well-known within LDAPEXT) said no, 
> that's wrong. An extension should result in a new control, rather than 
> additional fields in an existing control. So a subsequent revision 
> reverted to just specifying a single non-extensible credentials field.

OK.  If you allow for new fields in the control, and the meaning of the 
control doesn't change, why should you have to get a new OID and a new 
control.  I think that it is appropriate to allow for future 
extensibility.  If the client puts a field in a control that the server 
doesn't know about, how is that any different than the client putting a 
control in an operation that the server doesn't know about?

>   Your draft says:
>
>"The definition of a control SHOULD be defined in such a manner that
>it is extensible.  For extensibility, extra binary fields SHOULD be
>built into the definition.  In ASN.1, use of a SEQUENCE is helpful."
>
>   Has there been a change in the opinion generally among the LDAP 
> luminaries on extensibility in controls, or are the opinions strongly 
> divergent?

Probably the latter, if past experience is any judgement.  In any case, 
it's only my opinion, and it's only a SHOULD.  I'm sure that there are some 
situations in which the allowance for extensibility is 
inappropriate.  That's why its a SHOULD and not a MUST.

>Rob
>
>
> >
> > ==============================================
> > Bruce Greenblatt, Ph. D.
> > Directory Tools and Application Services, Inc.
> > http://www.directory-applications.com
> >
> > 
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> >                          Name: ldapstyleguide.out
> >    ldapstyleguide.out    Type: Plain Text (text/plain)
> >                      Encoding: base64

==============================================
Bruce Greenblatt, Ph. D.
Directory Tools and Application Services, Inc.
http://www.directory-applications.com

---

From: Rob Weltman <[email-masked]>
Date: Sat, 31 Mar 2001 22:18:22 -0800

> control in an operation that the server doesn't know about?

  I agree in principle, but in practice I think it varies. How is a client to know if the server understands the additional field? A client can check if a server supports a particular control by OID by reading the root DSE, but there is no way to check for a version of a control. In some cases it's OK; for example the field might indicate that the client wants the server to return some additional information besides the response implied by the "base" control fields, it can check the response to see if the additional info is there, and it doesn't matter much if it's not there. But in other cases it would not be acceptable - e.g. the operation is useless or worse to the client if the server doesn't understand the new field, or the client can't tell from the response if the server took the additional field into account or not.

Rob

---

From: Bruce Greenblatt <[email-masked]>
Date: Sun, 01 Apr 2001 10:20:35 -0700

At 10:18 PM 3/31/2001 -0800, Rob Weltman wrote:

>   I agree in principle, but in practice I think it varies. How is a 
> client to know if the server understands the additional field? A client 
> can check if a server supports a particular control by OID by reading the 
> root DSE, but there is no way to check for a version of a control. In 
> some cases it's OK; for example the field might indicate that the client 
> wants the server to return some additional information besides the 
> response implied by the "base" control fields, it can check the response 
> to see if the additional info is there, and it doesn't matter much if 
> it's not there. But in other cases it would not be acceptable - e.g. the 
> operation is useless or worse to the client if the server doesn't 
> understand the new field, or the client can't tell from the response if 
> the server took the additional field into account or not.

You make good points.  I still think that it should be a SHOULD.  I will 
add your arguments to the next revision.