W3C

- DRAFT -

W3C Forms Working Group Virtual Face-to-Face Day 2

16 Oct 2008

See also: IRC log

Attendees

Present
wellsk, klotz, Steven, Charlie, unl, John_Boyer, nick
Regrets
Chair
John
Scribe
Charlie, wellsk

Contents


 

 

<Charlie> Scribe: Charlie

Data accessors module

aka data manipulation module

John: is this the right place for serialization as currently stated in the wiki?

e.g. for some subtree, do the serialization

is this submission or a property/service of an instance itself?

things other than submission might want to use this

this will interact with the model when MIPs are involved and validation

from an impl point of view we can see how model serialization can overload the default...

what do you all think?

Steven: hmmmm

initial feeling it's not the place

seems more to do with submission than access

Uli: me too

should also consider other data types than XML

doesn't look like it belongs to instance

Charlie: -1

John: how do I comment things out in the wiki?

Model module

is there a top level name other than model that includes all these related functions?

grouping these under the Model Layer set of specs

flattening a bit the space of specs

looking at model element as container, but not necessarily requiring all of the following components

we'll have a schema to show the required/optional content of model

any suggestions for what goes in model?

Leigh: recall it had optional instance

then some empty content groups

for other modules to insert into

<nick> should the instance module not just say 0 or more

<nick> because an implicit instance is also controled by the instance module

Nick: does model module need to say 0 or more, or just ref the instance module?
... lazy authoring can imply an instance even if it doesn't occur syntactically

Leigh: can imagine some languages might want to say exactly one instance (perhaps SMIL state?)

Nick: would have thought model provides insertion point, and instance controls how

Leigh: this seems to be a case where the model needs to know about the instance spec
... vs. a separate driver module

Charlie: seems like model gets to decide on the policy for how many instances to include

Model defines a functions attribute, declaring extension functions being used

as in current practice

sort of a "must-understand" attribute

<nick> doesn't the driver module needs to that

Charlie: should this actually go on model?

<nick> because I could see another language having other functions by default

have to worry about the case where people avoid using this attribute by stipulating their function is in the namespace URI defined for extension functions

is this attribute really useful?

Leigh: doesn't really address whether the form is coherent and will work
... dog analogy

<nick> I we allow modules to add functions, then each module can add its functions, and maybe model can add an XPath function that you can use to check if a function is available one that allows you to check if a module is available

Leigh: we have a larger problem around module coherence

Property function

supports version, conformance level

could be the function Nick was describing

<nick> I think it should go there

model historically has been the focus of this type of descriptor

<nick> which modules are available

space separated list beginning with "full" or "basic" to allow for extension descriptions

not well defined yet what this string includes

impls can use own qualified names but not unqualified ones

e.g. locale or user agent

could be extended to allow listing of available modules

leave here?

+1

Model attribute added to SNB NSB groups

injects attribute and amends calculation behavior for evaluation context, pre-processing step to consider model

RRRR actions as well as events?

maybe rebuild and recalculate should be added by calculate module

only need dependency graph when you're calculating

relevant/readonly MIPs are atomic

is this true?

they could have calculates

<nick> Shouldn't: revalidate be added by the validation Module

<nick> refresh should go to the UI

Leigh: model is a mini-container spec sets context for evaluation and for insertion of other modules

<nick> and reset can go to the data accessors module

Nick: can reset be used on model to define the scope over which instances should be reset?

Leigh: instances might also maintain their own shadow data

Charlie: yes, that's how it's currently described in the data island module

John: yes, reset knows the instances in a given scope

could also be done with instance function

Nick: then reset wouldn't be needed

John: right, maybe instance function is in the wrong place

if you only have a data layer, then reset on data island / accessor ...

Leigh: if you only have an instance, does this require you to maintain the original/old data to do reset?

might be easier not to require them to do so

inline is easy, but loaded by submission is expensive

(various debates about "expensive")

Leigh: may be too much function for simple users of data island
... raises question of whether we want resettable data islands

John: even original HTML forms can do this

Leigh: that's why we put this in

(physics analogy)

Leigh analogy_count++

Leigh: could get out of control...where do we draw the line?
... why not intermediate checkpoints, rollback, undo?

John: leaving both reset action and saved state on the model seems to make sense

Leigh: can see multiple options

John: i'm seeing that reset is too much for instance layer

Leigh: how will model get the data ?

John: will have to ask the instance

Leigh: this seems consistent

John: let's rephrase the logic around data-instance-load to clarify that users can dispatch this event to trigger the loading behavior

