@b0rk I ran a survey (n = 5) when investigating new terminology for jj: https://docs.google.com/document/d/1qrv8I_IqRz8CdohZw6VcMssBEetoGmQj33vPz1_XlYI/edit
I got similar results: a 50/50 split for diffs vs snapshots. I was more interested to find that people are largely unified about a "revision" being a snapshot.
I think the framing of mental models as "wrong" could be improved ("all models are wrong, but some are useful"). Let's say models are "robust" or not instead. Gravity as a force instead of warping spacetime is a highly robust mental model, even though relativity explains more phenomena. Indeed, we consciously *choose* to model problems using gravity as a force, even though we know that it's technically wrong. This is a characteristic of a robust mental model.
Commits as diffs (or snapshots) is a robust mental model. It explains a great deal of the phenomena that one encounters. Indeed, the underlying implementation could be switched from snapshots to diffs with little user impact. Thus, we can confidently say that it's a robust mental model.
In contrast, branches as "containers" of commits is much less robust. You get problems quickly when two branches point to the same commit, or you rebase a branch without its descendant branches. Thus, this model is much less robust.
I recall in chemistry class learning several different models to explain the same phenomenon (such as for acids/bases). Perhaps we should reject "commits as snapshots" as the ultimate explanation for beginners, and instead teach both, for the same reasons that we teach multiple mental models in other disciplines.
@arxanas the point about a "revision" being a snapshot is really good, I've noticed that too. might add that