Dick,

> On Sep 15, 2025, at 3:28 PM, Dick Hardt <dick.ha...@gmail.com> wrote:
> 
> Would love to hear more about your interop experience with  version numbers — 
> are there a couple gotchas that come to mind?

[Note: This is a big rabbit hole because IPP has 26 years and supports several 
billion clients/printers. I will try not to go too deep but let me know if you 
want more details...]

The main thing is that when protocol versions are interoperable (i.e. the same 
on-the-wire encoding/protocol) then you need other mechanisms to allow clients 
to discover protocol features.  For IPP that means allowing a client to query 
metadata (in IPP the metadata is called "attributes", so the client sends a 
Get-Printer-Attributes request to get back the capabilities and status of a 
printer), and then the client can decide how best to communicate with the 
printer (or give up...)  The only time we really found versioning to be a 
solution is when we needed to be certain that an extension to the IPP message 
encoding was supported (IPP/2.0 requires "collection" value support, which is 
optional for IPP/1.x).

IPP also has the notion of a "feature" which can group multiple optional 
operations (endpoints in OAuth), attributes (key/value pairs), and 
semantics/behaviors.  For example, if a printer supports the IPP "cloud 
printing" extensions, the client can discover this by querying the 
"ipp-features-supported" printer attribute and looking for the keyword "infra" 
(the nickname for the spec) rather than looking for all of the operations and 
attributes required by the spec.

In addition to allowing clients and servers to discover capabilities, it is 
important that an existing ("old") client be able to work with a "new" server, 
and vice versa, assuming that the client and server support a common subset 
necessary for interop.  As a concrete example, the CUPS 2.5+ OAuth code 
explicitly only supports an AS that provides either RFC 8414 or OIDC metadata, 
and tailors its requests to use security features (PKCE, OIDC nonce, token 
exchange, etc.) advertised in the metadata.  Obviously, a client could be 
written/configured to require specific features (as a local security policy), 
just as they can be configured to only support certain AS 
implementations/providers today.

________________________
Michael Sweet

_______________________________________________
OAuth mailing list -- oauth@ietf.org
To unsubscribe send an email to oauth-le...@ietf.org

Reply via email to