diff --git a/CONTRIBUTING b/CONTRIBUTING
new file mode 100755
index 0000000..51e5611
--- /dev/null
+++ b/CONTRIBUTING
@@ -0,0 +1,107 @@
+Contributing to this Project
+============================
+
+## License
+
+This project is licensed under the terms and conditions of the 3-Clause BSD
+[LICENSE](LICENSE).  By contributing to this project, you agree that you are
+providing your contribution under the terms and conditions of that license.
+
+
+## Patches
+
+We accept patches to this project as pull requests on GitHub.  When submitting
+patches, please keep each patch self-contained and as small as possible.  Please
+address one topic per patch series.  Intermediate patches must build without
+errors (with DEVBUILD=ON) and not introduce test fails.  Please describe what
+each patch is doing in its commit message.
+
+If you are contributing a patch series that addresses a GitHub Issue, the last
+patch in the series should have 'fixes #<issue>' in its commit-message.
+
+If the patch series addresses a bug that is not tracked, please provide a
+detailed description of the issue in the commit-message, ideally with a
+description of the 'before' and 'after' behavior.
+
+The patch series should contain regression tests either as PTT tests or as
+ptunit tests.  Please make sure that all tests are passing. This may require
+re-ordering patches to introduce the regression test after the issue was fixed.
+
+If the patch series adds a new feature, please make sure to add documentation.
+Prior to submitting this type of contribution, it may be a good idea to first
+discuss the feature as a GitHub issue or via email before implementing it.
+
+This project is using the Linux coding style.
+
+
+## Sign Your Patch
+
+Please use the sign-off line at the end of each patch. Your signature
+certifies that you wrote the patch or otherwise have the right to pass
+it on as an open-source patch. The rules are pretty simple: if you can
+certify the below (from
+[developercertificate.org](http://developercertificate.org/)):
+
+```
+Developer Certificate of Origin
+Version 1.1
+
+Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
+660 York Street, Suite 102,
+San Francisco, CA 94110 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+
+Developer's Certificate of Origin 1.1
+
+By making a contribution to this project, I certify that:
+
+(a) The contribution was created in whole or in part by me and I
+    have the right to submit it under the open source license
+    indicated in the file; or
+
+(b) The contribution is based upon previous work that, to the best
+    of my knowledge, is covered under an appropriate open source
+    license and I have the right under that license to submit that
+    work with modifications, whether created in whole or in part
+    by me, under the same open source license (unless I am
+    permitted to submit under a different license), as indicated
+    in the file; or
+
+(c) The contribution was provided directly to me by some other
+    person who certified (a), (b) or (c) and I have not modified
+    it.
+
+(d) I understand and agree that this project and the contribution
+    are public and that a record of the contribution (including all
+    personal information I submit with it, including my sign-off) is
+    maintained indefinitely and may be redistributed consistent with
+    this project or the open source license(s) involved.
+```
+
+Then you just add a line to every git commit message:
+
+    Signed-off-by: Joe Smith <joe.smith@email.com>
+
+Use your real name (sorry, no pseudonyms or anonymous contributions.)
+
+If you set your `user.name` and `user.email` git configs, you can sign your
+commit automatically with `git commit -s`.
+
+
+## Reporting Issues
+
+If you want to report an issue or bug, please report them via the GitHub Issues
+tracker.
+
+When reporting a bug, please provide the steps to reproduce it with the ptdump
+and ptxed tools contained in the tree.  Please include the command-line that was
+used and the exact error message.  You may also attach a trace file and the
+binaries necessary for reproducing the issue or write a small PTT test to
+demonstrate the issue.
+
+When providing trace snippets, please provide a few extra packets of context.
+
+Please also provide the processor family and model on which the trace was
+recorded and the version of the decoder that was used to decode the trace.
