Responses to SMIL-Animation Last Call Comments

These are the collected Last call comments on SMIL Animation that were sent to the SMIL mailing list (www-smil@w3.org), and responses to those comments. Comments include:

DOM WG response to SMIL Animation last call.

Sent: Friday, February 25, 2000 9:36 AM

The DOM WG assigned a reviewer to review the SMIL animation spec from the DOM perspective and reports no problems.

Thanks,

Lauren Wood

SYMM Response: Thank you for your review.

SVG WG response to SMIL Animation last call.

Date: Wed, 1 Mar 2000 14:42:18 -0500 (EST)

Chris Lilley

Chair, SVG WG

The SMIL Animation last call WD was discussed at the Thursday 17 Feb telcon, and the SVG WG came up with four items of feedback plus one item of notification FYI.

The first two are critical, long-standing requirements from the SVG working group which are not yet addressed in the SMIL Animation specification. It was already agreed that SVG WG would raise these issues during last call, so here they are. The description of the requirements for the first two items is extracted from email archives (http://lists.w3.org/Archives/Member/w3c-svg-wg/1999OctDec/0193.html).

INADEQUATE ABILITY TO MIX DOM WITH DECLARATIVE ANIMATION

The most significant problem is the following excerpt from SMIL Animation section 6.2 Supported Methods

[http://www.w3.org/AudioVideo/Group/Animation/smil-animation-WD-991022.html#DOM-SupportedMethods]:

'The beginElement() method must do nothing if the animation is not explicitly set with the begin="indefinite" syntax above. The endElement() method must do nothing if the animation is not explicitly set with the endActive="indefinite" syntax above.'

This was felt to introduce incredible hassle to end users and authoring tools generators, but provide none of the targeted benefit of constraining or simplifying implementations. SVG WG would very much like to see this

SYMM Response: This functionality has been completed in the WG while working on SMIL-Boston. At the March2000 face2face, the SYMM-WG approved incorporating this functionality into SMIL-Animation. Note that beginElement() is also subject to restart rules. Functionality is just as in SMIL-Boston. Immediate evaluation and scheduling of the restart in the context of the restart rules.

Resolved during April 12, 2000 SYMM/SVG telecon: SVG agrees to this proposed change. Also, beginElementAt() takes a signed time offset. endElementAt() takes a positive offset.

NEED A LIST OF EVENT VALUES FOR BEGIN AND END [used to say ENDACTIVE] ATTRIBUTES

In the latest SMIL Animation draft, only one value (a time value, an event specification, or a dependency) can be given for 'begin', 'end' or 'endActive'. However, in the latest SMIL Timing draft, the 'begin' and 'end' attributes can take a semicolon-separated list. It is clear that a semicolon-separated list is the obvious and best way to extend the SMIL 1.0 and SMIL Animation specs in an upwardly compatible way. It is also clear that it allowing multiple begin and end triggers versus one is not a huge additional burden on implementers, especially since they already have to deal with multiple potential triggers (e.g., the 'begin' attribute and hyperlinks).

SYMM Response: This functionality has been completed in the WG while working on SMIL-Boston. At the March2000 face2face, the SYMM-WG approved incorporating this functionality into SMIL-Animation. However, we do not agree that the combination of the begin/attribute and hyperlinks is as complex to implement as multiple begin conditions.

Resolved during April 12, 2000 SYMM/SVG telecon: Use multiple begin and end conditions just as in SMIL Boston with the same syntax and semantics.

The other two items were discussed in the 17 Feb teleconference:

Add the ability to trigger animations based on a repeat event

Thus, in addition to being able to say begin='foo.begin', you also should be able to say begin='foo.repeat'. This is for the sake of consistency and completeness, but it is also a useful feature.

For example, the LiveMotion team at Adobe has requested this feature in SVG as the product allows for this behavior to be defined. (LiveMotion is Adobe's recently previewed dynamic SVG authoring product which also exports SWF.) The consistency argument is that there are TimeEvents for begin, end and repeat; thus, there should be syncbase values for begin, end and repeat.

SYMM Response: This functionality has been completed in the SYMM WG while working on SMIL-Boston. While the comment does not ask specifically for this, an additional issue is the numbering of the repeat index. Is repeat(1), the first repetition? By the semantics of the current spec, no repeat event is generated when the element first starts, just a begin event.

We have agreed that the iterations are counted from 0, so the first observed repeat has an iteration value of 1. For technical reasons, repeat is not a syncbase value, but instead an event. This should provide the requested functionality. We must be clear that this is an event, and not a syncbase. The distinction is important for us.

foo.repeat(integer) is the syntax for this, starting with 1 being the first repeat. Iterations are zero based, first iteration raises a begin event, and first repeat event has detail value 1 on the second iteration of the element. Also can use unqualified repeat syntax: foo.repeat gets all repeat events.

It is inconvenient and a source of needless duplication that the 'animateMotion' element requires inline path data

As in <animateMotion path="M0 0 L20 20" ...>.

For SVG, it is common that you will have a single path which is both rendered and used as the target of a motion path. With the current syntax of SMIL Animation, you have to repeat the path data to achieve this effect. Therefore, the SVG working group requests that the 'animateMotion' element be modified (at least for SVG) to allow for either inline path data or reference to a 'path' element.

Here is a proposal for syntax:

<animateMotion ...>

<motionPath xlink:href= d= ... />

</animateMotion>

The requirement for the child element is because of XLink's restriction that there can only be one reference per element. (There is already an xlink:href on 'animateMotion' to point to the object which is being moved.)

One approach would be that SMIL Animation only support the 'd' attribute. SVG would add the 'xlink:href' attribute as an SVG-specific extension. Another approach which would require no changes to the SMIL Animation specification would be:

<animateMotion d=...>

<motionPath xlink:href= />

</animateMotion>

SYMM Response: Since many languages do not have a "path" element, it is not compelling to add this to SMIL animation. We support the SVG extending animateMotion by the addition of href pointing to a path element or some other syntax. We do not want to add a child element for the path. We would prefer to keep a single path attribute, and just say that if you want to reference another element, you use the arg-value syntax "#idref" or Xpointer syntax. For example, extend path to use an XPointer syntax <animateMotion path="xptr(id(foo))".

Resolved during April 12, 2000 SYMM/SVG telecon: SVG will have a referencing mpath element as an optional child of animateMotion which will override any path attribute in the animateMotion attribute. SMIL-Animation path attribute will remain unchanged.

SVG-specific feature

Finally, at the teleconference, we decided that the following fifth feature was SVG-specific and has no impact on the SMIL Animation specification. However, we wanted the SYMM team to be aware of this direction in case they had feedback:

SVG has event attributes for all event types supported by the SVG DOM. For example, the SVG DOM recognizes a 'click' event. Associated with the 'click' event, all graphics elements and container elements in SVG have an 'onclick' attribute to provide a convenient way of associating scripts to events. Right now, the correspondence between events in the DOM and event attributes is one-for-one, with the exception that the TimeEvents from SMIL Animation (i.e., begin, end and repeat) do not currently have corresponding event attributes. For consistency with the rest of SVG, we are going to add attributes onbegin, onend and onrepeat to SVG's animation elements so that script can be associated to animation events with the same convenience as the other events supported by SVG.

SYMM Response: This is extending the SMIL animation elements to support event script handlers. The definition and naming of attributes used to bind script handlers to the common time events is something that we have left outside of SMIL Animation. SVG's approach to this is fine. It is generally defined in a script-events module (this is what XHTML did), and we should consider this for SMIL Boston.

CSS WG feedback on SMIL Animation last call

Date: Wed, 1 Mar 2000 14:48:25 -0500 (EST)

The last call specification was discussed at the 28 Feb telcon. There were a number of items which seemed to need clarification, but we resolved them ourselves, we believe.[1]

So having discussed the spec, we find we have no problems with it.

[1] http://lists.w3.org/Archives/Member/w3c-css-wg/2000JanMar/0184.html

Chris Lilley Chair, CSS WG

SYMM Response: Thank you for your review.

MIL animation WAI review

Date: Mon, 28 Feb 2000 03:08:56 -0500 (EST) 

De:Daniel Dardailler

Most of these comments are to do with improving the accessibilty of the specification itself, or of the examples that it uses.

The last example in section 3.2.1

Demonstrates an animation being raised 5 seconds after a click event. Since we hope not to have click events, we should ask that this be changed to an activate event. WCAG checkpoint 6.2 requires device-independence for input triggers. Same comment arises in relation to most of the examples in 3.3.2.

SYMM Response: The examples are just that, examples of integrations of SMIL Animation with both current and future XML languages. Currently, the "click" event is in common use and makes the examples more familiar. Our most immediately important integrations, XHTML and SVG, support "onclick" and "onmouseover" events, and the examples reflect this. We feel that the Animation draft examples are not the place to determine what constitutes "proper" events.

It is noted that some more pictures would help

Indeed they would.
SYMM Response: We agree, time is always the limiting factor.

Example in 3.3.5

In 3.3.5 an example is given that is based on a mouseover. Although the example appears to be inherently spatial, removing the device-dependence (and replacing it with a focus event, or perhaps in this case a select or activate) would provide the input dependence required. Since the rest of the example is hypothetical it doesn't need to be taken further, although a model of how this might work would allow for either selection, or a means of navigating independently rather than purely serially.

SYMM Response: Same as for the click event. We note that very few elements support focus events or select events. All visual elements support the mouse events. We must be realistic and support the authors. 

Example in 3.3.6

3.3.6 again has a number of click examples - more cases for a simple activate.

SYMM Response: Same as for the click event above.

Section 3.5

Section 3.5 describes the sandwich model, noting that changes to CSS rules will still be subject to the CSS cascade, which is an accessibility requirement. It is probably worthwhile at that point making a brief statement that another effect of this is that animations may not in fact be rendered, so important changes to content must not be specified purely by animation of style (as per WCAG 6.3). This is implicit in the final paragraphs of the section, but making it more explicit would be helpful.

SYMM Response: Other specifications, such as XHTML do not include these kinds of notes, because they are most properly done in authoring guidelines produced by the WAI group. We agree with the authoring guidelines mentioned, and we encourage their inclusion in WAI documents dealing with guidelines for authoring accessible animations.

Figure 4

Figure 4 - the state diagram for start, stop, restart, freeze, would be a lot better with a short description in a longdesc, d-link, or immediately below the image. Alternatively, the alt should say that the diagram is explained in the following section.

SYMM Response: There is a description of all of the states immediately below the diagram. We will make the change so that the alt just refers to the following section.

Example in section 3.7.3

3.7.3 again uses click as an example of a user input event. The example at the end of 3.7.4 is click-driven again, and uses the link content "Click Here!" (contrary to WCAG checkpoint 13.1)

SYMM Response: Same as for the click event. We do need to put something intelligent in to the content - "Click Here!" is bad authoring, and we will fix it.

Example in section 3.7.5

3.7.5 starts with another click-based example

SYMM Response: Same as for the click event.

The final example of 4.2

The final example of 4.2 uses mouseover / mouseout, and would be better off using focusin / focusout. Whether a corresponding adjustment in the link text is strictly necessary is a moot point - one could expect users of assistive technologies and mouseless systems to go the extra distance in learning to use their interfaces and not need the behaviour explicitly described, although it would be nice if the talk was device-independent as well as the walk.

SYMM Response: The intent of example in the text is not adequately supported by the focusin/focusout events and would confuse sighted users. We are open to suggestions for examples that are realistic and useful, and do not break sighted users' experience.

The example of illegal SMIL in 5.4

The example of illegal SMIL in 5.4 should nonetheless provide alternative content for the image - an alt attribute at least.

SYMM Response: It's an example of illegal SMIL, not good XHTML. But, okay it's easy to add.

Giving assistive technologies access to the animation effects

Other than that we think the question of giving assistive technologies access to the animation effects is a (soon to be fairy important) matter for User Agent Guidelines.

Response: Yes, we agree that assistive guidelines for animation are important and we look forward to reviewing these documents.

Personal comments from Martin Duerst on SMIL Animation

Objet: Last call comments on SMIL animation 

Date: Mon, 28 Feb 2000 01:10:51 -0500 (EST

De: Martin J. Duerst

Dear SMIL WG, These are some last call comments on SMIL animation, both technical and presentational.

Major comments:

The interaction between to/from/by

The interaction between to/from/by,... is much too complicated. The most successful specifications are simple and straightforward ones, because they lead to easy understanding, easy and consistent implementation, and so on. Please, please, pull yourself out of the swamp you got in here, and streamline and clean up the definition of these attributes. Maybe adding one or two more attributes will make everything much clearer. Maybe giving up one or two of the edge case functionalities would help. It would be very much worth doing!

Response: from/to/by are standard concepts in animation, and are included by author requests. The complexity comes from the necessity of defining the behavior for each of the combinations. Also, each of the combinations was thought to be useful to accomplish a specific effect. We disagree that there is any additional complexity beyond just understanding the use cases within the standard animation paradigm

Syntax of "ID.EVENT+TIME

Various attributes use a syntax of "ID.EVENT+TIME". This should be changed to align with the general policy of the W3C to use web addresses for all kinds of references. This can easily be done by defining an XPointer extension for begin, end, and other events. The syntax would then e.g. be "xpointer(id(ID))begin(TIME)" or "xpointer(id(ID))event(begin)timeoffset(TIME)" or so. This can later easily be extended to provide general xpointer expressions instead of just ids and can make it possible to be able to refer to animation elements in different documents. While this may not be desirable at the moment, choosing a syntax that makes extension difficult should be strongly avoided. Also, defining begin(), end(), events, and offsets in an XPointer-compatible way means that these can be used on other occasions. Also, the current event syntax does not allow for parameters to events, which can in many cases (e.g. mouse events, key events) be a very serious drawback. An XPointer-like syntax can easily take this into account.

SYMM Response: This syntax is exactly equivalent to the new syntax for specifying synchronization in SMIL-Boston. We had considered the XPointer syntax during SYMM-WG telecons and on the mailing list and decided against it. XPointer is machine readable but a nightmare for our authoring community which is why we have taken their suggestion and replaced it with a script-like syntax. We can provide references to the archived discussions if that is desired.

While in the above case...

While in the above case, at least the argument of simpler syntax may be brought forward for the current proposal, this becomes completely bogus for the 'targetElement' attribute. This attribute has no justification for existence at all. And claims of simpler syntax, as they are made in the spec, are just plain wrong. Using href and a '#' is much shorter, and everybody knows it already from HTML.

SYMM Response: The targetElement attribute allows the SMIL language(s) to use a syntax consistent with the other attributes such as the begin/end conditions. Languages that make heavy use of XPointer can ignore it. Martin presumes that the relationship is a link. While this may be shared by exponents of Xlink, it is not shared by our author community, nor all W3C members. In this case, we think that accommodating both language syntax paradigms is the best solution.

Intro: This version of SMIL...

"1. Intro: This version of SMIL Animation may not be used with documents that otherwise contain timing". Why that? In many cases, it would lead to very nice results, e.g. one part of a seq or a par being animated.

SYMM Response: There are many complex interactions with time containers that are being worked out in the SMIL-Boston timeframe. SMIL-Animation is intended to be ready for SVG now and is by necessity a subset of the animation functionality that will be present in the SMIL-Boston modules.

There should be a glossary

General: There should be a glossary. Terms such as 'simple duration', 'document duration', 'animation function', and so on should go in there.

SYMM Response: Good suggestion. We will consider a glossary or some improved set of internal referencing to where terms are defined. One issue is that the document is already rather large, and we do not want to make it bigger.

2.1: DOM: the dom values are not changed

2.1: DOM: the dom values are not changed, and there is no way to access the actual values. This may simplify lots of things, but I'm very sure that very soon, we will see at least a read-only interface for the actual values. Instead of waiting for divergent implementations, it would be better to define how to access current values in this spec.

SYMM Response: This problem is not unique to Animation, but we are looking into means of addressing this in the DOM for the SMIL-Boston animation module. The issue is that the DOM, unlike CSS, does not distinguish between attribute and computed values. For animation to work well within the framework of scripting and other W3C technologies, it has to be "layered" within the DOM->CSS flow model. This means that the animation layer should not modify the DOM values themselves, but instead the value passed to CSS from the DOM. A means of access this runtime computed value is what is missing from current DOM API's, but it is important that this be the model to support extensibility and determinate behavior when interacting with scripting.

That said, we recognize that some implementations may not be able to strictly comply with this model. We are interested in working with the W3C to solve these issues in the larger context of DOM, views, script, CSS, a nd XSL all interacting to produce the document displayed to the user.

2.1: Animation functions could be defined that were purely

2.1: Animation functions could be defined that were purely algorithmic; Why not define a few of these straight away?

SYMM Response: Two reasons, first, not enough time, and second, the functions would likely be domain specific and therefore belong in the integrating language and not in a generic animation module.

2.1: "position) ."

2.1: "position) .": spurious space.

SYMM Response: Thanks. We will fix this.

2.1: As a simple example...

2.1: "As a simple example, the following"...: A simple example of addition, or of what? If not of addition, the example should come much earlier.

SYMM Response: Thanks. We will clarify this.

3. This chapter is too long and too complicated

This chapter is too long and too complicated. Also, some of the complications (in particular around from/to/by) don't really deserve the term 'model'. The whole thing, in particular sections 3.1/2/3, reads much more like a description of attribute values. Probably the whole thing is best split into two, one general part (containing the later subsections) first, and one part on specific attributes (containing the former subsections) later. Definitely section 3.9 should go into section 4.

SYMM Response: Other readers have commented that the SMIL-Animation last call draft is well written and easy to read. While it may be true that chapter 3 is quite long, the cost/benefit ratio of rewriting the document is too high. SMIL-Boston animation will extent SMIL-Animation and we will try to incorporate some of the organizational suggestions into it.

The Target element

3.1: Instead of 'The Target element', the subtitle should be either 'The target element' or 'The targetElement attribute'.

SYMM Response: Thanks. We will fix this.

3.1: 'If however, both attributes must...

3.1: 'If however, both attributes must be included in the host language, and they both occur...': I don't understand the 'must' here.

SYMM Response: "must" is up the the integrating language designer. We should say "if the language designer must include both..."

3.1: 'locater' -> 'locator'

3.1: 'locater' -> 'locator'.

SYMM Response: Thanks. We will fix this.

the method names 'beginElement()',...

3.2.1 (and other places): the method names 'beginElement()',... are far from informative. They are methods of elements anyway, so having 'Element' in the name is completely superfluous. Also, for somebody not familiar with Animation, reading 'beginElement()' in some source code will be difficult to understand. It would be much better to change the names to 'beginAnimation()' and 'endAnimation()',....

SYMM Response: Actually, these DOM call names are the general timing calls from SMIL-Boston and apply to other timed elements besides those of animation. For consistency and forward/backward compatibility we are using a subset of the SMIL-Boston more general API's in SMIL-Animation. We considered using just "begin()" and "end()", but then the methods names match the attribute names, which is a bit dangerous and more confusing.

'Syncbase value'

'Syncbase value': This title appears much too small. Please make sure the style sheet is updated for such titles.

SYMM Response: Thanks. We will look into this.

'linear' vs. 'paced' animation

'linear' vs. 'paced' animation: The difference is difficult to get. Please make sure this is clear from the start. The best thing would be to have an example with a graph for each of the four variants.

SYMM Response: We agree, pictures would be a good idea here.

';' as a separator

';' as a separator e.g. in keyTimes: Using only space as a separator will be more compatible with XML Schema.

SYMM Response: There are several reasons why we choose a semicolon as the general separator, and we did this working with the SVG group. First, we use it in SMIL Boston for separation of begin\end conditions and the semicolon makes the separation clearer and the parsing easier. Second for consistency, both keyTimes and keySplines also use the same separator as the begin\end conditions, and since keySplines may take any kind of value (defined by the application) we needed an easy means of separating multi-part values, some of which may have internal spaces, for example, vectors: "10 20 10;20 10 20". The discussion and decision process is archived in the minutes of the SVG\SYMM teleconferences and it available in the SYMM archives.

3.3, first paragraph

3.3, first paragraph: 'However SMIL Animation allows the author to repeat this' this? what?

SYMM Response: Repeat the simple animation function f(t). We will make this clearer.

3.3.1 @@ picture would help here

3.3.1 @@ picture would help here: Yes, please!

SYMM Response: Okay.

3.3.1 Example

3.3.1 Example of repeated additive animation: Repeating animation here looks very bad. It's much easier to define this as by='100px' dur='100s' without repeatCount. Please choose a better example.

SYMM Response: It's just a simple example, but we will try to choose a better one. Perhaps an up/down bounce combined with a translation.

3.3.2 'indefinite' could be an id value

3.3.2 'indefinite' could be an id value, but an element with such an id cannot be addressed. One more reason to clean up the syntax here.

SYMM Response: I think that we can use the SMIL-Boston escape mechanism here. We do have some reserved words, such as begin, end, repeat, and this is to make authors jobs easier. If they need to use such things for id's we support backslash escaping the reserved words: "\begin". This is already defined in SMIL-Boston, so we'll bring it into SMIL-Animation.

3.3.5, Figure 3

3.3.5, Figure 3: If this is not simplified (as I very much hope), the spec should very clearly say what happens in the general case, e.g. two 'by' animations, or two 'to' animations.

SYMM Response: This is specified by application of the stated semantics. 'by' animations are by definition additive, so they just add together. 'to' animations are just applied one after the other, using the sandwich model and the equation for "to' animations. In both cases, the output of the first animation becomes the 'underlying value' for the second. In the cases noted, we could also state this explicitly, maybe within an example.

3.3.6, Who clicks?

3.3.6: 'If the clicks again at 6 seconds': Who clicks?

SYMM Response: "the user", thanks, we will fix this.

3.3.6, last paragraph

3.3.6, last paragraph: The SMIL Boston timing model is mentioned, but a reference is missing.

SYMM Response: It needs a link to the SMIL-Boston working draft.

3.5: Sandwich model:

3.5: Sandwich model: - A sandwich is something well known, around the world. 'submarine' is a brand and should not turn up in a spec. Let people who do not know what a sandwich is without getting the 'submarine' hint, which is extremely US-specific, look up this in a dictionary. - A sandwich has bread both at the bottom and at the top. However, this model never explains the top bread layer. Either the top bread layer should be explained, or a different metaphor should be chosen.

SYMM Response: I'm not sure that submarine is a brand. If it is, who owns this brand? If so we can drop the word. As for the top layer of bread, we could say "open faced sandwich". The problem with both of these suggestions is that the long axis of the sandwich is supposed to represent time. This needs to be made clear. Is "hogie" also a brand? What's the generic name for a long narrow sandwich with layers of meat a cheese? BTW, nobody is emotionally attached to the sandwich metaphor, but we have been unable to come up with a better one. Do you have any suggestions?

3.5: GetOverrideStyle()

3.5: GetOverrideStyle(): Where is this defined? Please add a reference.

SYMM Response: In the DOM for CSS2 that is in the DOM2 spec. We can include a reference. Specifically it's at: http://www.w3.org/TR/DOM-Level-2/css.html#CSS-OverrideAndComputed

3.6: State transition model

3.6: State transition model: This has to come much earlier.

SYMM Response: It is not clear that it can, since the state transition conditions rely on semantics that are previously defined.

3.6: Frozen state

3.6: Frozen state: Is that result reflected in the Dom? Even if intermediate states are not, I think it might make sense that a final, long-lastig value actually is.

SYMM Response: No, it's not. The DOM value is not permanently changed. This makes more sense when looked at in the context of SMIL-Boston, which has time containers and so most frozen animations will not be frozen for the duration of the document. Instead, would like to provide a DOM for the animated computed value in SMIL-Boston, as noted above.

3.7.2: 'when a runtime actually'

3.7.2: 'when a runtime actually': Change 'runtime' to 'runtime library' or some such.

SYMM Response: Not library. Maybe "runtime animation engine" in any case, "runtime library" is misleading.

3.7.2: fill="freeze"

3.7.2: 'fill="freeze", this may in fact be the case.': 'this': what?

SYMM Response: Will reword: This may be true in the case of an animation that does not repeat and does not specify fill="freeze".

3.7.3: The word 'seek'

3.7.3: The word 'seek' is used in a very special sense that I haven't found in any dictionary. Seek is more or less a synonym for search, but here it is used instead of 'position', and should be replaced by 'position' or something similarly appropriate.

Response: The word is being used in the same sense as the unix/c file pointer repositioning function "seek()". It implies more than just a simple reposition. "seeking" the document means running it forward or backward in time, and activating/deactivating elements as appropriate. We should specifically define our use of 'seek' in this document and we can use 'reposition' in that definition.

3.8: 'should handled'

3.8: 'should handled' -> 'should be handled'

Response: Okay, thanks.

3.8: 'violates the principal'

3.8: 'violates the principal' -> 'violates the principle'

SYMM Response: Okay, thanks. We will fix this.

4.1: 'it can also animate

4.1: 'it can also animate discrete sets of non-numeric attributes': I guess it can animate a discrete set of values on a single non- numeric attribute.

SYMM Response: Okay rephrase: "...it can also animate a single non-numeric attribute through a discrete set of values."

4.2: Cannot reasonably by interpolated

4.2: Cannot reasonably by interpolated: by -> be

SYMM Response: Okay, thanks. We will fix this.

4.3: It should be mentioned

4.3: It should be mentioned that a host language also has to specify directions, e.g. whether x grows upwards or downwards.

SYMM Response: This definition must already be included in the host language and does not have any specific meaning to the animation framework.

4.3: path:

4.3: path: Please say which features of SVG paths are excluded.

SYMM Response: It should be enough to specifically list the features that are included and state that other features are not supported.

4.3: path:

4.3: path: 'the host language must specify the coordinate system of the path values': The coordinate system is also needed for relative values.

SYMM Response: We will include mention of the need to define the coordinate system for the relative offsets as well as all other position values.

4.3: multiple x values for H/h

4.3: multiple x values for H/h: 'although this generally only makes sense for the relative form': Why?

SYMM Response: We agree, there's no need to say this. We will remove the comment.

4.3: origin="default"

4.3: origin="default": What are the other values? How are they defined?

SYMM Response: These can be defined by the integration language. 'default' just refers to the integrating language's default origin semantics for the object. No other values are specified by the animation module. They are context dependent on the semantics of the integrating language.

4.4: color perception is not linear.

4.4: Say something about the fact that this definition of color animation does not automatically lead to 'nice' color changes, because human color perception is not linear.

SYMM Response: We had discussed this in the SVG\SYMM telecons, and did not wish to deal with all the issues surrounding colorspaces and color gamuts. We decided to include color animation because simple Euclidean sRGB only color animation is still considered useful by authors. Users who care about such things will already know this.

5.2: 'abstract values...

5.2: 'abstract values should handled': add 'be'

SYMM Response: Okay, thanks, we will fix this.

5.2: host languages...

5.2: host languages should be encouraged to suppor the formats defined in XML Schema.

SYMM Response: XML Schemas is not a rec and CSS is. It is assumed that XML Schemas will support at least all the number formats defined by CSS, which are adequate for our purposes.

6.2: 'methods calls'

6.2: 'methods calls' -> 'method calls'.

SYMM Response: Okay, thanks, we will fix this.

6.2: 'boolean true'

6.2: 'boolean true': The 'true' appears much lower than the 'boolean' when I print it out. Please check markup/stylesheet.

SYMM Response: Okay, thanks, we will look into this.

i18n-related comment regarding SMIL Animation

Dear SMIL WG, This is an i18n-related comment regarding SMIL Animation, from the I18N WG and IG.

It does not seem to be possible to animate the contents of an element (e.g. XML element). Maybe this can indeed be done by just leaving out the 'attributeName' attribute. If not, this is a problem. For textual "attributes" that are more than just fixed values, the very clear recommendation from an i18n side is to make these elements, so that if necessary further markup can be used depending on the need of the language and/or script. If the fact that animation is only allowed on attributes leads to a tradeoff between animation and internationalization, that would be highly undesired. The SMIL WG should therefore make sure that element contents (including possibly markup) can be the target of an animation.

Regards, Martin.

SYMM Response: First of all, most of the functionality you suggest can be accomplished simply by using SMIL timing to select subtrees of XML to activate/deactivate. Secondly, there is no restriction on manipulating the contents of an element or what properties of the element can be animated. The limitations are subject to what can be changed at runtime by the DOM. A language could define a pseudo-property of an element to be its "content" and then manipulate this content using string values. This is neither specifically required or prohibited.

For example:

<text>

Hello, World!

<set attributeName="content" to="Goodbye, World" dur="5s">

</ text>

Minor typos in WD-smil-animation-20000128

Objet: minor typos in WD-smil-animation-20000128

Date: Sun, 6 Feb 2000 00:54:39 -0500 (EST)

De: Susan Lesch

Here is a short list of suggested minor typographical improvements for the last call SMIL Animation [1] "work in progress." These comments could be premature, but I hope they help as you move to Candidate Recommendation. I found the spec to be well-written, easy to follow, and in need of almost no corrections. Reference: [1] http://www.w3.org/TR/2000/WD-smil-animation-20000128 

Best wishes and good luck with your project, 

-- Susan Lesch susan@textet.com http://www.textet.com/

SYMM Response: Thank you very much for the comments and nice words!

All e.g.'s

All e.g.'s and i.e.'s need a comma: e.g., and i.e.,

SYMM Response: Thank you. I was wondering why they all looked wrong!

few instances of "doesn't" and "can't"

There are a few instances of "doesn't" and "can't" in section 6.2 which I would spell out "does not" and "cannot."

SYMM Response: Okay, thanks, we will fix this.

parenthesized amplification

Also, parenthesized amplification that is itself a complete sentence needs a preceding semicolon. They appear throughout the spec and I won't enumerate them here. For example, in 3.1 final section for attributeType: The attribute value is one of the following (values are case-sensitive): ^ The attribute value is one of the following; (values are case-sensitive):

SYMM Response: This is new to us. Is it somewhere is White's style guide?

link to [XML] and [SMIL1.0] in the Introduction

I would try to link to [XML] and [SMIL1.0] in the Introduction. (As it stands, those references first come up in sections 3 and 5.)

SYMM Response: Okay, thanks, seems easy enough to do.

3.2.3 last par.

3.2.3 last par. semi-colon semicolon

SYMM Response: Okay, thanks, we will fix this.

3.3 last example

3.3 last example However, animation function still uses the specified simple duration. ^ an or the?

SYMM Response: Should be 'the animation function', thanks.

3.5 par 5

3.5 par 5 it's -> its side-effects -> side effects

SYMM Response: Okay, thanks, we will fix this.

3.6 par 3

3.6 par 3 from the Frozen state to the Finished state from the frozen state to the finished state or from the frozen state to the finished state

SYMM Response: Okay, thanks, we will fix this.

3.7.4 par 2 #3

3.7.4 par 2 #3 begin="indefinite" -> begin="indefinite"

SYMM Response: Okay, thanks, we will fix this.

3.7.4 par 5

3.7.4 par 5 seeked- to -> seeked-to

SYMM Response: Okay, thanks, we will fix this.

4.2. Example 2

4.2. Example 2 sets class attribute sets the class attribute [not sure here]

SYMM Response: Actually, should be: sets the "class" attribute.

4.3 Vertical Line To

4.3 Vertical Line To although generally although this generally

SYMM Response: Okay, thanks. We may drop this phrase anyway.

4.3 Cubic Bezier Curve To commands

4.3 Cubic bezier Curve To commands -> Cubic Bezier Curve To commands [assuming that you want to capitalize Bezier elsewhere]

SYMM Response: Okay, thanks, we will fix this.

4.3 calcMode and origin

4.3 calcMode and origin.

I would make these P-delimited points or ULs (rather than BR-delimited sentences). Also the final mention of calcMode could be marked up calcMode.

SYMM Response: Agreed, should change to p's.

4.4 par 2 sRGB could link to a reference:

4.4 par 2 sRGB could link to a reference: [SRGB] "A Standard Default Color Space for the Internet - sRGB", M. Anderson, R. Motta, S. Chandrasekar, M. Stokes. Available at: http://www.w3.org/Graphics/Color/sRGB.html.

SYMM Response: Good idea, will do, thanks.

5. intro par

5. intro par allowed/supported events. [To remove the slash construct, I'd propose the following minor rewrite:] This includes basic definitions, constraints upon animation, allowed events and supported events.

SYMM Response: Agree, thanks for the rewrite.

5.2 par 2 "...Host language designers are discouraged..."

"...Host language designers are discouraged from allowing animation elements to target elements outside of the document in which the animation element is defined (the XLink syntax for the target element could allow this, but the SMIL timing and animation semantics of this are not defined in this version of SMIL Animation)." [I would break this into two sentences:] Host language designers are discouraged from allowing animation elements to target elements outside of the document in which the animation element is defined. (The XLink syntax for the target element could allow this, but the SMIL timing and animation semantics of this are not defined in this version of SMIL Animation.)

SYMM Response: Okay, thanks.

6.2 par 3

6.2 par 3 in the much same way in much the same way

SYMM Response: Oops, thanks for catching this.

6.2 par 7

6.2 par 7 DOMImplementation -> DOM Implementation

SYMM Response: No. The reference and link is to the "DOMImplementation" interface, which is one word.

6.2 ElementTimeControl - Methods - Return Values for...

6.2 ElementTimeControl - Methods

Return Values for beginElement, beginElementAt, endElement, and endElementAt: The list items contain complete sentences without caps or periods. Example: (the begin attribute is not set to "indefinite") Could read: (The begin attribute is not set to "indefinite".)

SYMM Response: You're right, looks messy. Thanks for the suggestion.

6.5 Object TimeEvent

6.5 Object TimeEvent 

"TimeEvent has the all the properties TimeEvent has all the properties"

SYMM Response: Oops, thanks for catching this.

8. [HTML]

8. [HTML] HTML 4.0 Specification HTML 4.01 Specification

SYMM Response: Okay, thanks, we will fix this.

Additional issues sent in by Jon Ferraiolo of the SVG-WG

These were discussed and resolved at SYM\SVG telecon on April 12, 2000.

section 3.1 fifth paragraph

The SMIL Animation draft (Jan 28) in section 3.1 fifth paragraph says to include a namespace prefix if a given target attribute is not in the namespace of the target element. Actually, this is incorrect on two fronts, I believe:

a) According to my understanding of the XML Namespace spec, attributes without a namespace prefix are not in any namespace (they are in some sort of anonymous namespace). They are not in the namespace of the given element. Thus, the SMIL Animation spec needs to be changed to say that you must specify a namespace "if the target attribute is in an XML namespace".

b) The DOM2 spec is very clear that attributes are identified according to their _namespaceURI_ and their local name. The prefix is just something that is kept around and does not represent anything that can be counted on as being accurate or meaningful.

Thus, I believe that SMIL Animation needs a new attribute on the various animation elements to identify the namespace for the attribute that is being animated. A proposal is an attribute called 'attributeNS'. The value of the attribute is a namespace string, not a prefix, to match how DOM2 deals with namespace strings and not prefixes.

SVG needs this because we use the XLink namespace.

SYMM Response to a: It was a surprise to us to find that namespaces put such a burden on the document author. We will change the language to say that namespace qualification is okay, and remove the implication as to when it is or is not necessary. SYMM Response to b: Well put a note into integration section that making dynamic with QNames requires more work of implementation because DOM does not support this.

'systemRequired' to take a list of names?

SVG would like 'systemRequired' to take a list of names, not just a single name. We want to allow an element within a 'switch' test for both DOM and animation support, for example.

SYMM Response: Will propose to SYMM-WG that SMIL-Boston 'system-required' uses NMTOKENS so that it can take more than one name.

Why is 'animateColor' needed?

Why is 'animateColor' needed instead of just using 'animate'?

SYMM Response: In order to do compound interpolation, instead of a scalar and incorporate clamping and color specific semantics, it made more sense to include this in the semantics of the element rather than define a data type for SMIL Animation. We don't define any other data types, and our consistent strategy here has been to leave that up to the integrating language.

'system-language' considered harmful?

Martin Duerst of the I18N IG thinks 'system-language' (nka systemLanguage) is a bad attribute name and thinks it should be changed to userLanguage. (The SVG group thinks the most important thing is that SMIL-Boston and SVG are consistent, so we are very likely to go along with whatever the SYMM group thinks about this issue.)

SYMM Response: 'systemLanguage' represents the core language of platform, the language that the OS uses to communicate with the user. Also, 'systemLanguage' has historical interpretation, and is already in SMIL 1.0. If we need both attributes, then SVG should send us a proposal for the userLanguage attribute along with a definition of its semantics.

What happens if no animation values are provided?

The SMIL Animation spec doesn't explicitly state what happens if no animation values are provided (e.g., no from/by/to or values). My assumption is that the underlying value is retained throughout the length of the animation. Is this correct? Should a sentence be added to make this clear?

SYMM Response: We should say that nothing happens or no effect. We will check on this.

Include negative offsets?

Will the SMIL Animation draft be updated to include negative offsets from an event-value?

SYMM Response: Yes, this comes with the new syntax and the extended semantics that we are pulling from SMIL-Boston.

Relaxing the path data requirements

Relaxing the path data requirements for SMIL Animation to remove the requirement of an initial moveto. Is this necessary?

SYMM Response: We will stay consistent with SVG, and keep the initial moveto. If SVG changes this semantic, then we will too.

Rules for attributeType'

Do we want to talk about attributeType's rules (i.e., CSS takes priority over XML) against the Converged SVG proposal where CSS properties are also available as XML attributes?

SYMM Response: This is SVG issue, not animation issue. CSS should win over XML, as is usual.

Editorial nit

Editorial nit: In section 3.1 of SMIL Animation (Jan 28 spec) fourth paragraph, the term "CSS namespace" is used. It would probably be better to talk about "the list of CSS properties which are recognized by the user agent." Same comment applies to the description of the 'auto' keyword which comes a few paragraphs later.

SYMM Response: Okay, we will look at this.

The Xlink href example

The Xlink href example needs to show proper use of the XLink namespace properly, as in:

  <foo xmlns:xlink="http://www.w3.org/1999/xlink/namespace/">
    <animate xlink:href="#foo" attribute="bar" .../>
  </foo>
SYMM Response: Okay. We can modify the example to align to this.

Additional issues sent in by Tim Berners-Lee

Date: Tue, 4 Apr 2000 18:28:12 -0400 (EDT) 

From: "Tim Berners-Lee" <timbl@w3.org

To: <www-smil@w3.org

Subject: [Moderator Action] SMIL muddled about Namespaces 

This has just come to my attention. http://www.w3.org/TR/2000/WD-smil-animation-20000128/ says: "All constraints upon animation must be described in the host language specification, as the DTD cannot reasonably express this." 

Please specify a way to do this using schemas. 

There is an example in which there are no namespaces:

<rect ...>   
<animate attributeName="width"  from="10px"  to="100px"
            begin="0s" dur="10s" />
<animate attributeName="height" from="100px" to="10px"
            begin="0s" dur="10s" />
</rect> 
used to distinguish between the SVG and SMIL spaces. This is clearly an error. Please ensure that future version of the spec use namespaces clearly. 

Tim BL

SYMM Response: 
Taking the first issue first, the constraints upon animation are dependent upon the semantics of the integrating language. We are not in a position to decide for these future languages what the limitations should be, or how they should be expressed, since this is very dependent upon the needs of the language. To the extent that these restrictions are expressible in a DTD, XML Schema, or other machine-readable technology, the language designer should take advantage of these facilities, however it is unclear what kinds of restrictions on animation can and cannot be expressed with an XML Schema and also unclear specifically how to do this with XML Schemas as they are a new technology with little implementation experience and not yet a full W3C Recommendation. 

As far as the second issue, there is no problem with namespaces here. The example is straight from SVG, and uses the elements and attributes defined in the SVG specification. While the timing and animation attributes and elements are present in the "SMIL-Animation namespace", SVG defines them as being part of the SVG language and does not qualify them as being part of a separate namespace. It certainly should be possible to create a namespace as a combination or superset of other namespaces, to support this, or to have elements/attributes be included in more than one namespace. In any case, this is a decision for SVG, and the example simply reflects the syntax in their language. Please see: http://www.w3.org/TR/SVG/animate.html#AnimateElement.


Last modified on: Tuesday, April 18, 2000 04:17:06 PM  

By: Aaron Cohen (aaron.m.cohen@intel.com)