*DRAFT* W3 Forms F2F (Hawthorne) Day 3 June 15, 2007

* Present

Steven Pemberton, CWI/W3C
John Boyer, IBM (chair)
Charlie Wiecha, IBM
Uli Lissé, DreamLabs
Leigh Klotz, Xerox (minutes)
Keith Wells, IBM
Nick van den Bleeken, Inventive Designers
Roger Perez, SATEC
Mark Birbeck, x-port.net (remote)

* Agenda

http://lists.w3.org/Archives/Public/public-forms/2007Jun/0031.html

* Previous Minutes

http://lists.w3.org/Archives/Public/public-forms/2007Jun/0041

* Specify meaning of setfocus to controls that will soon exist

http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Actions?id=19

John Boyer: We can say it doesn't work; it's my issue. Or we can say what it means. In the second block of markup, those forms don't exist until the xforms-refresh happens. Maybe you have to call rebuild/recalculate/revalidate/refresh to get the setfocus to work properly. But what's going wrong is that the setfocus has the effect of setting the index to the new row of data, in the understanding that the focus will be set to the new control for with the newly-created node of data. I've basically stuck a setfocus in here to be irritating. So what is the behavior of that setfocus supposed to be? In the past, in my implementation, we've had this view of setfocus as being a deferred behavior: it doesn't set the focus right now, but it records a record of what should get the focus on the next xforms-refresh; that's the way we've implemented it. As a result of that, this markup works in the way you'd expect it. The element indicated by I2 in the new row of data gets the focus, but that's because of the way we've implemented it. In the repeat case, the indicated control doesn't exist yet.


<trigger>
    <label>Send me to I2</label>
    <setfocus ev:event="DOMActivate" control="I2"/>
</trigger>

<repeat id="R" nodeset="a/b/c">
    <input id="I1" ...> ...</input>
    <input id="I2" ...> ...</input>
</repeat>

Uli Lissé: Would it help to set the index only on the refresh. The answer is no... another round of rebuild/recalculate/revalidate/refresh and then it would work.
Mark Birbeck: Another option is that the equivalent control retains focus and it would achieve the same effect.
John Boyer: ...
Mark Birbeck: ...
John Boyer: That would be a big change.
Mark Birbeck: Maybe we should defer events by class, in the future.
John Boyer: I deferred the dispatch of the event. When I run setfocus, instead of dispatching the event, it makes a record of the control that should be receiving the focus and the dispatch happens during an XForms refresh.
Mark Birbeck: That's special-case behavior. There are other action handlers that could do that. In FormsPlayer, Paul deferred all messages to the end of the handler originally.
John Boyer: That would be increasingly wrong with @if in XForms 1.1. Toggle is another one that manipulates the UI. Message doesn't manipulate the UI though.
Mark Birbeck: If you have output/value[x] then you need the whole thing completed first.
John Boyer: I remember that a couple of years back; the discussion at that time led to the creation of message creating the message text at the time the message occurred, so that the message behaved as it had just been created, so it would get the latest models in the output. I don't know if we've gone off and said that in the spec but maybe we should. One proposal is to say we change this by fixing setfocus, toggle, and setindex as deferred behaviors. That's a strawman. Is there a way to knock that down, some way that causes a problem?
John Boyer: Let's start with setindex.
Uli Lissé: setindex will work.
John Boyer: In this insert case, suppose you had a insert node followed by a nested repeat.
John Boyer: ...
Mark Birbeck: How about having any of the UI-related force a refresh force the deferred-update to kick in.
John Boyer: We just did that for submission.
Leigh Klotz: For recalculate.
John Boyer: That's round two; that feels good.

Resolution 2007-06-15.1: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Actions?id=19 , the setfocus, toggle, and setindex actions will run the actions indicated by the deferred-update flags (which will clear the flags).
John Boyer: There is no degradation in performance in this use case, but this is a rational one.

Action 2007-06-15.1: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Actions?id=19 , John Boyer to fix the setfocus, toggle, and setindex actions to run the actions indicated by the deferred-update flags (which will clear the flags).

* <setvalue/> XPath evaluation context improvements

http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Action?id=27

Steven Pemberton: ...
John Boyer: At a minimum he wants a way to change the evaluation context from what it currently is. The whole issue of ref setting the evaluation context seems to have caused nothing but trouble.
Steven Pemberton: So value is in the context of ref.
Mark Birbeck: I remember whichever way you do it, there are use cases you can't do. In the end that's why having both a context and a ref is what we needed. The thing he's proposing here I'm sure you then have a problem with. I can't remember it. I think it's the individual items.
Uli Lissé: repeat
John Boyer: It's becoming clearer to me, if we're willing to let of of a principle to which we have so far held, fast. We often try to make it possible to write the same thing two ways and being equivalent. We have the same issue in XForms binds, but sticking to setvalue: let's assume the setvalue action could have a child element named value. Right now you have a value attribute. If you tried to add the context attribute to the setvalue, it's applied before the ref.
Charlie Wiecha: Why before?
John Boyer: Right now it's before nodeset of insert and delete, and it overrides, so it happens first. But if we could envision


<setvalue ref="abc">
  <value context="..." value="."/>
</setvalue>

