See also: IRC log
No regrets heard.
Paul gives regrets for 29 Oct
Expected: Norm, Henry, Alex, Vojtech, correct?
Norm: I believe I requested a phone, we'll hook up Zakim for you if we can.
Alex gives regrets for TPAC after all
Norm attempts to summarize where we stand.
Norm: The status quo allows very
limited forwards-compatibility and only if new step
declarations are loaded from the W3C server.
... You can't just load a V2 pipeline in a V1 processor and expect it to work.
... The desire has been expressed, from several camps, to provide a more flexible story.
... They want something that will "just work"
... And the ability to use p:choose to select between two different flavors of pipeline, for V1 or V2.
... And they don't want to have to hit the W3C web server for new decls to make it work.
... The last point to make is, if you don't do versioning "right" in V1, it's very hard to get it right later.
... Do we care? Are we going to try to address this in V1?
No one is heard to argue for the status quo.
Mohamed: Let's go as far as possible in the investigation since this is the last chance. But at the end, perhaps we'll stick to the status quo.
<ht> +1 to MoZ
Norm: I think the proposals boil down to two camps:
1. Some sort of defaulting rules for what to do when you see steps/ports in the p: namespace that you don't recognize.
2. Some sort of static manipulation like XSLT's use-when
Norm attempts to summarize the two flavors.
Alex: Thinking about Norm's proposal for empty sequence on output.
Norm: One weakness of my proposal is that it requires you to have the 2.0 declarations.
<ht> As I said in email, I find Jeni's critique of that [being online] compelling
Alex: The 1.0 processor isn't going to do the right thing...
Vojtech: If we introduce defaulting that can work without the declarations, then we have to be a lot more relaxed about static errors.
<ht> That's why I prefer the use-when approach
Alex: If you're trying to do this, the onus on the 1.0 processor is that it has to go retrieve the stuff.
Norm: I'm (mostly) convinced by
the offline arguments.
... The reality is, I think the use-when approach is the most practical. It balances ignoring things with user-control.
... It's the C preprocessor.
Vojtech: Does this solve what we
want to solve?
... This is really the forwards-compatible mode. When you evaluate these use-when conditions, you wind up with some sort of pipeline.
Alex: One interpretation is that
we have this static view and we're trying to adjust that. The
other is that the data flow graph is the same in both
situations, but what the steps can do is different.
... In the case where you produce an empty sequence, you can still hook things up.
Norm: Right. If you have the declarations.
Norm natters on about the need to have declarations.
Norm points out that the user community that wants us to fix this isn't going to be happy with the need to load declaratins.
Alex: I'm not against the use-when approach.
Norm wonders out loud about the requirement to use use-when; or can we have p:when that contains a step we don't recognize and still "compile" the pipeline.
Alex: I don't think use-when is as simple as it is in the case of XSLT.
Norm: And does this really solve
the backwards compability problem? If you throw a random V2
pipeline at a V1 processor, what will it do?
... If a pipeline uses a V2 step unconditionally, there's nothing a V1 processor can do with it.
... So if an author wants to write a pipeline that can run in V1, he or she will have to use some sort of conditionality.
Mohamed: My understanding is that
we have three levels:
...1: mandate importing of step decls; without them then there are two levels:
...1a: primary ports
...1b: secondary ports
... My understanding is that only primary ports could be connected automatically.
Mohamed: So I think the lack of information that we have to compute the graph dependencies is only on primary ports.
Mohamed: On one branch, we say
that a new primary port can never be added in V.next.
... Or, we say that if you add some primary port then we say that you have to make the connection explicit if you want to run it in V1.
Vojtech: This is only about existing steps, not about new steps.
Mohamed: The same could be true for new steps, you have to make all the bindings explicit.
Norm: So if you see a new step, you assume that it has no primary inputs or outputs.
Mohamed: As soon as we say that we don't want the user to import the step declarations, then the user will have to put new information into the pipeline to make it work in V1.
Vojtech: For new V2 things that have have inputs like "iteration-source" that aren't recognized, then the pipeline will just fail.
Mohamed: The only point of my proposal is that it moves the entire static validation into dynamic when you have p:choose or p:try
Norm talks through the "propagate errors up" story again.
Mohamed observes that we have to support p:choose/p:try dynamically.
Vojtech: We have to decide if a
new messages output port on p:xslt should work or should be a
... I don't think we can really solve this.
Alex: I'm having trouble following the different situations we want to handle.
Norm: Is there consensus to explore a radical solution that involves defaulting, use-when, and the other mechanisms that we've discussed here?
Proposal: Norm to attempt to write this up?
<ht> Willing to help
Norm: I think the solution has these general features:
1. Remove the requirement to load step declarations
2. Add use-when to allow authors to be explicitly dynamic
3. Add some defaulting rules to allow for dynamic selection (p:choose) of steps from different versions. (p:identity vs. p:identity-with-colors)
4. Add a version attribute to identify when forwards compatible behavior is required
Norm: I don't want a V1 processor
running a pipeline that it thinks is a V1 pipeline to be unable
to statically reject broken pipelines.
... I suppose we could require a version attribute, like XSLT does.
ht, can you send email reminding us how short LC and CR are allowed to be?
<ht> Will do