I've recently been thinking in terms of 'correspondence' and find it useful to think about the strength of models. E.g. plain text has a very strong correspondence between the display model and storage model (linear, 1-to-1, with some special markers like newlines). Nothing is hidden. It also has a strong correspondence with the input method: keyboard, often 1 key -> 1 char (but not always). If I see a picture of some code anywhere, I know instantly how to recreate it 'precisely'. Can't do that with a vector diagram or a spreadsheet. Also the standard storage operations (read/write) give me exactly the same elements (chars) that correspond directly with ~keys and visual cells. This is the appeal of plain text files.
Where it falls short is when I seek stronger correspondence to other models represented in the plain text (e.g. AST or some other structure, inter links, etc.). Now there's parsing and file formats involved, a lot of duplication of logic across different readers that interpret the text, false versioniong (text versioning != ast versioning) and so on.