Minutes, 20 May 2004 WS Description FTF

Web Service Description Group
Minutes, FTF meeting 20 May 2004
New York City, hosted by IBM.

-------------------------------------------------------
Thursday 20 May
-------------------------------------------------------

Present:
 David Booth            W3C
 Allen Brookes          Rogue Wave Software
 Roberto Chinnici       Sun Microsystems
 Glen Daniels           Sonic Software
 Paul Downey            British Telecommunications
 Youenn Fablet          Canon
 Hugo Haas              W3C
 Amelia Lewis           TIBCO
 Jonathan Marsh         Chair (Microsoft)
 Jeff Mischkinsky       Oracle
 David Orchard          BEA Systems
 Bijan Parsia           University of Maryland MIND Lab
 Arthur Ryman           IBM
 Jerry Thrasher         Lexmark
 Asir Vedamuthu         webMethods
 Sanjiva Weerawarana    IBM
 Umit Yalcinalp         Oracle
 Prasad Yendluri        webMethods, Inc.

Regrets:
 Tom Jordahl            Macromedia
 Hao He                 Thomson 
 Kevin Canyang Liu      SAP
 
scribe: Amy
-------------------------------------------------------
08:15 Issue 54: Allow binding to any HTTP method [20]
  - Hugo's original proposal [21]
  - DaveO's original proposal [22]
  - Hugo's combined proposal [23]

 [20] http://www.w3.org/2002/ws/desc/2/06/issues.html#x54
 [21] http://lists.w3.org/Archives/Public/www-ws-desc/2004Apr/0042.html
 [22] http://lists.w3.org/Archives/Public/www-ws-desc/2004Apr/0055.html
 [23] http://lists.w3.org/Archives/Public/www-ws-desc/2004Apr/0093.html

Hugo, "Full Potato" proposal.  Issue 54.

Define method attribute as string.  BNF for restrictions on method 
names.  pattern facet supplied.  Define inputSerialization, 
outputSerialization attributes.  methodDefault attribute on 
http:binding as currently defined.  Defines three MEPs: In, 
Robust In, In/Out.

Change from single attribute to set; now three.  Defaults are defined
to avoid creating work.

Arthur:   Could change default to application/x-www-form-urlencoded 
          or multipart/form-data.  This would permit use through 
          browsers.
Sanjiva:  Support default of application/xml.
Glen:     Who will use HTTP binding?
Arthur:   Post no more restrictive than get, using standard browser 
          media types.  Easier to obtain browser support with this 
          as default.
Bijan:    Wants "sugar" (syntax sugar) to make it easy to use both, 
          because current apps use about equal of both.
Hugo:     Continues, discussing restrictions on operation styles 
          associated with media types.  Examples.
General discussion.
Arthur, Jonathan: readable, easy.  Question of preferred media type.

Discussion of default inputSerialization.  Possibilities: text/xml, 
application/xml, application/x-www-form-urlencoded, 
multipart/form-data.

Arthur:   History of preferred MIME types for XML and reasoning.

Discussion leads to split between those preferring type preferred 
by browsers versus those preferring application/XML (easier to 
define).

Arthur:   Main use of HTTP binding is for web applications that are 
          accessible by web browser, so default to forms media type.
          As long as both are defined, though, it's just the matter 
          of what to optimize.

General call for straw poll.
  application/xml: 5;
  application/x-www-form-urlencoded: 7.

Glen:     default means using URL style.

Jonathan: Call for objections to adopting Hugo's proposal with 
          amended defaults.  No objections.  Accepted by consensus.  

RESOLUTION: Issue 54 closed, Hugo's full potato proposal accepted,
            with default changed to x-www-form-urlencoded.
ACTION: Editors to incorporate Hugo's full potato proposal.

Hugo: also closes Issue 147.

RESOLUTION: Issue 147 closed.

-------------------------------------------------------
10:30 HTTP
  - [optimization] properties [24]:
    + HTTP Version
    + Content coding
    + Transfer Codings (Chunked encoding)
    + Caching (Vary, etc.)
    + Content Negotiation ?
  - David's original analysis [25]
  - David Content coding is more than optimization [26]

  - [client requirements] properties [27]:
    + Authentication (and related parameters)
    + SSL
    + Cookies
    + Content Negotiation ?
  - David's original analysis [28]
  - David's initial proposal [29]


 [24] http://lists.w3.org/Archives/Public/www-ws-desc/2004May/0019.html
 [25] http://lists.w3.org/Archives/Public/www-ws-desc/2004Apr/0083.html
 [26] http://lists.w3.org/Archives/Public/www-ws-desc/2004May/0027.html
 [27] http://lists.w3.org/Archives/Public/www-ws-desc/2004May/0020.html
 [28] http://lists.w3.org/Archives/Public/www-ws-desc/2004Apr/0083.html
 [29] http://lists.w3.org/Archives/Public/www-ws-desc/2004May/0030.html
 
