I’m developing a Notes module for my note-taking application (Notes Together). To cover a range of user scenarios, I think notes need to allow semantic markup (headings, lists, emphasis, images, etc.) but not style markup. Notes are for quick personal reference, not presentation.
The general scenario is a collection of notes shared between a couple of users, using two or more apps. The protocol makes conflicts uncommon, but they will happen, particularly when collaborating in real time. The unit of conflict will typically be a paragraph or less. For this kind of textual material, automatic conflict resolution is possible, by retaining both versions of conflicting sections. (Unlike source code, ungrammatical or redundant text is usable. Users can edit out weirdness at their leisure.)
Therefore, the data storage format should be as close as possible to the users’ mental model, so merging markup produces reasonable results. There are two obvious alternatives: Markdown or a constrained subset of HTML. Markdown is simpler, but some fairly common markup isn’t yet supported, and other markup is unlikely to ever be supported. HTML allows advanced markup, but has many security issues and is difficult for editors to handle consistently. There are also other lightweight markup languages: reStructuredText, AsciiDoc, setext, etc. but it’s not clear they have tooling that produces an abstract syntax tree.
I intend to decide in the next couple weeks on a data storage format. I’m leaning toward Markdown, but I would like to hear opinions on alternatives.