John Boyer: The thing we have to let go of is that if you put a context in the value child, it's no longer equivalent to something that you could create with the pure attribute version.
Leigh Klotz: Because the order of evaluation is controllable?
John Boyer: Yes. We already decided that context will be applied more broadly in XForms 1.2.
Mark Birbeck: So in his example, how do you get out of the context node? For each item in the repeat he has a trigger and he wants to set a value for the relevant row. There's 20 different values. ref="abc" is that fruit equivalent and context needs to get to that row of the repeat.
John Boyer: That's a separate problem; we need the evaluation context from some ancestor of the UI. I recall that being part of the thread of the UI. So if we had some function that could get ahold of that, then we wouldn't need that.
Mark Birbeck: I proposed a function that took the number of levels.
John Boyer: I see. I kind of like the id-based one instead.
Mark Birbeck: So it's context() instead of . in this case.
Nick van den Bleeken: You probably only want to refer to parents; otherwise you refer to other parts of the document.
John Boyer: I see.
Uli Lissé: You could use current.
Nick van den Bleeken: No.
John Boyer: So we could add context() to add the in-scope evaluation context as modified by the context attribute, which isn't present on this element.
Mark Birbeck: The evaluation context of the current element, rather than the current attribute.
John Boyer: Right, We define the in-scope evaluation context as taking the context attribute anyway. So that's the proposal.
Leigh Klotz: I would like to see this. I prototyped this in Chiba and it seemed it would work.
John Boyer: So do you need to go up levels?
Leigh Klotz: I did it with repeats only and needed the nested stuff so I did an ID.
John Boyer: I see the need as well because of group inside repeat.
Uli Lissé: Yes.
John Boyer: So context() would return the immediate element and context with a parameter would take the id and give you the context node for the row of the repeat you're on.
Mark Birbeck: ...
John Boyer: Yes, but in this case the trigger doesn't have a ref so it inherits the correct node, but if you imagine the same repeat with an intervening group where you want to get to the repeat node but there's one child down for some reason, it's probably easier to refer to the id's of groups or repeats.
Mark Birbeck: The first use case is very common. It's very easy; instead of getting it from ref, you get it from the parent above. Starting to get context from events anywhere else in the document depends on how you've implemented your processors.
John Boyer: I'm realizing that if I tried to write the markup in my head it doesn't turn into a real use case. What if you had the same setvalue inside an xforms:input. The input is guaranteed to have a ref and will change the context. But an input inside a group, if I have this problem, as long as I can get to the context of the immediate container (the input) it's often just .. to get the context of the group that contains the input. The UI often matches the shape of the XML. Maybe the need for the parameter will not surface as often as we are thinking.
Mark Birbeck: You can often solve the problem using select. Using repeat gives you more flexibility in the form layout. It's an interesting problem; without this you cannot implement a select using repeat in xforms.

Resolution 2007-06-15.2: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Action?id=27 we add the context() function to return the in-scope evaluation context for the element containing the attribute containing the xpath expression.

Action 2007-06-15.2: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Action?id=27 John Boyer to add the context() function to return the in-scope evaluation context for the element containing the attribute containing the xpath expression.

* Aaron Reed Issues

http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Actions?id=47

John Boyer: There are 16 editorial issues which we accept. There are 3 others.

Action 2007-06-15.3: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Actions?id=47 John Boyer to handle 16 editorial issues.

** Delay Attribute

John Boyer: We have a delay attribute on the dispatch action; the default is 0. Dispatch acts the way it does now. If the delay is set to some positive value, then the display is a number of milliseconds. Aaron says that delay=0 would be the shortest delay, non-zero.
Charlie Wiecha: Yeah.
Steven Pemberton: So we have to say there's a difference between delay=0 and nothing at all.
Leigh Klotz: It's going to take time anyway to get through the attribute.
John Boyer: The send message and post message in Windows API parlance...The event immediately captures and bubbles before returning control, whereas this would say to post the message immediately.
Leigh Klotz: Queue it? That would be asynchronous.
John Boyer: Finish the action you're on. Move the cursor, do UI.
Keith Wells: Isn't this an implementation consideration?
John Boyer: He's probably not willing to wait 1ms.
Leigh Klotz: That's what I asked, but is this asynchronous?
Nick van den Bleeken: If delay=0 is synchronous and the rest are asynchronous? If that's not the same?
John Boyer: So in this case, it's complete processed before the second insert:


<action
 <insert
 <dispatch
 <insert

John Boyer: But in this case it would be queued

<action
 <insert
 <dispatch delay=<code>0</code>
 <insert

Uli Lissé: 0 means 0, no delay.
John Boyer: If the only way I have to say asynchronous is delay=1.
Leigh Klotz: Is he asking for an asking asynchronous attribute?
Charlie Wiecha: Rather than overloading delay?
John Boyer: That's a more interesting way of looking at it. Didn't we add an asynchronous attribute to submission? We probably only need it on dispatch. Is this a future feature? Or a current feature?
Leigh Klotz: Before we say current or future we need to say whether we have asynchronous, synchronous, or both now. We say delay=1000 does the second insert happen immediately?
John Boyer: Yes, so it's asynchronous.
Leigh Klotz: So we have the asynchronous feature already, it's just misspelled.
John Boyer: So what about delay=0? Does it force asynchronous?
Leigh Klotz: It's an edge case.
John Boyer: How about delay takes a positive argument and asynchronous is separate; then you would never have delay=0.
Leigh Klotz: So we add an asynchronous attribute to take over the case of delay=0.
Steven Pemberton: What's wrong with the absence of the delay attribute being synchronous?

Action 2007-06-15.4: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Actions?id=47 number 3, John Boyer to change so that delay="" is the default and means synchronous dispatch with no delay; and delay="0" is asynchronous, and delay as a positive integer is a delay as currently specified.

** @submission description

http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Actions?id=47 issue 16

Steven Pemberton: If you look at his trigger myTrigger, the send does the default submission in the second model. Then he has an html button that he then listens on; if that happens, then the handler for that is the send withing the trigger. Is that send still talking to the same model?
Charlie Wiecha: I see. Is it statically or dynamically scoped?
John Boyer: Is the second model.
Steven Pemberton: He says it should be the first model.
Charlie Wiecha: We have no runtime stack to carry that along.
Steven Pemberton: It's the same as if the send had the model on it.
John Boyer: Except there is no model, only submission and we made submission optional.
Mark Birbeck: It's like JavaScript closures.
John Boyer: It's a function invocation, not a macro.
Mark Birbeck: We'd have to say an evaluation context is set by the context.
John Boyer: So no change.
Leigh Klotz: I see; Aaron does not think that we have dynamic scope?
John Boyer: He wants a change in the feature.

