Minutes, 19 May 2004 WS Description FTF

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

-------------------------------------------------------
Wednesday 19 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.

Phone (part of the day):
 Ugo Corda              SeeBeyond
 Yaron Goland           BEA Systems
 Jean-Jacques Moreau    Canon
 William Vambenepe      Hewlett-Packard

Regrets:
 Tom Jordahl            Macromedia
 Hao He                 Thomson 
 Kevin Canyang Liu      SAP

Observers:
 Marc Goodner           SAP
 
scribe: Jeff
-------------------------------------------------------
09:00 Introductions and logistics
    - Assignment of scribes
        Jeff Mischkinsky (1), Roberto Chinnici (2), 
        Amy Lewis (3), Youenn Fablet (4), Sanjiva Weerawarana (5)
    - Agenda bashing

Part 1 and 2 -- we never quite hit zero bug bounce, but on hold 
for the moment -- about 10 issues -- probably deal with in 
telecons

Part 3 - get to zero issues - or at least plan for each issue

The usual getting the network going.

Random discussion about schedules, magical person month myths, etc.

Tentative last call june/july. Revisit later in meeting.

-------------------------------------------------------
09:15 Media Type Description Note [2]
    - review status, open issues [3, 4], content
    - raise issues, next steps
    - Goal is to approve pub as Working Draft

  [2]
http://dev.w3.org/cvsweb/~checkout~/2002/ws/desc/media-types/xml-media-t
ypes.html?rev=1.4&content-type=text/html;%20charset=iso-8859-1
  [3] http://www.w3.org/2002/ws/desc/2/06/issues.html#x161
  [4] http://www.w3.org/2002/ws/desc/2/06/issues.html#x162

Umit presented the current Media Type proposal.

Q: What happens when there is a mismatch between expected and 
mismatch?

Declare a ws that accepts a range of media types, but the actual 
message sends a media type out of the range.
Umit: assumption is that this group may need to define faults for 
error codes.
Discussion about whether we need to do this. This can't be 
handled via schema validation.

Issues:
mt1. possible error conditions: mismatch between value of media 
     type attribute and pattern -- says nothing about the data 
mt2. possible error conditions: mismatch between the media type 
     attribute and the actual data 
mt3. Is acceptMediaType the right name for the attribute.
     valid?, expected? permitted? emitted? (suggestions) 
mt4. where should appInfo go -- on the type and/or element?
mt5. remove or describe fully multipart and message -- i.e. the 
     composite types 
mt6. acceptedMediaType should be able to be a list 
mt7. Consider changing name from mediaType to contentType 
mt8. Would like more examples:
     e.g using a static type -- i'm always going to use an 
     image/jpeg. What would that look like?
