question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Backwards and forwards compatibility

See original GitHub issue

Currently OTIO can read old .otio files that were serialized with older schema versions, because there is a built-in schema upgrade system. However, if an .otio file is written with a brand new schema revision, then software linked with an older version of OTIO will not be able to read those files. If you attempt this, a SCHEMA_VERSION_UNSUPPORTED error occurs.

In a one-way pipeline, this is manageable, as long as you are careful to upgrade the OTIO version in your software starting with the most downstream end of the pipeline, working your way back to the start. For example a pipeline which passes .otio files from: A to B to C is upgraded C, then B, then A.

However, one of OTIO’s stated goals is to support round-trip pipelines. Even if a pipeline is only two pieces of software, A and B, they must be upgraded in lock step anytime a OTIO schema version change is introduced.

To solve this problem, we must do one of the following:

  • Allow modern OTIO software to write out old OTIO schema (controlled by a configuration option).
  • Allow old OTIO software to read modern OTIO schema (via some runtime plugin).
  • Modify our strategy for schema changes to ensure that revisions can still be read by old software (within some range of versions).
  • Never change the schema.

Are there other options? Can we look at other file formats for inspiration or guidance on this?

Issue Analytics

  • State:closed
  • Created a year ago
  • Comments:13 (2 by maintainers)

github_iconTop GitHub Comments

1reaction
JeanChristopheMorinPersocommented, Aug 29, 2022

@ssteinbach in case you want this issue to be closed when your PR gets merged, you have to link the other way around. In the sense that it’s in your PR description that you need to mark your PR as closing this issue, see https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue.

0reactions
ssteinbachcommented, Sep 12, 2022

Closed by #1387

Read more comments on GitHub >

github_iconTop Results From Across the Web

Backward vs. Forward Compatibility | by Steven Heidel - Medium
Backward compatibility means that readers with a newer schema can correctly parse data from writers with an older schema. · Forwards compatibility means...
Read more >
Forward compatibility - Wikipedia
Forward compatibility or upward compatibility is a design characteristic that allows a system to accept input intended for a later version of itself....
Read more >
Forward Compatibility vs. Backward Compatibility - YouTube
This video explains what forward compatibility and backward compatibility are and what the difference between them is.
Read more >
What is Backward Compatible (Backward Compatibility)?
Backward compatibility is more easily accomplished if the previous versions have been designed to be forward compatible, or extensible, with built-in ...
Read more >
Protocol Buffers Best Practices for Backward and Forward ...
If a client that was updated to a new message type but is still able to understand the previous message type then the...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found