Resolution 2007-06-15.4: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Actions?id=47 issue 16 we agree that the in-scope evaluation context is determined statically, by the lexical position of the handler definition, and so the secondModel default submission will be used.

** output and prompt

http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Actions?id=47 issue 19

John Boyer: Uniformly when we have the action create UI we expect it to be fresh and up to date. http://www.w3.org/TR/xforms11/#action-message Yes, we say it's created at the time the action occurs.
Leigh Klotz: I'll be cranky and say that static message and dialog are mostly useless. We should have dialog that can be styled and displayed inline.
John Boyer: So you vote for xf:dialog in XForms 1.2?
Leigh Klotz: And not to spend much time on this feature right now.

Resolution 2007-06-15.5: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Actions?id=47 issue 19 we decide to mirror message.

Action 2007-06-15.5: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Actions?id=47 issue 19 John Boyer to specify that the user interface for the prompt action is specified at the same time as message.

* insert and delete

http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Actions?id=51

John Boyer: Mark says it's too complicated.
Steven Pemberton: This is not the type of comment we want from an XForms expert.
Nick van den Bleeken: There were some cases where of the bullet points were unreachable.
John Boyer: What happened?
Leigh Klotz: I don't remember but I'm sure it's in the minutes.
John Boyer: It seems like there's a desire to have more actions that do more pointed things. We have insert and delete and it sounds like worked to look it up.
Steven Pemberton: Is it true that the current insert and delete are compatible?
John Boyer: Yes.
Steven Pemberton: That's a good thing. And we fixed the empty problem?
John Boyer: Yes, and that's not confusing. But we went beyond that and turned into generic DOM manipulators and that got confusing.
Steven Pemberton: But we do need to hand that. It's generic XPath.
John Boyer: The insert operation has historically operated over a collection of repeated elements; it had the definition of homogeneous elements. Now we've slipped down the slope to insert a "node" and any number of nodes, and the nodeset to specify them can span multiple parents.
Steven Pemberton: So Mark, if I try and summarize your position, would it be better if we tried to fix the insert empty problem and then created some new stuff?
Mark Birbeck: That feels right to me. And I think John said that. We have to define all the different scenarios (attributes, no attributes, etc.) But then you have to know that in the reverse direction: I want to insert an attribute, so what do I set for origin, etc.
John Boyer: Is some of that artificial or not? Is there more benefit to having actions that do the point operations? You'll still have to look up how to use those elements.

Charlie Wiecha: Can we simplify it later?
Steven Pemberton: Or avoid adding the spike?
Mark Birbeck: Or avoid deleting stuff later?
John Boyer: It's easier to do that though.
Mark Birbeck: Insert was more tied to repeat.
Leigh Klotz: What about leaving insert as is but defining a few use cases with easier syntax, as we do with send and dispatch?
Steven Pemberton: We used to do that.
John Boyer: No, we had them separate.
Leigh Klotz: So now there's a framework we can use.
Charlie Wiecha: A higher-level abstraction.
Mark Birbeck: Is it too much to tie insert to repeat and to re-introduce duplicate?
Leigh Klotz: And destroy. Mark, why do you want to re-introduce duplicate and tie insert to repeat?
Mark Birbeck: Because the nodeset ... is ...
Leigh Klotz: So would you want to rename insert to duplicate and have the old insert with the empty fix back, or do you want to rename split up insert into duplicate and insert.
Mark Birbeck: We should keep insert because it does everything.
John Boyer: We decided to keep insert before because duplicate was just about the same. But since then it's not just old insert, plus bug fix, plus duplicate. I'd love to go back to origin of the node and inserting one node and the magic context attribute to fix the empty nodeset issue.
Leigh Klotz: The original attributes I proposed for insert were simple but we had the problem with empty nodes and so it got harder. Adding stuff to insert goes back a long way.
John Boyer: Really we need to copy subtree from one place to another, not whole nodesets; we have loops.
Leigh Klotz: Does insert as described have implementation problems or is it just hard to understand?
John Boyer: No implementation problems.
Mark Birbeck: No implementation problems. It did take me two days to write something though. That's when we found the attribute problem with Paul.
Leigh Klotz: So we would keep the insert swiss-army knife and add a few syntactic sugar actions.
Mark Birbeck: The thing that worries me is that with insert and origin and nodeset, you can't recognize the patterns. You have to look at the context of the expression. If you had copyNodeFromOneTreeToAnother everybody would know what it does, but I don't suggest we go that far.
John Boyer: The duplicated node case context=element origin='some element' that's duplicating the node. What else could it be doing?
Mark Birbeck: I was saying that insert in general it's difficult to know what it's doing. I wasn't saying that that particular action is difficult to achieve?
Leigh Klotz: Mark, is there a list of a few things we can write as macros?
John Boyer: I think so, but what are they.
Mark Birbeck: On Leigh's point, setting or adding an attribute, could be done with setvalue. Or to duplicate or copy a node.
John Boyer: You don't need to use the nodeset attribute on the insert to copy a node. I don't think it's that complicated. Complicated things are complicated.
Leigh Klotz: Then maybe we just need a table of examples.
John Boyer: A few more. For sticking with insert and delete, it's like the sticking with the submission. When you get the new node you get xforms-insert. If you have new elements they should issue the same events, not new event types for that particular DOM mutation.
Nick van den Bleeken: It's hard to figure out what it does in border cases, though.
John Boyer: In some sense our defaults are too clever. Here's duplicating a node:


<insert nodeset="some/node" />

