Title: The MQXLIFF format
Context: This article explains why we decided to use XLIFF as a standard bilingual document format of memoQ, and why did we decide to call it MQXLIFF. It sheds light on the differences from the standard XLIFF.
Description: XLIFF is a standard but the standard itself is not perfect and does not cover all use cases. For example, one basic goal with the MQXLIFF format was to be able to export a memoQ translation document into this format, import it into another memoQ project losslessly, with all information retained. The XLIFF standard simply doesn't have all the features we need, we couldn't just use "vanilla" XLIFF and ensure it holds every bit of information, for example, about versioning.
XLIFF has a trick to solve this problem, it is extensible. It means that you can extend it by defining new types of information. This is how MQXLIFF (or also SDLXLIFF, a competitive format) were born: both are "flavors" of XLIFF with some custom extensions. It is also important that both SDLXLIFF and MQXLIFF are still XLIFF at heart, they just hold some additional information that only memoQ or SDL Trados Studio can use. Any software that claims to be able to support XLIFF should be able to import SDLXLIFF files or MQXLIFF files, and you should always have the basics: source and target segments correctly displayed.
But all the information that is held in custom extensions are only available to tools that understand the specific custom extensions. For example, Studio has quite advanced commenting, and SDLXLIFF has its own custom extensions for that commenting system. memoQ has advanced versioning, and uses extensions again to represent that in MQXLIFF. Both Studio and memoQ uses extensions for the segment statuses, because, it seems, vanilla XLIFF has a status system that didn't look viable to either Kilgray or SDL.
memoQ now has specific support for SDLXLIFF, which means that we had a good look at their extensions, and figured out how to interpret them.