diff --git a/README.md b/README.md
new file mode 100644
index 00000000..d406d55f
--- /dev/null
+++ b/README.md
@@ -0,0 +1,164 @@
+# OpenRS2
+
+## Introduction
+
+OpenRS2 is an open-source multiplayer game server and suite of associated
+tools. It is compatible with build 550 of the RuneScape client, which was
+released in late 2009.
+
+## Prerequisites
+
+Building OpenRS2 requires the following pieces of software on all platforms:
+
+* [Java Development Kit][jdk] (version 12 or later)
+* [Apache Maven][maven] (version 3.3.9 or later)
+
+### Platform-specific dependencies
+
+OpenRS2 includes open-source replacements for the jaggl, jaggl_dri and jagmisc
+native libraries.
+
+Your platform's standard C compiler and [OpenGL][opengl] development headers
+must be installed to build the native libraries.
+
+Alternatively, pass `-P '!windows,!mac,!unix'` to all `mvn` invocations to
+exclude the native libraries from the build.
+
+#### Windows
+
+Install the [Build Tools for Visual Studio][visualstudio] (2019 or later),
+which provide a command-line version of the Visual C++ compiler. The full GUI
+version of Visual Studio will also work, but it is not required.
+
+The Visual C++ tools must be present on your `%PATH%` when building OpenRS2.
+The easiest way to achieve this is to open the command prompt with the
+'Developer Command Prompt for VS 2019' item from the start menu.
+
+The Java Development Kit and Apache Maven `bin` directories must be manually
+[added to your `%PATH%` variable][path].
+
+#### macOS
+
+Run `xcode-select --install` from the terminal to install the [Xcode][xcode]
+command-line tools.
+
+The easiest way to install the Java Development Kit and Apache Maven is with the
+[Homebrew][homebrew] package manager. After installing Homebrew, run
+`brew cask install java` and `brew install maven`.
+
+#### UNIX
+
+OpenRS2 requires the [GNU Compiler Collection][gcc] and the [Mesa 3D Graphics
+Library][mesa] on UNIX-like systems (e.g. Linux).
+
+The easiest way to install all the dependencies is with your system's package
+manager. For example:
+
+* Debian-based systems: `apt install openjdk-12-jdk maven gcc libgl1-mesa-dev`
+* RPM-based systems: `yum install java-12-openjdk-devel maven gcc mesa-libGL-devel`
+* ArchLinux-based systems: `pacman -S jdk-openjdk maven gcc mesa`
+
+As OpenRS2 depends on a modern version of Java (at the time of writing), you
+will probably need to use a similarly modern version of your Linux distribution
+or enable its backports repository.
+
+`-headless` packages are not sufficient as the `gl-natives` module is linked
+with `libjawt`.
+
+### Non-free components
+
+OpenRS2 requires the original RuneScape client code, data and location file
+encryption keys, which we cannot legally distribute.
+
+These files must be manually placed in the `nonfree` directory (directly
+beneath the root of the repository), in the following structure:
+
+```
+nonfree
+└── code
+ ├── game_unpacker.dat
+ ├── jaggl.pack200
+ ├── loader_gl.jar
+ ├── loader.jar
+ ├── runescape_gl.pack200
+ └── runescape.jar
+```
+
+The SHA-256 checksums of the correct files are:
+
+```
+7c090e07f8d754d09804ff6e9733ef3ba227893b6b639436db90977b39122590 nonfree/code/game_unpacker.dat
+d39578f4a88a376bcb2571f05da1939a14a80d8c4ed89a4eb172d9e525795fe2 nonfree/code/jaggl.pack200
+31182683ba04dc0ad45859161c13f66424b10deb0b2df10aa58b48bba57402db nonfree/code/loader_gl.jar
+ccdfaa86be07452ddd69f869ade86ea900dbb916fd853db16602edf2eb54211b nonfree/code/loader.jar
+4a5032ea8079d2154617ae1f21dfcc46a10e023c8ba23a4827d5e25e75c73045 nonfree/code/runescape_gl.pack200
+0ab28a95e7c5993860ff439ebb331c0df02ad40aa1f544777ed91b46d30d3d24 nonfree/code/runescape.jar
+```
+
+The `nonfree` directory is included in the `.gitignore` file to prevent any
+non-free material from being accidentally included in the repository.
+
+## Building
+
+Run `mvn verify` to download the dependencies, build the code, run the unit
+tests and package it.
+
+## Contributing
+
+### Code style
+
+All source code must be formatted with [IntelliJ IDEA][idea]'s built-in
+formatter before each commit. The 'Optimize imports' option should also be
+selected. Do not select 'Rearrange entries'.
+
+OpenRS2's code style settings are held in `.idea/codeStyles/Project.xml` in the
+repository, and IDEA should use them automatically after importing the Maven
+project.
+
+### Commit messages
+
+Commit messages should follow the ['seven rules'][commitmsg] described in
+'How to Write a Git Commit Message', with the exception that the summary line
+can be up to 72 characters in length (as OpenRS2 does not use email-based
+patches).
+
+## License
+
+Unless otherwise stated, all code and data is licensed under version 3 (and
+only version 3) of the [GNU General Public License][gpl]. The full terms are
+available in the `COPYING` file.
+
+The `gl-natives`, `gl-dri-natives` and `misc-natives` modules are instead
+licensed under version 3 (and only version 3) of the [GNU Lesser General Public
+License][lgpl]. The full terms are available in the `COPYING.LESSER` file in
+each module's directory.
+
+## Copyright
+
+Copyright (c) 2019 OpenRS2 Authors
+
+OpenRS2 is free software: you can redistribute it and/or modify it under the
+terms of the version 3 of the GNU General Public License as published by the
+Free Software Foundation.
+
+OpenRS2 is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+OpenRS2. If not, see .
+
+[commitmsg]: https://chris.beams.io/posts/git-commit/#seven-rules
+[gcc]: https://gcc.gnu.org/
+[gpl]: https://www.gnu.org/licenses/gpl-3.0.html
+[homebrew]: https://brew.sh/
+[idea]: https://www.jetbrains.com/idea/
+[jdk]: https://jdk.java.net/
+[lgpl]: https://www.gnu.org/licenses/lgpl-3.0.html
+[maven]: https://maven.apache.org/
+[mesa]: https://www.mesa3d.org/
+[opengl]: https://www.opengl.org/
+[path]: https://www.java.com/en/download/help/path.xml
+[runescape]: https://www.runescape.com/
+[visualstudio]: https://visualstudio.microsoft.com/downloads/
+[xcode]: https://developer.apple.com/xcode/
diff --git a/gl-dri-natives/README.md b/gl-dri-natives/README.md
new file mode 100644
index 00000000..c188bdd4
--- /dev/null
+++ b/gl-dri-natives/README.md
@@ -0,0 +1,17 @@
+# OpenRS2 GL DRI Natives
+
+## Copyright
+
+Copyright (c) 2019 OpenRS2 Authors
+
+OpenRS2 GL DRI Natives is free software: you can redistribute it and/or modify
+it under the terms of the version 3 of the GNU Lesser General Public License as
+published by the Free Software Foundation.
+
+OpenRS2 GL DRI Natives is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
+more details.
+
+You should have received a copy of the GNU Lesser General Public License along
+with OpenRS2 GL DRI Natives. If not, see .
diff --git a/gl-natives/README.md b/gl-natives/README.md
new file mode 100644
index 00000000..9c689402
--- /dev/null
+++ b/gl-natives/README.md
@@ -0,0 +1,17 @@
+# OpenRS2 GL Natives
+
+## Copyright
+
+Copyright (c) 2019 OpenRS2 Authors
+
+OpenRS2 GL Natives is free software: you can redistribute it and/or modify it
+under the terms of the version 3 of the GNU Lesser General Public License as
+published by the Free Software Foundation.
+
+OpenRS2 GL Natives is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
+more details.
+
+You should have received a copy of the GNU Lesser General Public License along
+with OpenRS2 GL Natives. If not, see .
diff --git a/misc-natives/README.md b/misc-natives/README.md
new file mode 100644
index 00000000..6e514ebb
--- /dev/null
+++ b/misc-natives/README.md
@@ -0,0 +1,17 @@
+# OpenRS2 Misc Natives
+
+## Copyright
+
+Copyright (c) 2019 OpenRS2 Authors
+
+OpenRS2 Misc Natives is free software: you can redistribute it and/or modify it
+under the terms of the version 3 of the GNU Lesser General Public License as
+published by the Free Software Foundation.
+
+OpenRS2 Misc Natives is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
+more details.
+
+You should have received a copy of the GNU Lesser General Public License along
+with OpenRS2 Misc Natives. If not, see .