Steven Pemberton: That does seem a bit too clever.
John Boyer: It makes a copy of the node right after by the defaults of origin and at.
Mark Birbeck: That's absolutely right. You have to know the defaults.
Steven Pemberton: You have to look it up to work it out. But maybe nobody would ever write it like this.
John Boyer: Present company excepted.
Charlie Wiecha: This looks like it does what you want it to do.
Mark Birbeck: If all insert did was what it did before then this would be understandable.
John Boyer: A duplicate handler would have the same attributes.
Mark Birbeck: I think it would be easier to limit it to nodesets with duplicate.
Steven Pemberton: This reminds me of the the bad old days of the RT-11 OS with PIP. It did everything. A later version added extra commands there were just calls to PIP and was much easier to use.
John Boyer: That's what Leigh's been getting at. Add a couple of those.
Charlie Wiecha: Later on. We don't need to design them in the next four hours. Maybe in 1.2? People can design them somewhere else and we can import them.
John Boyer: I also just read repeat-index manipulation and withdraw my concern about it operating incorrectly.
John Boyer: Are there specific ones other than the duplicate case that we need to worry about? Do we just need better examples? Insert with context and origin, for example.
Charlie Wiecha: That might give people things to cut and paste.
John Boyer: Then we write new actions defined in those terms.
Charlie Wiecha: If there's low-hanging fruit...
John Boyer: Right now it's open-ended.

Action 2007-06-15.6: In #action-insert "Copying an attribute" example John Boyer to remove references to attribute ordering and add explanations to what the examples are doing (insert attribute, copy attribute if exists, etc.)

* Coffee Break

Charlie Wiecha: I'm not sure I agree that this is a problem to address in XForms 1.1 last call.
Steven Pemberton: It's a last call comment itself; we shouldn't go out the door with known problem, as we did with insert and empty in XForms 1.0.
John Boyer: This isn't a technical problem; you can do everything.
Charlie Wiecha: Maybe we make helpers in XBL outside the spec.
Leigh Klotz: That might work better than my tests with XSLT.

John Boyer: OK, I'll try to make a two-column table, and use the same instance data everywhere, and then have a documented pattern for how to do things.
Leigh Klotz: What about an example in the appendix instead if this is going to get bigger?
Steven Pemberton: I want to see it inline.
John Boyer: It's going to get smaller. Use just one instance?
Steven Pemberton: I'd say it's making clear to people how to copy from one place to another. It's got to be clear why to use context and why to use nodeset.
John Boyer: That doesn't have anything to do with switching instances; do I want to copy into the context node or copy relative to a sibling. Nodeset is used when you want to pick one of the children of a node and insert before or after that node. And context is used when you want to append or prepend a child inside a node.
Leigh Klotz: Want to add those two samples in the text?
John Boyer: I don't want to write the book.
Leigh Klotz: If you have these examples in a table those two sentences belong in the introductory paragraph.
John Boyer: Can everybody live with the fact that we defer creating new actions until XForms 1.2 and I'll just do a better job of examples?
Charlie Wiecha: I think this is a defer.

Action 2007-06-15.7: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Actions?id=51 John Boyer and Uli Lissé to create new descriptive example tables for insert and delete using one set of instance data. In general, nodeset is used when you want to pick one of the children of a node and insert before or after that node, and context is used when you want to append or prepend a child inside a node.

* prompt Action Element

http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Actions?id=74

John Boyer: There are two camps. Those who say that xf:message is able to contain more markup and those who don't, based on the Schema.
Leigh Klotz: Based on interpretation of the Schema. And label has the same content model as message.
John Boyer: ...
Steven Pemberton: So what's the point of prompt? You can have triggers as well. You can have labels as well. So why not just change the content model of label?
John Boyer: And the prompt also sets up something that message doesn't setup. Whenever someone presses one it dismisses the prompt.
Steven Pemberton: TO use Leigh's wording, then it's a crock.
John Boyer: Then using message is a crock as well because you have to have a button to press.
Leigh Klotz: So why not add trigger to the content model of message and add a dismiss action?
Steven Pemberton: And why not allow any control action?
John Boyer: Then you're back to the the spelling problem.
Leigh Klotz: Then just call it prompt or dialog.
John Boyer: Nobody wants to write the text. So what you put it in the model-construct-done before the UI is setup?
Steven Pemberton: We have that problem with trigger.
Leigh Klotz: So say it can't go in the model.
John Boyer: If you have a repeat within the message or the dialog or whatever we call it, then the events that are targeted have to do a capture and bubble phase. So is everyone happy with what we've done with prompt, which is that it stops their propagation?
Leigh Klotz: Why?
John Boyer: The DOMActivate flows up and out and re-presses the button.
Charlie Wiecha: We spent a day working through this; I think it makes sense. It was intended a midway design point.
John Boyer: Nobody has worked out the spec for dialog. Nobody cares yet about the cases that break.
Leigh Klotz: So can we do what we did with repeat and switch and say that we think it's OK to put in other UI elements but we seek feedback.
John Boyer: Worse things have happened. That's better than using message. If people are happy with stop propagation of DOMActivate. But we have to stop propagation of all events out.
Steven Pemberton: I don't know. We don't want to stop value-changed.
John Boyer: It still does the capture phase.
Steven Pemberton: I can say that; we should. A save button that becomes relevant. You have to listen to that in some generic place.
John Boyer: Are there no technical problems introduced by letting it bubble up?
Steven Pemberton: I think only DOMActivate.
John Boyer: scroll-first and scroll-last for repeat? out-of-range? I think it should propagate unless we find a technical problem. With prompt I know it's only DOMActivate because we only have triggers. At least I believed that at the time. Now that I'm aware that you get xforms-value-changed events on a trigger if you reference something I'm not so sure anymore.
Leigh Klotz: Why is this different from group?
John Boyer: It goes into action handlers.
Leigh Klotz: Ah, so Orbeon's xxf:message is a peer to switch/case and you put it in the UI.
John Boyer: Then you don't get a window.
Leigh Klotz: I don't think people want an OS window. They want the fancy things people do with scriptaculous and other libraries to let them style exactly how the UI looks.
Steven Pemberton: Can't we already do this with group or switch and case?
John Boyer: ...
John Boyer: The other nice thing about prompt is that it can run during model-construct-done. You can read the triggers and read outputs.