Client Requirements for properties in the HTTP binding.  Proposal 
from David Orchard.  Reference to email (Subject: HTTP Properties V2).
http://lists.w3.org/Archives/Public/www-ws-desc/2004May/0053.html

Each of the properties has subtle differences from others.  
String/description versus complex types.

Properties, each.

"Accepts" property.
Sanjiva:  Where does this go?  
David:    May appear on either input or output, provides nearly 
          negotiation.
Sanjiva:  Wants defaults, but means need separate defaults for inputs 
          and outputs.  On output message, "accepts" now means 
          something different (means "supports" or "emits").  
Umit:     How does this interact with media types document?  Looks 
          like conflict.
Glen:     Need to figure out how these work together.
Sanjiva:  Use this only for input, not for output (for output, this 
          is not "accepts").
David:    Okay, so how can the client specify output?  And how can 
          the server say, in the WSDL, what it can produce?
Sanjiva:  Then it's a different attribute.
Jonathan: I thought that this was to permit negotiation to be 
          sidestepped.
Sanjiva:  Fine, but this isn't "accepts," if it's what the server 
          may emit.  Reference to yesterday's argument.
Roberto:  Client can specify in header.
Sanjiva:  Yes, but having this in the WSDL means that client can 
          construct a more specific accepts header.  
Umit:     But this is defined in schema, by media types note.
Glen, Jonathan: require this note?
Roberto, Umit: use the note.
Jonathan: How does the abstract media type map to base64-encoded XML 
          versus actual binary stream?
Glen:     Have to have constraints on media types.
Roberto:  Why do we have this, inputSerialization, 
          outputSerialization, and the note?
Jonathan: If I already have the type in the schema and the 
          input/output serialization, why do I need this?
David:    Permits multiple media types?
Umit:     Note does.
Sanjiva:  Need HTTP content negotiation.  Question of whether the 
          note provides this functionality.
Umit:     All that needs to be done is that the binding needs to 
          reference the note.  
David Booth: Is this more complex than what we need?  For 
          human/browser interaction, negotiation needed; is it truly 
          needed for app/app?
Paul:     RSS counter-example for app/app content negotiation.
Sanjiva responds; generate the accepts header not from a new property,
          but from media types document.
Jonathan: Accepts property unnecessary?
Umit:     Need paragraph in HTTP binding to use media types document.
Allen:    Wasn't media types about attachments?
Sanjiva:  If it's multiple bits, you can use that, but you can also 
          do the single part type.
David Orchard: can I send a gif and get a jpeg?
Answer:   Yup, not hard.

ACTION: HTTP binding to be updated to include discussion of how to 
        generate an accepts header from schema annotations 
        conformant to the media types extension document, and to 
        use outputSerialization based on that information.  
Accepted by David Orchard.

Accepts property not accepted.

Authentication property.  Description by David Orchard.
Sanjiva:  Need a default value which has a different name.  
          Discussion of value of string.
Jonathan: Realm property is associated.  Take values from HTTP spec 
          and use them.
Sanjiva:  Realm has no default.
Amy:      Loud noises on how authentication is negotiated.  Suggest 
          that content of auth type is a prioritized list.  
Paul:     Shouldn't this be in endpoint?  If in binding, can't be 
          used with multiple deployments.
Amy:      Propose that this move to be an element inside 
          wsdl:endpoint.
Jonathan: Question on how realm is defined.
Amy:      Responds with how easily one machine can define multiple 
          realms.
Sanjiva:  Why can't this be in the binding.
Arthur:   Because then the binding can't be reused.  Objections to 
          placing auth type on endpoints.
Responses.
Hugo:     Does it go only on endpoint, or in multiple places?  Auth 
          type in binding, realm in endpoint.
David B:  Why not use features and properties?
Jeff:     Separate syntax from goals.  Does this belong in core?

Cookies property.
Umit:     This attribute informs the client that cookies must be 
          enabled, right?
