For composing text in blocks on existing pages, like comments or posts, you would need a lighter-weight solution.
SlateJS (https://github.com/ianstormtaylor/slate) fits that purpose for me exceedingly well, more than DraftJS, Quill and others, since it doesn't treat XML/HTML as a second-class citizen.
The levels of complexity with text representation are:
Document -> Post -> Text
which corresponds roughly to the data sources:
JSON/Data Structure -> XML/HTML -> Plaintext / Markdown
Markdown can "upscale" to documents, but JSON data structures, by virtue of their complexity, do not "downscale" well at all to Markdown.
HTML is the simple middle for me: it shouldn't be used for documents, but it is totally intuitive for posts where a users simply wants to adjust the color of one's text. The blocks wrapping this text should own the data structure, e.g. a flag for "NSFW Content" shouldn't be in the text editor but an option on the post itself.