I am just back from the W3C Technical Plenary week in Cannes-Mandelieu (South of France). The Tech Plenary is a week-long yearly meeting where all the W3C working groups are present. Overall, this is just a great opportunity to meet people and to get some work done.
On Monday and Tuesday, I attended the first face to face meeting ever of the XML Processing ("XProc") working group. There were about eight of us working group members, and one or two observers. I had already met in the past with three members of the group, and it was a pleasure to see them again and to meet the rest of the group. Even in these days of email and voice over IP, nothing can replace meeting people face to face.
We obviously wanted to leverage as much time as we could to deal face to face with topics that are harder to deal with on the phone. So we went over some of the use cases collected so far, trying to reach agreement over their implications. This has proven a fairly difficult task, but overall quite beneficial. We also had presentations of WG members' existing implementations. After all, we really want to standardize existing technology, and it is enlightening to see what current implementations do, or (in one case) how the lack of an actual implementation is worked around and what the hopes for an actual implementation are.
We tackled issues such as the data model (what flows between the pipes); components interface (how a component interacts with the pipeline language); conditionals, iterations and error handling; and even whether passing binary and text in a pipeline is something we want to contemplate.
We seem to have reached a certain consensus on the fact that we want components in a pipeline to be able to send and receive "sequences of documents". In contrast, XPL allows a processor output or pipeline input to produce exactly one document when it is consumed (and no document when it is not consumed), and dealing with sequences of documents should be an improvement that allows certain use cases to be implemented in a better way. Case in point, the XPL
for-each functionality currently requires document extraction and aggregation to work around the absence of sequences. This solution should also be contrasted with a more elaborate model whereby not only documents, but XDM instances are passed. The "sequence of documents" approach seems so far to be a good middle ground.
One question we have not yet resolved is that of component parameters. We now appear to agree that "parameters" are necessary, for such use cases as XSLT. Static parameters are not an issue, but the difficult question regards how you dynamically produce parameters. So far, this remains to be agreed upon. Another remaining question will be that of whether we opt for a "push" or "pull" execution model. The hope is that this decision does not have to be made and that implementations will be free to choose the execution model, but the consequences of such a decision have yet to be pondered.
Overall, while it may have looked at times that we were not progressing much, I do believe that we actually made quite significant progress. Let's keep it up so that we get something out of the door this year!