On Apr 6, 2010, at 11:47 AM, Krzysztof KosiĆski wrote:
The upgrade procedure must run exactly once for any document. This means that if we introduce a change in the interpretation of XML between revision FOO and FOO+1, then FOO+1 must perform the upgrade on documents saved in FOO and earlier,
[SNIP]
This is hairy, possibly tedious to implement, etc., but at the same it's the long-term solution.
Well, it is *one* way to go, but it is not the *only* way to solve this problem. All considerations of the details of compatibility numbering aside, I think viewing things as an "upgrade process" is viewing the problem in a fundamentally flawed way.
As we kick off for 0.49 we can get to pin down specifics, but this is not really a case where we want to "upgrade files", but rather one where we need to "load different versions correctly". That is the big picture of what we're trying to end up with. The low-level "how" of the implementation can go a few ways, but I've seen viewing things as an "upgrade procedure" will cause us the most long-term pain. A simple shift in how we view the problem, though, can save us quite a lot of complexity and pain.