not just a cancelable notification event

consensus is to have model support the reset behavior by interlock with the load/getinstancedocument behavior in instance

John: lets consider refresh action and event

are those defined by model module or by UI module?

seems like the UI module

until you have binding attributes as UI binding you don't have targets for value-changed etc

john_analogy_count++

going up a hill to the UI module at the top

John: who defines the model events? construct-done, etc etc

Leigh: the model

John: yup
... what about xforms-ready?

Leigh: driver module, xforms driver

happens after UI is initialized

John: if you have a UI module

default behavior model-construct-done then ready with nothing in between if you have no UI

Leigh: the top level spec, driver module, seems to have to control this

John: introduces xforms driver module in the wiki
... behavior can only be added via prose in the spec
... nothing in the processing model is visible in the surface syntax

Leigh: so there may need to be more IDL on the model to support the driver

John: model's participation in refresh might be to provide a change list

Leigh: seems like we need to add this capability to the model
... responsibility for doing the refreshing of controls is in the UI module

John: so model module needs to provide change list but it's up to actions and modules like calculate to contribute to that change list

Leigh: who runs the RRRR sequence?

John: model adds the notion of deferred update to action processing
... more likely deferred update concept added by driver not model

<Steven> +1

<Steven> here

<unl> here

<wellsk> Scribe: wellsk

TPAC: XML security Group: 11-12:30

Meet with Roland perhaps after lunch on Monday 2:00

Monday morning: continue Module construction

Submission or UI

Change list in model module

changes: 1) calculate 2) set value 3) external DOM access

in past DOM Access that impl can provide copy and manipulate it

then manipulations go into real DOM

impls listen to DOM mutations

which contribute to change list

perhaps setvalue changes can do this

Charlie: low level use of IDL for modifications
... giving means to do this

John: modules listen for DOM mutations

to reflect DOM changes

into data layer

Charlie: may not be 1-1 correspondance with chnage list and DOM mutations

John: UI binding expressions concerned with low level changes

added: "by listening for data mutations, which may come from setvalue, calculate, or external DOM access)"

Doesn't matter which module, it's a service of the model

other consumer is calculate module

takes change list for starting point to evaluate dependency processing

UI and calculate are consumers of the change list

drives changes to UI

Charlie: this is not the dependency list, this is the change list

<Steven> s/nhot/not/

dependency graphs doesn't get into endless changes

do we want to move to bind module?

Bind module

<nick> the bullet points are ok

Defining bind element

<nick> rebuild isn't in there now

has nodest attribute

<nick> and I have two exception events extra

Change from nodeset attr to Node Set Binding attributes

and Add @bind to SNB and NSB bindings

<nick> Model Item Properties Attribute Collection

adding model attribute to bind element

adding context attr to bind element

<nick> right

<John_Boyer> <bind nodeset="c">

Note that this adds model attr to bind ? and Note that this adds bind attr to bind ?

<John_Boyer> <bind context=".." calculate="power(a*a + b*b, 0.5)" />

<John_Boyer> <data> <a/> <b/> <c/> </data>

don't need extra ".." for the calculate attr

also doesn't change node to shich MIP applies

otherwise would make context useless on a bind

<John_Boyer> <bind context="xyz" nodeset="c" calculate="abc"/>

nodeset="c" resets nodes for which the MIPS apply

context isn't applied first -- the model attr is

<John_Boyer> The expression of the nodeset in the bind is what changes the node(s) to which the MIP applies

initial in-scope evaluation context

evaluate context attr in first place

then model attr is processed

then instance attr processed

then context attr processed

each making modification to inscope evaluation

context may not mean much with nodeset bindings

creating dependencies within binds

those binds with nodeset are evaluated before those that don't

Nick: downside not all nodeset evaluations are the same

creates cross-model binds

bind operates only within its model, or discontinue the bind

if bind elements is model A and can contribute to model B -- perhaps it doesn't make sense for model attrs?

Can bind determine if nodes belong to a model?

if bind has model attr and nodes with a model other than my owner -- then ignore the bind

Does bind module live inside the model module

Can use bind element with out expressed model?

if so, need an implied model

because binds scoped to a particular model

Is it a dependency we don't want?

Leigh: scoping to host document, model is a mini-host

John: needed to talk bind module and then model module with contributions to bind module.

Leigh: model provides the scope
... container for binds
... if no model, then implied model global to document
... scoped to containing thing

John: Form tag

Leigh: Form is a diff container other than model
... WebForms A uses Form module, not model module
... lower level specs using virtual versions of higher level specs like Model