mt9. Explain why this proposal is limited to base64encoded?
mt10. Explain why */* AND absence means this is opaque 
      application data (i.e. application/octet-stream.
mt11. Pattern includes use of priorty -- either explain 
      relationship or get rid of 
mt12. How do annotations show up in component model? (currently 
      limited to a "binary information element")

Jonathan raised question of whether this proposal could be more 
generally applied to base64 attributes. Consensus seemed to be 
that's going too far our purposes.

Question as to timing. David observed that this is de-coupled 
from the last call, and that this will be note. We do however 
have to coordinate with XMLP.

Issue mt5 Proposal: remove composite types
    *** UNAN accepted

Issue mt3 Proposal: rename acceptMediaType to expectedMediaType
    *** UNAN accepted

Issue mt6 Proposal: make expectedMediaType a list
    *** UNAN accepted

[ACTION: Media type editors to implement these resolutions prior to
publication.]

Plan -- umit to communicate to XMLP the above issues and 
resolutions.

[ACTION: Umit to communicate to XMLP the above issues and resolutions.]

Take up when to publish thursday or friday.

10:45 Break     ----------------------------------------

scribe: Roberto
-------------------------------------------------------
11:00 Review of Part 3

We took 30 minutes to individually review the latest part 3 draft.

The review identified the following issues:
[179] put and delete need to be added (Hugo) 
[180] inconsistent propagation of soap:header/module and F&P (Roberto) 
[181] bind to other protocols (JJM) 
[182] defaultMEP inheritance - syntax or model? (Marsh) 
[183] wsoap prefix (Sanjiva) 
[184] MTOM serialization into SOAP body (Ugo) 
[185] eliminate wsoap:header (Sanjiva) 
[186] interaction between wsoap:header and wsoap:module (Umit) 
[187] interaction between MEPdefault and webMethodDefault (Youenn) 
[188] wsoap:address vs http:address (DaveO) 
[189] binding message content to URI (DaveO) 
[190] layering of SOAP webmethod on top of HTTP binding (DaveO) 
[191] relationship between SOAP MEPs and WSDL MEPs (Hugo) 
[192] 2.4.1 "increasing specificity" -> "decreasing..." (Amy) 
[193] header declaration at different levels (Youenn) 
[194] why interleave wsdl: and wsoap: elements? (Glen) 
[195] property value merging (DaveO) 
[196] f&p/module at operation level vs input/output message level (Asir)

-------------------------------------------------------
11:30 Issue 72: MTOM support [5]
    - Jean-Jacques' proposal for @mediaType, @reinsert [6]

  [5] http://www.w3.org/2002/ws/desc/2/06/issues.html#x72
  [6] http://lists.w3.org/Archives/Public/www-ws-desc/2004Mar/0295.html

Marsh:    Is "MTOM serialization into SOAP body (Ugo)" all that is left
          to do? What do we need to do to indicate that a client needs
          to use MTOM serialization?
Glen:     Isn't there a header already defined in MTOM?  First of all,
          the media type will be different, and that's going to appear
          in WSDL as a flag.
Marsh:    What should the flag look like?
Glen:     Many ways to do it: an extension, a property, a full new set
          of bindings.
Amy:      What we do should be reusable; e.g. an extensibility 
          attribute of type anyURI to indicate the serialization.
Glen:     Why not use a feature?
Amy:      It's overkill.
Glen:     No, it's the same amount of work.
Marsh:    Then what are the conformance requirements? the expectations
          may be different for features and attributes.
Amy:      You can mark the feature as required.
Marsh:    As a user, I'd like to find an appendix in the MTOM/SOAP 
          specs that tells me how to enable it in a description.
Glen:     I know that MTOM is a feature, but we should confirm that 
          MTOM+XOP is a feature.  Then all it takes to enable SwA is 
          to write a wrapper feature for it (but that's out of scope 
          for the WG).  MTOM defines the "HTTP transmission 
          optimization" feature.

RESOLUTION: We'd like to describe MTOM availability using our feature
            mechanism and we need to coordinate with the XMLP working 
            group.
RESOLUTION: Close issue 72.

ACTION: Glen to write an example of expressing MTOM in WSDL using f&p 
        and send it to the XMLP WG.
ACTION: Editors to include in the primer an example that uses MTOM.


-------------------------------------------------------
11:45 Issue 96: Intermediaries [7]
    - Jean-Jacques' proposal for @mustUnderstnad, @relay [6]

  [7] http://www.w3.org/2002/ws/desc/2/06/issues.html#x96

Glen:     Certain attributes on wsoap:header are only useful when 
          describing intermediaries e.g. @mustUnderstand on a header 
          addressed to a notarization intermediary, because I want 
          to make sure that if there is such an intermediary it 
          will do the right thing.
Amy:      Don't you need these attributes for modules too?
Glen:     Not necessarily.
Amy:      It comes back to the "let's get rid of wsoap:header" 
          discussion.  Are we going to invest in wsoap:header?
Marsh:    If we remove wsoap:header, do we remove the ability to 
          describe intermediaries altogether?
Glen:     It'd be harder to do the same thing with modules, it would 
          affect the module specification.
Amy:      Your module specification should take that into account 
          already if there are multiple roles.
Marsh:    If we remove wsoap:header, isn't someone going to write the 
          add-a-header module?
DaveO:    Yaron did, it's ADD.
[discussion on how it could be done with wsoap:module only, but that 
seems to require nesting of properties under modules.]
Glen:     A module that uses five headers would define five 
          independent mustUnderstand properties, if needed.
Umit:     If the tweakability is not defined in the module I want to 
          use, I have to define my own module. But today with 
          soap:header it's a lot simpler.
Glen:     Example of two related headers, "challenge" and "response"; 
          in general, determining the tweakability points is hard.
Marsh:    And for a user it would be even harder.
Amy:      Strawman:
          <wsoap:module mustUnderstand="list of QName" 
                        role="list of pair {QName, QName}"/>
Glen/Youenn: Lists are not good enough, the rules are too complex.
Marsh:    Couldn't we address the simple cases and leave the hard 
          ones to the modules?
Amy:      What is the common case?
Glen:     For WSRM, the common case is the complicated one; for WSS, 
          the common case is simple.
Amy:      Can we expose a simple mechanism that works in common cases?
Glen:     In the simple case, wsoap:header is not bad.  Or use an 
          anonymous module.
Amy:      But modules don't work for HTTP, only SOAP.
Glen:     It's important to have wsoap:module, because they are in 
          the SOAP 1.2 spec; there are two other issues: is it 
          important to be able to specify generically headers and 
          set attributes on them? and if we do, can we tweak the 
          module syntax to do it or should we stick to wsoap:header?
Umit:     But aren't we making migration harder?
Marsh:    If I want to add a new header, I can with wsoap:header 
          without forcing me to update my processor (to understand 
          a new module and process it correctly).
Ugo:      If there are multiple intermediaries, is there only one 
          WSDL file or several ones?
Glen:     The endpoint in the WSDL file is what the client talks to; 
          that WSDL may contain knowledge about some intermediaries.
Amy:      But if it has a description, it's a service, it cannot be 
          "just" an intermediary.
DaveO:    Analogy with HTTP; in WSDL, interfaces are not constrained,
          so we cannot constrain intermediaries and we should allow 
          all of them to be described.
Glen:     Distinction based on whether the client is aware of an 
          intermediary.
DaveO:    HTTP makes that distinction too (gateway and proxy, 
          perhaps?)
Marsh:    Are there any use cases we want to rule out?
Ugo:      You are focusing on the client side, the traditional use of 
          WSDL.
Amy:      Disagrees, we're focusing on the contract for a service.

12:30 Lunch     ----------------------------------------

13:30 Intermediaries (cont.)

back form lunch, discussion continues
Enumerating the possibilities:
1) keep wsoap:header and add @mustUnderstand, @role, @relay, @reinsert
2) add @mustUnderstand and @role to wsoap:module (for simple cases) 
Amended the wsoap:module proposal to rename @mustUnderstand -> 
@setMustUnderstand and change @role's type to be a list of 
{QName, uri}

Glen:     Anonymous module proposal amounts to giving a choice between
          using @uri or @setMustUnderstand/@role, i.e. if @uri is 
          omitted the module is anonymous and the other attributes 
          must be present.
Amy:      Don't understand the direction this is going, prefer to use 
          properties to do that.
Marsh/DaveO: Essentially ADD does the same thing in the abstract, and 
          then it trickles down to the SOAP binding.
Amy:      Except that it'd have to be amended to make headers appear 
          directly under soapenv:header.
DBooth:   what would Tom say?
Roberto:  wsoap:header is direct, understandable and it works, so 
          let's just do that.
Hugo:     I like the first form, but maybe we don't have the tools to 
          use it, and we should go with the second one.
Asir:     Likes both, would like wsoap:header to be under wsoap:module.
Glen:     There is an elephant in the room, i.e. that you need to 
          understand the semantics to use headers effectively, the 
          data definition alone is not enough.
Marsh:    (describes the case of application-specified data)
Allen:    Then we're saying in most cases we got just the illusion of 
          simplicity.
DBooth:   Likes to use existing features, like f&p, to solve the 
          problem, if possible. Cringes.
Glen:     Another proposal: come up with a convention for property 
          names made available by default by every module to tweak 
          flags on the headers (supported by those modules).
Roberto:  How is that simpler?
Glen:     Avoids additional syntax.
Roberto:  In the wsoap:header case, the syntax matches the concepts, 
          so it's simple for users.
Prasad:   Without a module wrapper around a property, we preclude 
          having different modules use the same header.
Amy:      +1 on Prasad's comment.  Would like to get rid of one of 
          the constructs, wsoap:module or wsoap:header.
Glen:     We need to keep both the simple and the complex cases in 
          mind.
Umit:     The most general one is features.
Glen:     There is a reason for the existence of features, bindings, 
          modules.  XMLP wanted to enable naming the semantics that 
          HTTP (say) provides natively in an abstract way, so that 
          equivalent functionality could be provided via SOAP 
          modules (in the SOAP world).  An abstract feature is a 
          kind of interface; a binding implements a feature.  
          Modules bring multiple headers together and implement one 
          or more features.
Umit:     Maybe then the features in WSDL are different from those 
          in SOAP.
Glen:     No, at the abstract level there is no difference.  Having 
          separate bindings and modules in WSDL makes it easier to 
          add the support for certain features to a binding, without 
          requiring a new binding.
Umit:     We could add an attribute to a feature saying "use module 
          foobar".
Amy:      Agrees with this direction.
Glen:     Disagrees.
Marsh:    As we keep talking about this, the scope of the 
          conversation is widening more and more.
DaveO:    Question about the relationship between bindings/modules/
          features/properties in SOAP and WSDL, can they be brought 
          together?
Glen:     Features and modules are the same in WSDL and SOAP.
DaveO:    Are properties the same too?
Glen:     Yes.  (drawing a diagram) a module implements zero or more 
          features.  The *specification* for a module will list the 
          features it implements.
DaveO:    This apparent complexity is necessary because we have 
          extensibility in terms of MEPs, protocols, etc.; if we had 
          stuck to request-response HTTP, there wouldn't be a need 
          for it.  Another example is correlation between request 
          and response, that (in general) needs to happen at the 
          SOAP layer.  So if the world agreed to use, say, 
          WS-Addressing to do correlation, we wouldn't need a 
          correlation feature.
Glen:     #1 yes, #2 no, because if you go there you violate all the 
          assumptions that were made in creating web services.
Marsh:    We are back to redesigning SOAP now.
Glen/Sanjiva: When you see wsoap:header, either your infrastructure 
          recognized the QName there as, say, a security header (and 
          then it's not going to change the application), or it does 
          not, but then the application needs to know about it; the 
          idea is that if anything can affect the application 
          interface, it should be in the abstract.
Marsh:    Then you're saying it's either totally in the application 
          or in the infrastructure.
Paul:     But the case of headers with a role attribute is different, 
          because they go to an intermediary, not the application.
Glen:     Even if the header is destined to an intermediary, somebody 
          has to put it in there.  The ADD feature describes the data 
          being passed in the abstract.
Paul:     I must be able to describe existing interactions that use 
          wsoap:header.
Roberto:  If the application has to set properties somewhere, it 
          doesn't make any difference if the WSDL used a wsoap:module 
          or a wsoap:header.
Umit:     Are we back to the time when we had a headers="..." 
          attribute on an input message?
DaveO:    The problem is that schema doesn't give us enough 
          functionality to do what we want, hence the need for ADD.
Sanjiva:  The SOAP binding says that the contents of the body must be 
          the element specified in the abstract.
Youenn:   If you define a headers attribute you encourage people to 
          use it.
Roberto:  Not having the headers attribute makes the cost of creating 
          new bindings lower (one less requirement to support).
Marsh:    Do we need to reopen the whole issue?
Sanjiva:  No, the current issue is only at the SOAP binding level.
DaveO:    We could define a soap module that allows inserting a 
          header and make wsoap:header syntactic sugar for it.
Glen:     Pull out wsoap:header now and see if we need it.
DaveO:    Easier to take stuff out at last call than adding it in.
Marsh:    For the specification, the other way is better.
Roberto:  We need to cover both uses of soap:header in our spec: in 
          the abstract, that's ADD, at the SOAP level it would be a 
          standard module that can be used to insert a header.
Paul:     Agrees.
Marsh:    Anybody opposed to removing wsoap:header, with the 
          understanding that we will define a module that allows 
          headers to be inserted (perhaps using the ADD) no replies?
Glen:     Everyone needs to understand that by doing this we are 
          pushing handling of role/mustUnderstand to module writers.
Sanjiva:  Isn't using role/mustUnderstand in ADD at the abstract 
          level a SOAPism?  Proposal: the ADD feature only declares 
          the QName of the element; then the default binding rules 
          for SOAP will make that into a header, without requiring 
          a module; finally, mustUnderstand/role can become 
          properties to be used in the SOAP binding.
Glen:     Friendly amendment: define a SOAP module anyway, don't 
          default it.
Roberto:  Objects to removing soap:header unless we provide a 
          standard way to insert headers at the binding level 
          discussion... if the ADD and property merging issues are 
          solved, then we can eliminate soap:header without losing 
          functionality.

RESOLUTION: Close 185 by removing soap:header
RESOLUTION: Close 186 as obsolete
ACTION: Editors to remove soap:header.

Add issue 195 for property value merging; merge 193 and 195, since 
they are related. [Previously added.  193 closed later on.]

15:30 Break     ----------------------------------------

15:50 Discussion of Issues opened this morning

scribe: Jeff
-------------------------------------------------------
Issue 181: bind to other protocols (JJ)
    Editorial/descriptive glitch --  drop the word "only" from 2.2.2 
    SOAP Binding Component and describe what happens if a different 
    uri is used, but it MUST be compatible with wsdl soap binding
    Accepted -- UNAN

RESOLUTION: Close issue 181 by dropping the word "only" from 2.2.2
    SOAP Binding Component and describe what happens if a different
    uri (which must be compatible with the wsdl soap binding) is 
    used.
ACTION: Editors to fix 2.2.2 to allow other protocols.

-------------------------------------------------------
Issue 196: Module operation at operation level vs input/output level

RESOLUTION: no objection to CLOSE NO CHANGE

-------------------------------------------------------
Issue 180 and 193 -- related

For a given interaction, a module is either present/not present and 
required/not-required.

Question is how to merge when the "tree" is collapsed. Closer to leaf 
overrides, with exception of required-ness. Amy wants to be able to 
turn off required-ness and availability, without pushing all the info 
"down" the tree, which the current rule requires (so to speak :-).

Mechanism -- default-<attr>value applies at a particular level and 
<attr>-value for particular instances at a level.

How are modules connected to interface? Not directly. If a feature is 
required in the abstract feature, then a module which implements the 
feature is not required.

[Conversation is more complicated than can be captured by the poor 
scribe in a linear fashion typing at finite speed.]

Sanjiva -- can have rules for how modules are combined which are 
different from combining features and properties.

Stwapoll: Who believes it is important to be able to shut off 
required and availability
    4 - yes 8- no

Amy registers objection that this is ugliness and treating req/avail 
as special cases in this way will be confusing.

Sanjiva Proposal: a module has 2 attr, a uri and req flag and if have
more than one module with the sam uri in scope then resolve by going 
up the tree - msg->op->interface. (nearest enclosing scope wins -- 
i.e. std lexical scoping rules in block structured programming 
languages).

Glen observes that this is different from what's in features and they 
should be the same.

Proposes that if we adopt sanjiva's proposal, then we should also 
change the rules for features.

EG: soap module is required at binding level -- then within operation
i can turn that off. is this ok?

Q: a. define a color=red at interface
   b. define color=red at msg level 4 times

Is there a difference in semantics? There could be a difference in the
semantics if the module takes into account at what level it appears. 
Not clear that the spec accurately says this. (editors will check)

RESOLUTION: Both Proposals are accepted UNAN
ACTION: Editors to make propogation of modules and f&p use the
        nearing enclosing scope.

NEW ISSUE: 197 Don't override interface features that are required in 
binding (umit)

-------------------------------------------------------
Issue 182 - defaultMEP inheritance-syntax or model?
    Is this pure syntax or is there a semantic implication?

Should be pure syntax, component model mapping is wrong in spec. Also 
true for webMethodDefault and defaultMethod in HTTP binding.

RESOLUTION: Change component model to remove default* properties,
            use mapping from syntax instead.
ACTION: Editors to fix component model to remove default* properties,
        use mapping from syntax instead.

18:00 Adjourn

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