Uli Lissé: http://sourceforge.net/projects/chiba and click "download chiba'
Steven Pemberton: So cancel has to copy the data to restore later.
John Boyer: Using insert.
Leigh Klotz: Yes.
John Boyer: Prompt is nice because you can use @if.
Steven Pemberton: Thinking of styling, you've got the main group and the dialog group. All this is doing is setting the background color.
Uli Lissé: It's transparency.
John Boyer: You can't press this. Oh it disappears.
Nick van den Bleeken: You may want normal relevant behavior though.
Leigh Klotz: You need two classes then for the group.
Nick van den Bleeken: It's complicated.
Steven Pemberton: So is the solution already possible and we just have to codify the pattern? The thing we've got adds new functionality such as catching triggers.
John Boyer: This is a group that is instantiated and asks the rest of the groups to be a zombie. It seems like it's possible to setup now.
Steven Pemberton: So we don't need prompt.
John Boyer: No, it can be in an action sequence and let the user interact with the action sequence. See this example.
Steven Pemberton: You can do this with group.
John Boyer: group. You can't do it during model-construct.
Leigh Klotz: I don't have much sympathy for doing UI operations before UI is setup.
Steven Pemberton: I think writing up the other thing with group is more important.
John Boyer: This is a perversely simple action. You can do 3 actions, then have a prompt, then have more actions.
Leigh Klotz: How?
John Boyer: It's all done in an an outer trigger; you write the first in the trigger and then display this (with setvalue and relevance) and then the rest there.
Charlie Wiecha: It seems like we're removing a solution for a simplified use case, which is the opposite of what we just did with insert.
John Boyer: The section also gives a section of a place to put the note for generalized dialogs.
Leigh Klotz: Or the note for asking implementors to try putting all UI elements in here.
John Boyer: As long as it isn't called message.
Charlie Wiecha: This does require implementors to do work.
John Boyer: Steven, can you live with prompt staying in and a note about using group/relevance.
Steven Pemberton: I'm not very happy; it's a bit kludgy.
John Boyer: It is limited to DOMActivate because the content model is trigger.
Leigh Klotz: No.
Charlie Wiecha: It says it stops any events, not DOMActivate.
Steven Pemberton: I'm definitely opposed to that because it breaks the save button.
John Boyer: There are no input controls. The xforms-value-changed event only goes to controls bound to the data.
Steven Pemberton: So you can change a value without it being notified to anybody?
John Boyer: Yes, because there's nobody listening.
Steven Pemberton: That's grotesque.
Leigh Klotz: If there's no controls bound to the node there's nobody to receive the value-changed event.
Steven Pemberton: This is very bad news.
John Boyer: If the user can't see it, is it really important that you set a dirty flag?
Steven Pemberton: If you do an insert the event goes to the instance so you can listen for it. If there's no generic way to listen for value-changed then there's something broken. It hadn't occurred to me.
John Boyer: Particularly if you can do it on an instance-by-instance basis.
Mark Birbeck: That's been broken for a long time.
Leigh Klotz: I think the problem is that the UI is inside the action. If it could pass a continuation outside to the UI and resume that would be good.
Charlie Wiecha: That's why it's so restricted.
John Boyer: Is it more broken than useful?
Steven Pemberton: One of the nice things with XForms is that it's device-independent.
John Boyer: Prompt does that; it reads the labels and gives you the triggers.

* Lunch

John Boyer: I'd say Steven's question is what does prompt do that message doesn't, and why isn't message sufficient. I provided the answer. It isn't the prettiest feature. We
Leigh Klotz: You can do the example in the spec with switch or group.
John Boyer: But not message.
Steven Pemberton: So why can't we do this with what we've got? What's it for?
John Boyer: It's for the simple case of "are you sure you want to do this?"
Steven Pemberton: That's all; it doesn't cover the example we saw on the screen.
John Boyer: We decided we already have that earlier but we might want in the future to make it easier in the future.
Steven Pemberton: While I appreciate easier authoring, I'm very reluctant to create a messy legacy.
John Boyer: There are lots of forms that need to ask a basic question and take an action.
Steven Pemberton: But it's just one of the use cases.
Leigh Klotz: I've argued for this use case before, and Kenneth did for us as well. I suggested opening the content model conditionally (like we did with repeat and switch) but I'm not sure we can do that. I don't see prompt as easily fixed.
Steven Pemberton: ...
John Boyer: ...
Leigh Klotz: ...
John Boyer: ...
Leigh Klotz: We need to capture writing up the example.

Action 2007-06-15.8: Steven Pemberton to write up example of using group to implement modal dialogs that are stylable by CSS and don't use OS windows.

Steven Pemberton: I also wrote up the value changed / save button. It argues for the value-changed to go to the instance as well.
John Boyer: When and where? We have proposed pretty much everything but instance.

John Boyer: What if we got rid of the sentence in prompt "More generally, this action stops the propagation int he bubble phase of any events that reaches the prompt event" and left only DOMActivate events. Then you can still do what you're describing.
Steven Pemberton: Sure.
John Boyer: Then the only hack is you don't hear DOMActivate. We feel we aren't going to go any further putting UI related things in actions.
Leigh Klotz: Why?
John Boyer: Because we have another way of doing that.
Leigh Klotz: We have another way of doing this too. That's the problem, drawing the line. This isn't enough for me and it's too much for Steven.
Steven Pemberton: It's both too much and too little.
Leigh Klotz: It doesn't hit my use case; maybe it hits yours but I don't see that it hits the sweet spot.
Charlie Wiecha: The problem is that we threw this in a year ago when XForms 1.1 was about to come out and we were going to do dialog.
John Boyer: I wanted to get a straw poll. Is Mark back? I think this is one of those prompt up/down.
Leigh Klotz: The argument for it is that although there are other ways of doing this, it is a useful case and easy to write. The argument against it is that it's got hacks piled on it and creates a legacy problem.
John Boyer: What are the hacks?
Charlie Wiecha: The propagation of DOMActivate.
Uli Lissé: What about ... events ...
John Boyer: Yes, so we'd have to keep the stopping the bubbling as well.
Steven Pemberton: I feel that if we start messing around with the event system, the generality gets lost.

