Ah these poor fools. Having built this exact product (OOXML compatible editor in React) before, it took all of two minutes to find a bug. The issue is that the OOXML spec is not in fact definitive - Word is, and trying to implement it from the spec will produce something that works maybe 80% of the time then fall over completely when you hit one of hundreds of minor, undocumented edge cases. Assuming of course that CC did not just hallucinate something. And then there's the more fundamental problem that HTML/CSS has unresolvable incompatibilities with OOXML. This is why Google Docs for instance use canvas for rendering.
When I saw the title I couldn't help but ask myself: how?
The spec is over 5000 pages long - no way in hell a human could parse this in a reasonable timeframe and no agent today has nearly the necessary context.
EDIT: also, like you said: the spec is secondary to the implementation and was only published (and not even in complete form originally!) because Microsoft was asked by the EU to do that.
Acrobat at least hasn't been relevant for over a decade outside of niche concerns (like javascript-enabled pdfs, which I have seen exactly twice in the wild... these should be illegal by the way). You can't say the same about microsoft.
This is not true IME, because PDF and PostScript are so tightly coupled. If your PDF renderer doesn't tightly align with Acrobat, it's highly likely to not print correctly, hence Acrobat __is__ the spec.
I feel the pain having had to build a browser based pdf editor with features not found anywhere else. React was hammered into working and turned out pretty good. But my god, it was quite a journey. As with all enterprise projects, this one was shelved because business changed their minds. Two years of figuring it out just wasted …
IE was used well until EOL and is still being used in some places. I have no doubt Adobe Acrobat is the same way. Likely few if any new users but old ones will keep using what they're familiar with.
Fair point, we know the editor isn't yet 1:1 with Word. When you built yours, was Word your source of truth (reverse-engineering sense), or did you stick to MS-OE376? And any recommended process for systematically uncovering those undocumented edge cases?
We went out and used our editor against our and customer's documents. The Open part of OOXML makes as much sense as the Open in OpenAI. Microsoft made OOXML available to fend off an antitrust lawsuit, there is no incentive for them to make it actually easy to build competing editors off their specification.
FWIW the bug I found is that your comment parser assumes the w:date attribute represents a useful timestamp of when comments are made. It does not - a bug in Word causes it to save it as ISO8601 local time but _without timezone_, rendering it useless if more than one user across different timezone edits the document. Instead, you need to cross reference the comment with a newer comment part and find a dateUtc attribute. The above is, of course, completely undocumented.
We don’t have a formal '% compatibility' metric yet, but it’s on our radar as a feedback loop mechanism for self-improvement.
For now, we mostly rely on testing with our own and customer docs. In practice, we were seeing solid results after a couple of days of keeping Claude working in the loop and giving lots of feedback: .docx files along with screenshots annotated to highlight what didn’t work.
This is a very naive mindset, getting the last 10% is going to be 90% of the work. Learn from other projects that have tried and failed. I can guarantee you LibreOffice was not built with "our own and customer docs" as a test harness.