edit: One of the posts for mirage/mirage#257 - AC
Add Irmin intro blog post
You might consider adding a mention and/or reference to content-addressable storage (CAS), for anyone interested to learn more about the notion of block addresses as identity.
Also, I wouldn't exactly agree that CAS is just an implementation detail, as it's a pretty fundamental design decision (and a good one). Recall that old chestnut, "There are only two hard things in Computer Science: cache invalidation and naming things"; well, as it happens, CAS addresses both these hard things, greatly simplifying everything.
I'm done. As usual: interesting and understandable read.
data is ?
if you are a pedantic writer of english, data is always considered a plural (cf the singular, datum). more modern usage has data as a singular collective noun (vs dataset).
i personally don't care so long as it's consistent in a given document :)
Ah, thanks for the tip.
This sentence doesn't "work" (e.g. I read "like all the components of Mirage OS irim is not a proper database engine"...). Split the sentence.
Again to many things in the sentence starting on this line. Split it in smaller chunks.
I'd rather say "what I explain below holds both for in-memory databases and for fancy disk serialization like browser local-storage or the Git format."
...below... (not bellow)
(and i'd say "what i explain below" not "what i will explain below")
immutable rather than read-only ?
"the popular Distributed Version Control System" is a distraction in this sentence.
Add commas after Semantics and Complexity
remove the "to" : and put it in each bullet after the commas, otherwise the continuous sentence is unreadable.
remove "; and"
Name the thing directly after you present them, otherwise the sentences make it needlessly hard to connect the terminology. Something like:
In both cases, you need a global pool (the irmin block store) and a way to name values in that pool (the irmin tag store).
what is a principle point-of-view ?
dave is a dangling ref :)
See for instance, instance of what ? I don't think it's an instance of the previous assertion.
which store ?
Irmin tag store ?
Or rather it seems to be tag store + block store = high-level irmin store, this should be made somehow clearer.
tag store + block store = high-level irmin store
reads and updates ?
what is a store context ?
initial common state ?
how we find ?
is that sequence of updates ? if it's the case put it that way.
This sentence doesn't make sense, e.g. where are the edges. Maybe split it and kill a few parens.
persistent and immutable ? or are you allowed to rewrite history ?
IIRC you changed raising exception to returning a value, so I'd rather not use "conflict exception" but just "conflict" or "conflict value".
easier than what ?
Which functions exactly ? you were just talking about 3-way merge here.
heterogeneous here feels like if applied to backend (singular) different backends ? Also what does it take to write a new backend ? Just implement the Irmin Store sig ? Then also maybe say that the work to implement a backend is also rather trivial which should help aswel to have a lot of different backends.
Fix remarks from @dbuenzli @bendiken and @mor1
Thanks you for your feedback! I tried to fix all the remarks ...
The CAS link definition is missing, even in the final published article: http://openmirage.org/blog/introducing-irmin. As a result, that link erroneously shows up as "[content-addressable storage][cas]" in the rendered version. The link should probably be to http://en.wikipedia.org/wiki/Content-addressable_storage
woops. thx for reporting the issue, I'll fix that.
done in mirage#191