Nice checklist! I really like Coda Hale's "You Can't Sacrifice Partition Tolerance" [0]<p>I think part of people's frequent confusion is thinking it's "CAP: Pick two" when really it's "C or A: pick at most one for any particular situation".<p>0: <a href="http://codahale.com/you-cant-sacrifice-partition-tolerance/" rel="nofollow">http://codahale.com/you-cant-sacrifice-partition-tolerance/</a>
One thing they don't teach in CAP theorem class is that you can be AP sometimes and CP others. For instance you can be strongly consistent within one system boundary (perhaps a datacenter) and eventually consistent between datacenters.<p>The CAP theorem can thus be annoying on both sides of the divide: people who think they can beat it, and people who think every system must be fully described by either AP or CP. Real life is messy, and for most real distributed systems you can't adequately characterize thier behavior just by pointing to a single spot on a Venn diagram of CAP.
In case someone does not recognize the reference, this is a parody of the Spam Solutions Checklist that used to be circulated when e-mail spam was a new issue: <a href="https://craphound.com/spamsolutions.txt" rel="nofollow">https://craphound.com/spamsolutions.txt</a>
I think everyone accepts that the CAP theorem (as proved) is true. The issue is what conclusion you draw. The theorem just says you can't be perfect on all three axes. Some people conclude that we must throw everything away, and e.g. use a key-value store.<p>To my mind, that's a bit like learning about random bit-flips, and giving up programming.
<p><pre><code> * Rich Hickey on Datomic, CAP and ACID [1]
* Exploiting Loopholes in CAP (Michael Nygard of Relevance) [2]
* How to beat the CAP theorem (by Nathan Marz of Twitter) [3]
</code></pre>
[1] <a href="https://news.ycombinator.com/item?id=5093037" rel="nofollow">https://news.ycombinator.com/item?id=5093037</a>
[2] <a href="http://www.infoq.com/presentations/Loopholes-CAP" rel="nofollow">http://www.infoq.com/presentations/Loopholes-CAP</a>
[3] <a href="http://nathanmarz.com/blog/how-to-beat-the-cap-theorem.html" rel="nofollow">http://nathanmarz.com/blog/how-to-beat-the-cap-theorem.html</a>
It would be fairly awesome if the page parsed params to put x's in the appropriate spots, so you you could use the appropriate link to customize it for the recipient you send it to.
Seems to have been inspired by the Programming Language Checklist: <a href="http://colinm.org/language_checklist.html" rel="nofollow">http://colinm.org/language_checklist.html</a>
I understand that this is probably wrong somehow, but what about a system wherein there is sufficient capacity to take a "partitioned" datacenter out of the loop entirely and serve web traffic from your other locations, then bring it back up to speed while still offline after the disruption ends?<p>Again, I accept that that's probably bad, but why?