diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index a4e6688042e33156a37c1123ed9851b3563d9863..80ef6aa235ae4d2745c49bb64e41ec1bab53ba06 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -392,7 +392,7 @@ By now, you know the drill!
 # Notes for maintainers on merging PRs etc
 
 There are some notes for those with commit access to the project on how we
-manage git [here](docs/dev/git.md).
+manage git [here](docs/development/git.md).
 
 # Conclusion
 
diff --git a/changelog.d/10453.doc b/changelog.d/10453.doc
new file mode 100644
index 0000000000000000000000000000000000000000..5d4db9bca29ca1c6adf85521927f028d0798e3e6
--- /dev/null
+++ b/changelog.d/10453.doc
@@ -0,0 +1 @@
+Consolidate development documentation to `docs/development/`.
diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md
index db4ef1a44e8685c71f0bde976c7ca93b74ce9f18..f1bde91420fc6350fc26f83b9a005f5c4a60f931 100644
--- a/docs/SUMMARY.md
+++ b/docs/SUMMARY.md
@@ -67,7 +67,7 @@
 # Development
   - [Contributing Guide](development/contributing_guide.md)
   - [Code Style](code_style.md)
-  - [Git Usage](dev/git.md)
+  - [Git Usage](development/git.md)
   - [Testing]()
   - [OpenTracing](opentracing.md)
   - [Database Schemas](development/database_schema.md)
@@ -77,8 +77,8 @@
     - [TCP Replication](tcp_replication.md)
   - [Internal Documentation](development/internal_documentation/README.md)
     - [Single Sign-On]()
-      - [SAML](dev/saml.md)
-      - [CAS](dev/cas.md)
+      - [SAML](development/saml.md)
+      - [CAS](development/cas.md)
     - [State Resolution]()
       - [The Auth Chain Difference Algorithm](auth_chain_difference_algorithm.md)
     - [Media Repository](media_repository.md)
diff --git a/docs/dev/cas.md b/docs/development/cas.md
similarity index 100%
rename from docs/dev/cas.md
rename to docs/development/cas.md
diff --git a/docs/dev/git.md b/docs/development/git.md
similarity index 97%
rename from docs/dev/git.md
rename to docs/development/git.md
index 87950f07b21b1d40e8a995243e9aa2227552971a..9b1ed54b65ac61e04ca1c951498477a49ac5f761 100644
--- a/docs/dev/git.md
+++ b/docs/development/git.md
@@ -9,7 +9,7 @@ commits each of which contains a single change building on what came
 before. Here, by way of an arbitrary example, is the top of `git log --graph
 b2dba0607`:
 
-<img src="git/clean.png" alt="clean git graph" width="500px">
+<img src="img/git/clean.png" alt="clean git graph" width="500px">
 
 Note how the commit comment explains clearly what is changing and why. Also
 note the *absence* of merge commits, as well as the absence of commits called
@@ -61,7 +61,7 @@ Ok, so that's what we'd like to achieve. How do we achieve it?
 The TL;DR is: when you come to merge a pull request, you *probably* want to
 “squash and merge”:
 
-![squash and merge](git/squash.png).
+![squash and merge](img/git/squash.png).
 
 (This applies whether you are merging your own PR, or that of another
 contributor.)
@@ -105,7 +105,7 @@ complicated. Here's how we do it.
 
 Let's start with a picture:
 
-![branching model](git/branches.jpg)
+![branching model](img/git/branches.jpg)
 
 It looks complicated, but it's really not. There's one basic rule: *anyone* is
 free to merge from *any* more-stable branch to *any* less-stable branch at
diff --git a/docs/dev/git/branches.jpg b/docs/development/img/git/branches.jpg
similarity index 100%
rename from docs/dev/git/branches.jpg
rename to docs/development/img/git/branches.jpg
diff --git a/docs/dev/git/clean.png b/docs/development/img/git/clean.png
similarity index 100%
rename from docs/dev/git/clean.png
rename to docs/development/img/git/clean.png
diff --git a/docs/dev/git/squash.png b/docs/development/img/git/squash.png
similarity index 100%
rename from docs/dev/git/squash.png
rename to docs/development/img/git/squash.png
diff --git a/docs/dev/saml.md b/docs/development/saml.md
similarity index 100%
rename from docs/dev/saml.md
rename to docs/development/saml.md