<nick> The id resolution of the binds

Leigh: doesn't want this...

<nick> and the nodeset bindings

John: instance data with nodes associated with binds
... binding attributes group contain a model attribute

Nick: bind with id attr scoped to model

issues of bind attr can be taken separately

Bind attr is treated separately from model attr

topological sort problem on bind element -- not supported right now

Leigh: what the scope was...
... model attr, inst attr

can't use data from a different model from data nodes...

bind element should make a determination of model scope

binding attr module evaluates in scope, model module adds to binding module to add scoping resolution

Leigh: if outside model, implied model -- scope would be document?
... same problem scoping with model attr

John: bind module has to know model module to know model attr was added to make the change
... Model module provides scoping to bind module, but model can't do that.

until model attr is resolved..

Model module scope restrictions on bind module and instance module, bind element not select model other than what contains it.

Leigh: do we want bind outside a model?

John: on bind element need nodeset attr, some use of context attr,

clear use for instance attr

headaches with model attr and binding attrs added to bind group

Nick: model module to define model attrs
... if same model, you're done

John: if message action, contains UI binding, would resolve only within model
... Model level, model specific binding attrs?

Leigh: @model and @bind not good on Bind element

John: model module needs to do scoping
... on binding attrs on descendant elements.
... Model module provides scope limiting behavior to binding attributes and instance functions invocations

The context attribute changes context for other attributes but does not, in and of itself, change the node to which MIPS are applied (e.g. if no nodeset is expressed)

Bind module provides a bind element with associated set of nodes to apply MIPs

determined by nodeset itself or in-scope evaluation otherwise

binding attributes module, give me results of binding attributes

scribe: No new results because ref or nodeset not expressed

This module needs to be able to answer the following questions:

* What is the initial inscope eval context of this element?

* What is the amended inscope eval context of this element?

* What is the result of the SNB or NSB?

* Was there an expresssed SNB or NSB (as opposed to the result being equal to the amended context)?

Break for hour

<John_Boyer> zakim is not answering...

<Charlie> -1

<John_Boyer> well, context conferencing system guy is answering, but he keeps hanging up before asking for the code.

<Charlie> he won't stop talking for me

<klotz> Keith and I are on.

<John_Boyer> I'm trying a third time, will be another couple of seconds

<zakim> prob doesn't like you nw John -- after teasing him

<unl> john, zakim is mad at you

<John_Boyer> I thought that might be the problem

<nick> zakim won't accept the passcode

<Zakirn> Hi John

<John_Boyer> Hi Zakim, it seems you do understand "you substitution"

<Steven> I am

<nick> I'm also going

<Steven> Mark said he was planning to come Tuesday

<klotz> http://xformstest.org/2008-10-16.txt

<klotz> scribenick: klotz

<Steven> RDFa already has @datatype

Mark said that was OK.

<Steven> So <input ref="n" property="event:start" datatype="xsd:date" content="2008-10-16">

<nick> but what if they are conflicting

<nick> <span property="event:start">2009-02-03</span>

<span property="cal:dtstart" content="2007-09-16T16:00:00-05:00"

datatype="xsd:dateTime">

September 16th at 4pm

</span>.

<Steven> like this: <span property="event:start" datatype="xsd:date">2008-10-16</span>

<Steven> <span property="event:start" datatype="xsd:date" content="2008-10-16">today</span>

http://www.w3.org/TR/rdfa-syntax/

http://xformstest.org/2008-10-16.txt

http://www.thaiopensource.com/relaxng/nrl.html

http://xformstest.org/2008-10-16.txt

<John_Boyer> http://www.w3.org/MarkUp/Forms/wiki/XForms_Future_Features

<John_Boyer> http://www.w3.org/MarkUp/Forms/specs/XForms1.1/index-diff.html#evt-revalidate

<Steven> ok

<Charlie> Scribe: Charlie

<Steven> charlie++

relevant module

Nick: question on who will trigger the execution of this module?

for readonly as well

John: seem to have moved these decisions up to the driver level

a model doesn't know when to RRRR

and model module itself doesn't understand those concepts

since they've been injected from other modules

hence need for driver

that owns the "lifecycle" overall

Nick: MIP related events are targeted at UI controls...this module doesn't know about them

John: UI binding module seems to manage refresh so should do this too

Nick: how can that module know when MIPs change?

Leigh: Erik has mentioned that value-change should happen in the control

John: yes, we're moving in that direction

but for now we have the change list mechanism