Leigh Klotz: [writes example of using parallel action/*[@if] and toggle/case to implement state machine]. Then we can replace this.
Charlie Wiecha: So we can replace prompt with this section.
John Boyer: It should be a note. If we are going to yank this feature we really the note soon. Although I'd like to keep prompt, I'm definitely convinced that there are...I could live with taking it out, in the interest of compromise and such.
Mark Birbeck: I've never liked it.
Nick van den Bleeken: No strong opinion.
Steven Pemberton: Kill it.
Charlie Wiecha: [Thumbs down]
Keith Wells: [pull it]
Leigh Klotz: I would prefer to see it fixed, but I agree with Steven that it creates a legacy problem.

Resolution 2007-06-15.6: We remove the prompt action from XForms 1.1.

Action 2007-06-15.9: Steven Pemberton to write document about using parallel action/*[@if] and toggle/case to implement state machine.

Resolution 2007-06-15.7: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Actions?id=74 we accept and remove prompt.

Action 2007-06-15.10: John Boyer to remove prompt.

* Further Progress

John Boyer: We discussed during lunch doing triage. Keith (and others) will get an account and can add notes about which ones are editorial.

* Future Meetings

Steven Pemberton: Madrid, September 12th-14th, 2007.
Steven Pemberton: Cambridge, MA Tech Plenary, week of November 5th, 2007.
Steven Pemberton: Then three-month intervals? January, April, July.
John Boyer: The end of January is a conference for me.
John Boyer: Tech Plenary, Paris, week of October 20-25 (days TBD but may include Saturday).
Steven Pemberton: For Amsterdam, Queens Day is the Wednesday so we can't have 3-day meetings that week. The Web conference is April 21-25 in Beijing.
John Boyer: So May?
Steven Pemberton: XTech dates aren't set yet.
John Boyer: So do we need to know the exact day in May?
Steven Pemberton: April 5-10 is CHI.
John Boyer: How cold is Antwerp in February?
Nick van den Bleeken: It's freezing.
Charlie Wiecha: How about California?
John Boyer: That would have two North America and two Europe.
Leigh Klotz: I can host it. What's Victoria like?
John Boyer: It would be livable but California would be nicer.
Charlie Wiecha: Also Raleigh.
Keith Wells: I'll find out.

Action 2007-06-15.11: Keith Wells to investigate hosting a future F2F meeting.

Steven Pemberton: So February in North America (California or North Carolina), early May in Amsterdam, and mid-July in and Tech Plenary in October.
Steven Pemberton: So then Victoria in mid-July (week of July 14th).
John Boyer: July Good time to go. Do you want it earlier in July?
Charlie Wiecha: It's a little better to get something done after the 4th of July in the week after.
Steven Pemberton: We can bridge the weekend. Thursday-Friday and then Monday-Wednesday. That would be preferable for all of them since it only costs one weekend instead of two weekends.
Charlie Wiecha: OK.
John Boyer: So July 10-11 XHTML and XForms July 14-16.
Steven Pemberton: So that's XHTML May 1st.
Uli Lissé: That's labor day.
Steven Pemberton: We don't celebrate that in the Netherlands. So either May 1-2 and 5-7 or May 5-7 and May 7-9.
Steven Pemberton: So for February, 7-8 and 11-13.
John Boyer: How about the end of January, to avoid Valentine's day?

** 2008 Forms F2F

Proposed dates.
Date Location
January 31-February 1, February 4-6 Raleigh, NC or Palo Alto, CA (US)
April 1-2, April 5-7 Amsterdam (NL)
July 10-11, 14-16 Victoria, BC (CA)
October 20-25 Tech Plenary Paris (France)

Mark Birbeck: [irc] XHTML http://www.google.com/calendar/ical/is1t7cbu00vvd5h1ioft1nl19k%40group.calendar.google.com/public/basic.ics
Mark Birbeck: [irc] Forms WG http://www.google.com/calendar/ical/42pvpv3126jgbjccip85b7hiuk%40group.calendar.google.com/public/basic.ics

* This action has special deferred update behavior

http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Actions?id=84

John Boyer: We accept this.

Action 2007-06-15.12: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Actions?id=84 , John Boyer to change referenced sections.

* Remaining Issues

John Boyer: We will move on to the suggested issue triage. Are there any buckets?
Nick van den Bleeken: All the XPath ones are simple yes/no.
John Boyer: Do you want to accept them?
Nick van den Bleeken: Most of them are from Steven?
Steven Pemberton: I want to discuss the now() function.
Nick van den Bleeken: The others are just remarks of Steven.

John Boyer: Anyone feeling lucky on Submission? Someone want to take the bucket and run submission.
Leigh Klotz: Let's just go through as a group and mark them editor and I'll mark this out.

* Compound Document in Glossary

Resolution 2007-06-15.8: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Appendices?id=128 we accept.

Action 2007-06-15.13: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Appendices?id=128 we accept, John Boyer.

* Output

http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Controls?id=72

Leigh Klotz: CSS isn't required.
John Boyer: We can say something stronger.
Steven Pemberton: It's just the wording I don't like. It should say its default styling. Other don't. I think it should say that an implementation should display the validity state of values.
Leigh Klotz: Just like we say for non-relevant, we should also say that the implementation requirements should distinguish validity.

Resolution 2007-06-15.9: http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Controls?id=72 part 1 we accept that the wording for display:inline should be changed and added for all form controls (inline or block)

Action 2007-06-15.14: http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Controls?id=72 John Boyer to change the wording output so that display:inline should be changed and added for all form controls (inline or block)

Resolution 2007-06-15.10: http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Controls?id=72 part 2 so that there are implementation requirements for MIPs.

Action 2007-06-15.15: http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Controls?id=72 Steven Pemberton to change the spec so that there are implementation requirements for MIPs.

* mediatype element

http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Controls?id=73

Steven Pemberton: If we went back to the beginning we would have made these expressions XPath. We're retrofitting that decision. Let's not make that mistake again.
John Boyer: The mediatype subelement is a parallel to the mediatype element on upload. The output can use a parallel syntax to show someone.
Steven Pemberton: That much I understood.
John Boyer: The it's inconsistent syntax with the mediatype attribute on upload.
Leigh Klotz: Do we have value on mediatype?
Steven Pemberton: That's one step.
Leigh Klotz: Can't we just do that?
Steven Pemberton: Then I accept with reluctance.
Steven Pemberton: But @mediatype on upload is hard-wired.
Leigh Klotz: It would be nice to have that variable.
John Boyer: I agree. But that's AVTs.

Resolution 2007-06-15.11: We accept http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Controls?id=73 with modifications; we add a value attribute to output/mediatype.

Action 2007-06-15.16: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Controls?id=73 with modifications; Steven Pemberton to write spec text to add a value attribute to output/mediatype.

* select storage

http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Controls?id=88

John Boyer: This is going to take some time.

* select and blank value

http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Controls?id=90

John Boyer: Skip for now.

* Aaron issues

http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Controls?id=117

John Boyer: All are editorial except #27. It says "explanation"

Action 2007-06-15.17: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Controls?id=117 John Boyer to handle all except #27 as editorial and compose reply to issue.

Leigh Klotz: I think this is what Mark Birbeck does in FormsPlayer with the hover icon for showing. I don't think anybody ever does it.
John Boyer: Can we delete it?
Leigh Klotz: Ask Mark? Did Mikko's implementation do this?
Charlie Wiecha: Must is a strong word here.
John Boyer: We think this might be handy but we don't think it's a must.
Mark Birbeck: Yes, FormsPlayer does this but it's off in the licensed version. I've never read this though.
John Boyer: Everybody skips reading the common implementation requirements. We should remove both bullet points.

Resolution 2007-06-15.12: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Controls?id=117 #27 we remove the two referenced bullet points about "explanation."

Action 2007-06-15.18: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Controls?id=117 #27 John Boyer to remove two bullet points about "explanation" in http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Controls?id=117

* Clarify expectation of deleted-nodes property of delete

http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Events?id=18

John Boyer: We haven't agreed on this. You should be able to traverse up to the parent element from which they have been removed. They will have been detached from their parents but you should be able to go back up to their parents.
Leigh Klotz: Does the XPath data model support that?
John Boyer: David Landwehr said that the DOM supported this. The XPath ancestor axis is fine.
Charlie Wiecha: What's the use case? It seems a little dangerous.
John Boyer: The whole use case for knowing the deleted nodes is that for xforms-delete we used to get the parent elements from which the nodes were deleted rather than the actual deleted nodes. This got weird because...
Charlie Wiecha: It might be safer to add that to the event information.
Leigh Klotz: As a parallel track?
John Boyer: You would have to know which child went with each parent?
Charlie Wiecha: It seems implementation-dependent to do the other way.
John Boyer: So you use position.

Resolution 2007-06-15.13: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Events?id=18 we accept with modifications; instead of the half-detached behavior we propose a parallel event context value listing parents of deleted nodes, with positional correspondence.

Action 2007-06-15.19: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Events?id=18 John Boyer to write text to add we propose context property to xforms-delete listing parents of deleted nodes, with positional correspondence and close issue.

* initial sending of MIP events

http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Events?id=29

Steven Pemberton: I thought we discussed this already.
John Boyer: Maybe on the call.
Steven Pemberton: Works for me.
John Boyer: Except for xforms-value-changed and xforms-invalid.
Leigh Klotz: And with instance replace?
Uli Lissé: This one takes time.
John Boyer: Yes.
John Boyer: The spec doesn't say what to do. I believe it's wrong in the spec for relevant and irrelevant. Also wrong to send the xforms-value-changed events. Let's leave this open.

* xforms-compute-exception and xforms-binding-exception

http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Events?Id=36

John Boyer: Let's skip.

* Value changes upon instance replacement

http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Events?id=50

John Boyer: Skip.

* xforms-submit-error event

John Boyer: You want 4.4.20 and 4.4.21 to move to 4.5.

Action 2007-06-15.20: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Events?id=59 John Boyer to move 4.4.20 and 4.4.21 to move to 4.5.

* xforms-output-error event

http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Events?id=60

Steven Pemberton: So does first time mean first for the output?
John Boyer: Yes. But does it matter? Maybe the user agent should handle this instead and we just send the event.
John Boyer: You bind to the data and get the xforms-output-error event but you won't get any more as long as the output is bound to that data and the data doesn't change. If the data or binding changes you get another one.
Steven Pemberton: So first is wrong.
Nick van den Bleeken: Then it can happen multiple times.
John Boyer: Get rid of "update the rendition" and say "data or binding change."

Resolution 2007-06-15.14: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Events?id=60 we accept and will re-word.

Action 2007-06-15.21: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Events?id=60 John Boyer to provide proposed new wording.

* xforms-version-exception

http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Events?id=61

Steven Pemberton: The event lacks a description.
John Boyer: We describe it in the model.

Action 2007-06-15.22: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Events?id=61 John Boyer to add text based on text in model and close issue.

* xforms-recalculate event

John Boyer: David disagreed with this.
Leigh Klotz: No, he disagreed with readonly=false on calculate.
John Boyer: OK, but we've already done it.

Resolution 2007-06-15.15: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Events?id=95 we agree and have done it.

* Aaron Reed issues (editorial)

http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Events?id=115

John Boyer: All except #15 are editorial.

Action 2007-06-15.23: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Events?id=115 all except #15 John Boyer to make changes.

* Aaron Reed issues (non-editorial)

http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Events?id=115

Steven Pemberton: We removed src and added id. We went two directions at once.
John Boyer: src is different in XHTML2 as it happens at a different time.
Steven Pemberton: I think it's too late to take src off instance and replace it with instance.
John Boyer: Rather than using resource as a new attribute name why didn't we change the definition of src to whatever we have for resource right now.
Steven Pemberton: I don't understand the difference and I suggest a change as well.
John Boyer: You understand src. It causes a problem if you already have save/reload with a document format that is saved. The data gets in via src, is added, and saved in the instance. The data gets lost because src has precedence over inline content.
Steven Pemberton: So the difference is order of precedence: src, inline content, resource. I can live with that. There are uses cases for both.
John Boyer: What is the use case?
Steven Pemberton: It's the template for when the resource doesn't exist.
Leigh Klotz: It's the dual of John's case.
John Boyer: The text doesn't say all this.
Steven Pemberton: It should.
Mark Birbeck: It should be asynchronous. We load small instances in src and then kick off submissions to get the data. Use cases like yours we have to hard code anyway. If there's a submit error, then go copy the template in.
John Boyer: It's also broken because if the src fails and the instance is empty, it's broken anyway. They have to put in a dummy instance.
Leigh Klotz: Sometimes you don't want graceful survival of src failure. Steven's case is initial template.
John Boyer: The feedback from Aaron and Steven was that they thought src was removed. Steven said it should be put back, not as something we get back from the host language.
Mark Birbeck: Are we changing resource behavior?
John Boyer: No, we're putting back src.
Leigh Klotz: And in help and hint?
John Boyer: No.
Nick van den Bleeken: How about an attribute that says what to do?
John Boyer: We want to put back what we had not to break content. Or do we assume it's in there from XHTML.
Steven Pemberton: We should do just like we've done with id. XHTML is adding id as well.
John Boyer: So get the wording back.

Resolution 2007-06-15.16: http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Events?id=115 We put src back on instance.

Action 2007-06-15.24: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/Events?id=115 John Boyer to put back in src on instance with fallback to inline data.

* Structural schema validation and datatype validation of first text node

http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/MIPs?id=82

John Boyer: Does this mean we never perform full structural validation before a submission?

Leigh Klotz: But we don't check structural validity except before submission.
John Boyer: Right, we check before submission. I can't find the wording he's talking about. For question 1 I think he's wrong about the wording.

John Boyer: For question 2, we have some inconsistencies in the spec about how we view elements.
Leigh Klotz: So this is for mixed content?
John Boyer: Binding to the first child text node is broken. It was for shorthand. We should just say it deals with the content of the element.
Leigh Klotz: The single-node binding is for /a/b getting you a node instead of a nodeset.
John Boyer: This is different. If you have

X<!--comment-->TY</b>
you just get X. And I think you should get X Y.

John Boyer: I thought XPath string got rid of the comments. Maybe that's why we're binding to the first text node.
Nick van den Bleeken: I think there is a difference between XPath 1.0 and XPath 2.0.
John Boyer: concat(a,b). Does the b contribute X Y as content?
Nick van den Bleeken: That's quite a change.
Charlie Wiecha: Reading is ok. Writing the value is harder because of complex content.
John Boyer: You can't bind the control to complex content. So with writing a value would lose PI's and comments.
John Boyer: I would go for modify and accept and remove the first-text-node rule. Maybe it's trying to avoid making DOM mutations, just changing a text node that exists.
Leigh Klotz: No, DOM text nodes are limited in length and XPath text nodes are not so if you replace a long one you alter the content.
John Boyer: Ah, and if the content is empty there is no text node to bind to.
Nick van den Bleeken: XPath is readonly.
John Boyer: Actually setvalue shouldn't work on empty elements because there is no text node.
Leigh Klotz: Then we should add a nodeset attribute to setvalue.
John Boyer: context
Uli Lissé: This would kill comments and PI's.
John Boyer: Only by default; if you bind explicitly to the first text node you can.
Uli Lissé: Only if it exists.
Leigh Klotz: So you can use a comment to determine if a value has been changed.

John Boyer: With Schema we are locked into validating the node, not the first text node child. Suppose you have a schema that says Node B must be an integer. The user will S an 1 but the content will be Schema invalid because 1A is not an integer.

John Boyer: So I propose we fix this.
Charlie Wiecha: It sounds big.
John Boyer: Needs approval.

Resolution 2007-06-15.17: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/MIPs?id=82 we agree to study John Boyer's proposal binding to text instead of first text node but not implement it at this point.

* Model Item Property Definitions (1)

http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/MIPs?id=99

John Boyer: We aren't doing these even for identical ones.
Steven Pemberton: Defer

Resolution 2007-06-15.18: We defer http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/MIPs?id=99

* Model Item Property Definitions (2)

http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/MIPs?id=100

Steven Pemberton: I thought we had done it because of this.
John Boyer: This is editorial; it's just a reference problem.

Resolution 2007-06-15.19: We approve http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/MIPs?id=100

Action 2007-06-15.25: For http://htmlwg.mn.aptest.com/cgi-bin/xforms-issues/MIPs?id=100 John Boyer to fix reference.

* IRC Minutes

http://www.w3.org/2007/06/15-forms-minutes.html

* Meeting Ends