See also: IRC log
Henry will be a little bit late on Monday morning.
Norm: I think we need consider
the state of the draft, the test suite, coverage,
... and beginning to draft our PR request.
... One bit of good news in that regard, Liam noted that it's unheard of for a spec to go from LC to PR.
... And also the default XML processing model.
... Let's do default XML processing model on Tuesday morning so Mohamed can participate by phone.
Mohamed: I'll also try to have some ideas in place for not going back to Last Call.
Norm: Any comments on the latest editor's draft?
Vojtech: I have no big problems
with the new versioning scheme, so I'm fine with that.
... I think relaxing the rules for with-option/with-param is a good thing.
... I think this small change to parameter input ports will also make things easier.
Norm: Right. With respect to not breaking existing pipelines, we have the required version attribute issue.
Henry: I don't think the required
version attribute has any impact on the LC to PR
... If we can make the argument that there's good interoperability that's been demonstrated by the end of the LC period then we can go to PR, the scale of the change isn't relevant.
... Personally, I've changed my mind three times int he last two minutes, I don't know what the right answer is.
Norm: Does anyone know what the right answer is? Is anyone strongly in favor of one position or the other?
Vojtech: One breaks existing pipelines, but making it required may be odd. Moving a pipeline out of a library will require adding the attribute.
Norm: But that cuts both ways, if you don't make it required then a pipeline from a V2 library silently becomes a V1 pipeline.
Some discussion about whether or not mixing pipelines of different versions is a problem.
Mohamed: So for example you can have a pipeline A in V1 that imports a pipeline B in V2.
Mohamed: But what's the value of the static context for the version.
Vojtech: It's a static value, it's not dymanic at all.
Mohamed thinks we're rehashing a discussion from several years ago.
Mohamed: What does this mean: <p:pipeline version="1.0"> ... <p:xslt use-when="p:system-property('p:version') = '2.0'">...
Norm: I think a processor loads
that pipeline with the V1 rules: no unknown steps, no unknown
options, etc. But at runtime, if it really is a V2 processor
then the use-when will return true.
... If you want to run a V2 pipeline, you have to specify version="2.0"; if you want it to work in a V1 processor, you have to protect those regions that aren't fowards-compatible with use-when.
Henry: If I'm a V1 processor and
I encounter a V1 pipeline, then I know what to do. If I'm a V2
processor and I encouter a version="1.0" pipeline and I
encounter a V2 step then...
... So if I encounter a step that I do understand, but isn't in V1, I have to throw an error. Is that clear?
Norm: No, I think that's probably not clear enough.
Henry: I think we should clarify that: a V2 step is an error in a pipeline being run in backwards-compatibe V1 mode, even if the processor recognizes it.
Some discussion about what it even means for this spec to have a backwards compatible section given that there are no preceding versions.
Vojtech: Now that we have this version attribute and the p:version system property, and something similar for the xpath-version, I wonder if we shouldn't make p:version a sequence like p:xpath-version.
... I'm not sure I see the value given that XProc version really only determines what constitutes a static error
Vojtech: But what about a step you want to have in V1 and V3, but not V2.
Mohamed: What about a future where there's a 2.0 "iso" version and a 2.0 "w3c" version.
Norm: I'm reluctant to go there.
Mohamed: So suppose there's a 1.1
and a 2.0.
... Some implementations only implement 2.0 and 1.0 backwards compatibility and others implement 1.1
Vojtech: There's a small asymetry between the system properties.
Norm: What do others think about this assymetry?
Vojtech: I think in the use-when you may not have enough information to decide which part of the pipeline to include.
Vojtech: I'm not sure, but soemthing like a processor that implements 1.0 and 2.0 but not 1.1. In use-when you can't test this.
Norm: Fair enough.
... XPath "=" comparisons are existential so I guess it wouldn't do any harm.
Vojtech: Except in XPath 1.0 you'd get only the first one.
Norm: Ah. Yes.
Henry: All of the following are
possible: I support V1, V2 and V1 in backwards compatible mode,
and only V2.
... The problem is that we've tied our hands here. We might have been better off if we'd provided a function p:supports-version that returns true or false. So you can find out by querying whether a particular version is supported.
Norm: And a p:supports-xpath-version function?
Mohamed: That's what we proposed on May, 2008.
<MoZ> | Just thinking: Wouldn't it make sense to have an XPath extension
<MoZ> | function p:xpath-version-supported(version), similarly to
<MoZ> | p:psvi-supported()? Some of the processors will support only XPath 1.0,
<MoZ> | some 2.0, but not necessarily 1.0, etc., so perhaps it could be useful
<MoZ> | to have access to this information in the pipeline.
<MoZ> I thought the resolution from last Thursday used only the system
<MoZ> property, I thought p:psvi-supported() whent away? I've never
<MoZ> understood how the system property and the function would ever be
Henry: The value of psvi support
is a boolean, so there's never any possibility of
... But versions aren't booleans. As quoted the answer above doesn't really answer the question.
Mohamed: I think once you're dealing with an atomic value, there's no problem. But once you have a sequence, there is a difference.
Norm: Given that implementors have to implement a few functions, I don't see the harm in adding a few more.
Vojtech: What if you want to know all the versions.
Henry: I think having both the system property and the function is the right resolution to this issue.
Proposal: The p:version system property returns a space separated list. Add a p:version-available(xs:decimal) function and a p:xpath-version-avaialable(xs:decimal) function to query for specific versions.