I'm subscribed to this discussion in case someone is very motivated in creating some sort of migration framework/guideline and could benefit from some concise advice.
It's possible to create an entire independent parser that understand up to 100% of IPB's (or any other software's) markup. It could even be configured to output tags that are compatible with Flarum's, e.g. it would create <URL>
tags even if IPB's tags are called link
or whatever. The downside is that you'd be stuck forever supporting IPB's markup in Flarum, which is less than desirable. The next step would be to safely convert the XML representation of that IPB-style parser into something that looks like it was created on Flarum directly. For that, I created the ParsedDOM utility. However, I don't think anybody has ever used it.
Original text from IPB
↳ (gets fed to) ↴
Special parser configured for IPB
↳ (which generates) ↴
XML representation for IPB content
↳ (that can be transformed into) ↴
XML representation that looks like it was generated by Flarum
The parser would be completely independent from IPB and the convertor does not necessarily need anything from Flarum, which makes them unit-testable in isolation. They're just tools that transform text into XML for the former, and XML into slightly different XML for the latter.
I would consider personally writing the IPB parser as a bundle as part of the s9e\TextFormatter library if a motivated individual with an official IPB license handled everything needed on the IPB side.