diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 000000000..5a4bdcca8
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,77 @@
+# Contributing to iD
+
+Thinking of contributing to iD? High five! Here are some basics for our habits
+so that you can write code that fits in perfectly.
+
+## Javascript
+
+We use the [Airbnb style for Javascript](https://github.com/airbnb/javascript) with
+only one difference:
+
+**4 space soft tabs always for Javascript, not 2.**
+
+No aligned `=`, no aligned arguments, spaces are either indents or the 1
+space between expressions. No hard tabs, ever.
+
+Javascript code should pass through [JSHint](http://www.jshint.com/) with no
+warnings.
+
+## HTML
+
+There isn't much HTML in iD, but what there is is similar to JS: 4 spaces
+always, indented by the level of the tree:
+
+```html
+
+```
+
+## CSS
+
+Just like HTML and Javascript, 4 space soft tabs always.
+
+```css
+.radial-menu-tooltip {
+ background: rgba(255, 255, 255, 0.8);
+}
+```
+
+We write vanilla CSS with no preprocessing step. Since iD targets modern browsers,
+feel free to use newer features wisely.
+
+## Tests
+
+Test your code and make sure it passes. Our testing harness requires [node.js](http://nodejs.org/)
+and a few modules:
+
+1. [Install node.js](http://nodejs.org/) - 'Install' will download a package for your OS
+2. Go to the directory where you have checked out `iD`
+3. Run `npm install`
+4. Run `npm test` to see whether your tests pass or fail.
+
+## Licensing
+
+iD is under the [WTFPL](http://www.wtfpl.net/). Some of the libraries it uses
+are under different licenses. If you're contributing to iD, you're contributing
+WTFPL code.
+
+## Submitting Changes
+
+Let's say that you've thought of a great improvement to iD - a change that
+turns everything red (please do not do this, we like colors other than red).
+
+In your local copy, make a branch for this change:
+
+ git checkout -b make-red
+
+Make your changes to source files. By source files we mean the files in `js/`.
+the `iD.js` and `iD.min.js` files in this project are autogenerated - don't edit
+them.
+
+So let's say you've changed `js/ui/confirm.js`.
+
+1. Run `jshint src` to make sure your code is clean
+2. Run tests with `npm test`
+3. Commit your changes with an informative commit message
+4. [Submit a pull request](https://help.github.com/articles/using-pull-requests) to the `systemed/iD` project.
diff --git a/README.md b/README.md
index 711cb5418..08c6764c0 100644
--- a/README.md
+++ b/README.md
@@ -16,8 +16,7 @@
## Participate!
-* [Read NOTES.md, our ongoing dev journal](https://github.com/systemed/iD/blob/master/NOTES.md)
-* Fork this project. We eagerly accept pull requests.
+* [Read up on Contributing and the code style of iD](CONTRIBUTING.md)
* See [open issues in the issue tracker if you're looking for something to do](https://github.com/systemed/iD/issues?state=open)
To run the code locally, just fork this project and run it from a local webserver.