David:    Better be prepared to accept cookies.
Roberto:  What help does this give me as a service writer?
Answer:   None, it only helps the client to know.
Paul:     Single sign on example.
Roberto:  Why so low level?
Jeff:     All properties are requirements from the service; don't 
          change the need to program service defensively.  Clients 
          can always ignore this.
Roberto:  That's not my argument.  How does indicating that the 
          mechanism exists help?
Jeff:     Forget what cookies are used for.  This tells people that 
          the browser must have cookies enabled.
Paul:     Choice of bindings.
Amy:      Simply indicates mechanism, provides easier diagnosis.
Asir:     What's the relationship between cookies and bindings?  
Roberto:  Should define "conversation feature".
David:    That doesn't help any; we still need to know the mechanism.
Hugo:     Is requirement sufficient, given ability to use different 
          sites and do tracking and such?
Sanjiva:  Doesn't make sense on a single operation.  So you need to 
          say something more complex.
Amy, Umit, David: no, you just say, "you must support cookies."
Prasad:   Not just about conversation; useful to support at this 
          level.
David B:  Which cookies get sent back?
David O:  There is a spec that tells you this!
David B:  How does the "only this domain" setting in a browser works?
David O:  You have to match the domain.
Amy:      More explanation of how tracking works.
Roberto:  Compare with session handling in SOAP.  Can apply to other 
          services in the same domain.  Doesn't help the client at 
          all.
David O:  Three cases: not indicated; client breaks without cookies.
          Isn't WSDL supposed to prevent this case?  Case two: says 
          "I require cookies".  Case three: provide two bindings, 
          one with, and one without.
Roberto:  Completely unnecessary.
Arthur:   WSDL describes interfaces, not semantics.
David O:  What is the alternative proposal?  Move it into the 
          interface?
Jonathan: Can I use it on operations?  (no)
David B:  Becomes significant at application level, agrees with 
          Roberto.
Glen:     So what?  Sure, it's application significant, but that's 
          the way that it works in the real world.  It is not 
          necessary to promote this into the interface.
Roberto:  If there is something that is being passed back and forth, 
          it ought to appear as a feature in the interface.
Glen:     Can define a feature for state, but this is just a mechanism
          that could fulfill it.
David B:  What would happen without this?
Amy:      Likely to be requirement for authors using this binding.

Straw poll: in favor of cookies: 12.  opposed: 5.

Hugo:     Don't want to encourage cookie use.
David O:  This argument is without merit, although it is a canon of 
          W3C.  In practice, state is important to a broad spectrum 
          of applications.

10:30 Break     ----------------------------------------

10:45 HTTP properties (cont.)


Transfer-coding attribute.
David O:  Same kinds of problems as the accepts property, given that 
          it is for both directions.
Umit:     What is use case?  Require input or output to be gzipped 
          because of high volume?
David O:  For input, difficult to say "send as gzip."  For instance, 
          repeatedly invoked operation.  Another instance is complex 
          work flow; where stuff is sent on different operations.  
          Latter case is more significant, because it's not possible 
          to optimize in HTTP.
Sanjiva:  Actually, can't negotiate this one; only way to do it is to 
          try it and fail.
Umit:     Isn't this about requirements?  Want to advertise as a 
          requirement.
Youenn:   Isn't a requirement, just advertises availability.
Umit:     Better if it's a requirement.  Better to make it a 
          requirement.
David:    Again a case of split bindings?
Sanjiva:  Can't really be requirement.
Umit:     See main value when it is a requirement.
Sanjiva:  Better in this case to be availability.
David:    To take to extreme, every one of these attributes can be 
          divided into supported/required.
Umit:     For cases that can be negotiated, then it is enough to 
          provide a "required" attribute.  For cases that can't be, 
          have both attributes.
Amy:      Different cases for input and output: input is supported 
          possibilities, output is required.  
Sanjiva:  Is it really useful for output?  Negotiate by using 
          separate bindings?
Asir:     Interaction with HTTP version: for 1.0 cannot use 
          transfer-coding at all.
Sanjiva:  Perhaps not useful on output?  Tie input to output?  Make 
          it input only.
David:    But use of multiple bindings would permit client choice.
Sanjiva:  No, only interesting for service to say supported or not.
          We should only do this on input.
Amy:      Is this an endpoint property?
Sanjiva:  Should we use it input only, as supported, as required?
Amy:      Tying input to output not good; asymmetry in 
          request/response.