each MIP module has to produce this info to be passed into the UI module for refresh and event dispatch

e.g. need operation to get list of changes, and also to clear list

on each MIP module

Leigh: probably not good to get too bogged down in details right now...e.g. potential synchronization problems between get and clear list
... doing a separate spec on metadata attached to the DOM would be a useful outcome here

John: yes, to support custom MIPs

need more extensive mechanism to handle types on custom MIPs -- beyond booleans which we currently have

Leigh: there's nobody who has packaged their DOM extensions for metadata into a standard spec

John: maybe for WebApps WG

Leigh: this would be our MIPs spec

John: i see...we should write the MIP module and then use it for our current ones

Leigh: yes

John: do we have to write that now?

Leigh: it will fall out of the ones we have to do anyway

Uli: we already have use case for custom MIP

filename and mediatype for uploaded data

needed during serialization

no easy way to look back at the instance data from upload control

so we put this in a form of custom MIPs

Leigh: Chiba uses same DOM node factory to store internal info

leigh_analogy_count++

cooking frogs

John: is that the bind module?

itself?

do we need a separate spec?

Leigh: +1

Charlie: +1

<nick> "Model item properties are infoset contributions made to instance data nodes can be distinguished along various axes."

Uli: what about the "user data" spec for dom?

in DOM level 3

<nick> from the spec, that is in the current bind spec

John: that could be an impl technique for our declarative level spec
... adding an item to the bind module bullet list for element version as alternative syntax

Leigh: or <mip name="x" value="x"/>
... what should it be called?

property, name, value

value could be calculated

or with element content if constant

John: setvalue, inset, delete, instance replacement all have to respect readonly MIP

not just consumed by UI layer

Leigh: we have xforms data model plus decorations

John: we have readonly decoration, but setvalue has to respect that MIP

readonly module (etc) has to specify restrictions on MIP processing

Leigh: what happens if you try?

John: just doesn't happen
... also involves submission

partial instance replacement needs to be enforced/checked

parent/ancestor checked for readonly

readonly is only MIP handled this way

on earlier topic of custom MIPs, see DOM Level 3 UserData: http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#Node3-setUserData and http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#Node3-getUserData

Leigh: DOM impl has metadata properties and when implementing readonly use those properties

so our DOM impl will be extended to respect readonly and access methods would be extended to enforce this

the readonly module says when you give out a DOM reference it comes with these extended APIs

John: wording about readonly could be inserted in the data island spec and then inherited around to consumers of that spec

let's pick up with submission and UI on monday

Summary of Action Items

[End of minutes]

Minutes formatted by David Booth's scribe.perl version 1.133 (CVS log)
$Date: 2008/10/16 19:03:00 $

Scribe.perl diagnostic output

[Delete this section before finalizing the minutes.]
This is scribe.perl Revision: 1.133  of Date: 2008/01/18 18:48:51  
Check for newer version at http://dev.w3.org/cvsweb/~checkout~/2002/scribe/

Guessing input format: RRSAgent_Text_Format (score 1.00)

Succeeded: s/Day/Day 2/
Succeeded: s/separate/separated/
Succeeded: s/modeuls/modules/
Succeeded: s/sis/ssi/
Succeeded: s/Charlie/Charlie:/
Succeeded: s/corresponance/correspondance/
Succeeded: s/evaulate/evaluate/
Succeeded: s/nhot/not/
FAILED: s/nhot/not/
Succeeded: s/changes/doesn't change/
Succeeded: s/which/otherwise/
Succeeded: s/modules/module/
Succeeded: s/seprately/separately/
Succeeded: s/indications/invocations/
Succeeded: s/content/ content/
Found embedded ScribeOptions:  -implicitContinuations

*** RESTARTING DUE TO EMBEDDED OPTIONS ***

FAILED: s/nhot/not/
Found Scribe: Charlie
Inferring ScribeNick: Charlie
Found Scribe: wellsk
Inferring ScribeNick: wellsk
Found ScribeNick: klotz
Found Scribe: Charlie
Inferring ScribeNick: Charlie
Scribes: Charlie, wellsk
ScribeNicks: klotz, Charlie, wellsk
Default Present: wellsk, klotz, Steven, Charlie, unl, John_Boyer, nick
Present: wellsk klotz Steven Charlie unl John_Boyer nick
Got date from IRC log name: 16 Oct 2008
Guessing minutes URL: http://www.w3.org/2008/10/16-forms-minutes.html
People with action items: 

[End of scribe.perl diagnostic output]