add anti-paterrns for code review

The developers of OpenBMC do not get 100% of decisions right 100% of the
time.  That, combined with the fact that software development is often
an exercise in copying and pasting, results in mistakes happening over
and over again.

Add a page that aims to document some of the anti-patterns that exist in
OpenBMC to ease the job of those reviewing code.  If an anti-pattern is
spotted, rather that repeating the same explanations over and over, a
link to this document can be provided.

Change-Id: Ie5efc1ef61a0b948330fa576eca09d5b6fa64751
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/anti-patterns.md b/anti-patterns.md
new file mode 100644
index 0000000..ab9ab0f
--- /dev/null
+++ b/anti-patterns.md
@@ -0,0 +1,43 @@
+# OpenBMC Anti-patterns
+
+From [Wikipedia](https://en.wikipedia.org/wiki/Anti-pattern):
+
+
+"An anti-pattern is a common response to a recurring problem that is usually
+ineffective and risks being highly counterproductive."
+
+
+The developers of OpenBMC do not get 100% of decisions right 100% of the time.
+That, combined with the fact that software development is often an exercise in
+copying and pasting, results in mistakes happening over and over again.
+
+
+This page aims to document some of the anti-patterns that exist in OpenBMC to
+ease the job of those reviewing code.  If an anti-pattern is spotted, rather
+that repeating the same explanations over and over, a link to this document can
+be provided.
+
+
+<!-- begin copy/paste on next line -->
+
+## Anti-pattern template [one line description]
+
+### Identification
+(1 paragraph) Describe how to spot the anti-pattern.
+
+### Description
+(1 paragraph) Describe the negative effects of the anti-pattern.
+
+### Background
+(1 paragraph) Describe why the anti-pattern exists.  If you don't know, try
+running git blame and look at who wrote the code originally, and ask them on the
+mailing list or in IRC what their original intent was, so it can be documented
+here (and you may possibly discover it isn't as much of an anti-pattern as you
+thought).  If you are unable to determine why the anti-pattern exists, put:
+"Unknown" here.
+
+### Resolution
+(1 paragraph) Describe the preferred way to solve the problem solved by the
+anti-pattern and the positive effects of solving it in the manner described.
+
+<!-- end copy/paste on previous line -->