Sanjiva, Umit: Don't have transfer-coding negotiation.
David:    Can add that capability by using different bindings.
Asir:     See RFC 2616 14.39 for transfer-coding negotiation using 
          the TE header.
Where does this go?  Endpoint, binding, elsewhere?  Accepted (?), 
appearing on binding, operation, and input/output, only appears in 
component model for input/output.
Amy:      Can this also appear on faults?

Header property.
Optional element with required isOptional attribute.
David O:  Straw man proposal.  Use cases like Depth header.  
Amy:      Propose binding ADD to HTTP.
Sanjiva:  Fold issue into ADD issue.
Header property rejected.

Proposal: no accepts, header properties.  Accept cookies, 
          transfer-coding.  Accept AuthenticationRealm, 
          AuthenticationType with modifications to provide 
          fallback.  HTTP version property to be added.

Umit:     Question on optimization and negotiation.
David O:  Already accepted as an action.
David:    Propose to rewrite.
Jonathan: Could even be editorial task.
Hugo:     Some comments earlier on setting transfer-coding based on 
          URL.  Shouldn't we allow on endpoint?  Reaction: we're not 
          talking about where it appears, we're talking about whether 
          we accept the properties.
Jonathan: Does cookies stand out like sore thumb?
Umit:     Is SOAP layering to be discussed separately.
Answer: yes.

Consensus: accept five properties.

Jonathan: authtype on binding, operation.  version on endpoint, 
          authrealm.  
Objections: version goes on binding, because it influences other 
          things.  Cookies on binding only.  transfer-coding appears 
          on binding, operation, messages, but in component model only 
          on messages.
Hugo:     Objection, isn't this an optimization that ought to appear 
          on the endpoint?
Youenn:   Some servers don't support chunked input, do support output.

Jonathan: Making grid for location of properties.

EBOI = Endpoint, Binding, Operation, Input/Output
       (lower case=defaulting syntax).
E    AuthenticationType
E    AuthenticationRealm
 B   Cookies
 boI Transfer-Coding
 B   Version

Discussion of AuthenticationType location, starting with EBO.
Asir & Amy: endpoint only.
Umit:     Need it in binding for code generation.
Sanjiva:  This is plugin code, not generated code.  
Resolved to place only on endpoint.

Transfer-Coding discussion: optimization, belongs on endpoint.  
Youenn:   Some servers need ability to distinguish between input and 
          output.  
Paul:     What's use case?
Youenn:   Repeats that servers do distinguish between input and 
          output.  Argument about whether chunked is universally 
          supported or not.
Hugo:     Optimization, on endpoint.
Youenn:   Need in and out separation.
Amy:      Server supports or not.
Straw Poll: endpoint only versus boI.  Endpoint: 5.  boI: 5.
Second straw poll: 6 to 4, boI.

Argument about location of Cookies property.
Roberto:  Place Cookies on endpoint rather than binding.  
Sanjiva:  This makes no sense, it will never happen that way.  
Endpoint level: 2.  Binding: massively more.

RESOLUTION: add http:authenticationType, http:authenticationRealm
            to endpoint, http:cookies and http:version to binding,
            and http:transfer-coding to input/output (with defaulting
            at binding and operation).
ACTION:   Editors to incorporate decisions into binding.

Drafting more editors.  David Orchard offers to join as editor of 
part 3.  Accepted as editor.  Philippe has resigned as editor.  
Hugo available as support and backup.

-------------------------------------------------------
  - Issue closures:
    + Issue 165: Adding HTTPS support [30]
    + Issue 147: HTTP binding uses static content-type header [31]
    + Issue 55: Define binding to HTTP headers [32]
    + Issue 56: Define means to specify an authentication
                requirement [33]
    + Issue 164: Support for HTTP chunking and other HTTP 
                 options [34]

 [30] http://www.w3.org/2002/ws/desc/2/06/issues.html#x165
 [31] http://www.w3.org/2002/ws/desc/2/06/issues.html#x147
 [32] http://www.w3.org/2002/ws/desc/2/06/issues.html#x55
 [33] http://www.w3.org/2002/ws/desc/2/06/issues.html#x56
 [34] http://www.w3.org/2002/ws/desc/2/06/issues.html#x164

RESOLUTION: Close issues: 165, 147, 56, and 164 as addressed by this
            proposal.  Leave 55 open until we get to ADD.

Next meeting: 8:00 Friday morning.

12:00 Adjourn

Received on Tuesday, 25 May 2004 01:03:52 UTC