Here's my take on the issue. Comments below.
Dave wrote:
> I was under the impression that since all newer versions of LIFT are
> guaranteed to be backwards-compatible with previous versions, the onus
> is on the developer of the target (import) application to simply
> ignore anything it doesn’t know about. Thus, if I output 0.13 but the
> target application only knows about 0.12, it simply ignores the
> elements/attributes it doesn't know about.
>
>
That would be fine. The intention I think, is that Lift changes slowly
and is backwards compatible. That is, there is a reasonable migration
path from one version to the next.
> Thus, LIFT behaves like RTF. I can save in the latest version of RTF,
> but open it in a program that was written when RTF was three versions
> older. I may not get all the features, but it still opens and handles
> the RTF tags that it does know, while ignoring the ones it doesn't
> understand (or care about.)
>
>
To play nicely with others there are certain obligations on software.
This isn't explicit in the lift standard per se, but makes sense.
Perhaps these could be come recommended practices for implementors.
- If the input complies with the schema, then your app must round trip
the file correctly. Including elements you don't use. The principle of
'do no harm' to the data.
- The app *could* have a go at importing lift that is 'future' from it's
perspective. e.g. last build with say 10 and trying to load 13. The 'do
no harm' above should help there.
As you say, some apps at the moment just don't load future (to them)
versions.
> The impression I got from John is that my assumption is not accurate,
> i.e. applications are simply failing if they receive a newer LIFT
> version file. I'm wondering if it's too late to turn the tide on this
> and encourage LIFT-compatible readers to degrade gracefully
>
No it's not too late. Certainly I don't think anyone is advocating that
apps just fail on new lift.
> I realize this makes the import process more difficult for us
> developers, but hey, that's our job!
Agree whole heartedly.
Some times, to inter-operate with a particular app tools might have to
'down grade' the lift. One idea that we've had floating around is that
we provide some transforms (or whatever) to save our model to current
lift, and back to older lift also.
WeSay for example has the save to lift suitable for flex 5.4 which had
limited lift import export capability.
> The alternatives, as I see it,
> are either:
>
>
As you say, the alternatives are not pleasant.
Regards,
Cambell
I sure am, and that's exactly what WeSay and FLEx do. Maybe I'm just
overwhelmed with how much lift-related code and features I'm responsible
for... from where I sit, I can't imagine taking on the burden of "doing no
harm" to a format that was created after I wrote the code, which has a
schema that I don't posses. I'm not going there, and I don't want to get
the bug reports when my software tries to read the results of others who do
go there. I'm already tired of the bug reports that go "when I open the
LIFT I exported from _____ into wesay, it says these awful things like 'the
<entry> element was not closed'. What's wrong with WeSay?"
John Hatton
SIL PNG, Palaso, & SIL International Software Development
Google Talk chat: hattonjohn