diff --git a/CHANGES.rst b/CHANGES.rst
index 78c178bafd4532b9cd9f798f6fb9d288c3b4785c..5a284c38536a5f38b9f6577366de233ee342e78b 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -1,3 +1,27 @@
+Changes in synapse 0.5.0 (2014-11-19)
+=====================================
+This release includes changes to the federation protocol and client-server API
+that is not backwards compatible.
+
+This release also changes the internal database schemas and so requires servers to
+drop their current history. See UPGRADES.rst for details.
+
+Homeserver:
+ * Add authentication and authorization to the federation protocol. Events are
+   now signed by their originating homeservers.
+ * Implement the new authorization model for rooms.
+ * Split out web client into a seperate repository: matrix-angular-sdk.
+ * Change the structure of PDUs.
+ * Fix bug where user could not join rooms via an alias containing 4-byte
+   UTF-8 characters.
+ * Merge concept of PDUs and Events internally.
+ * Improve logging by adding request ids to log lines.
+ * Implement a very basic room initial sync API.
+ * Implement the new invite/join federation APIs.
+
+Webclient:
+ * The webclient has been moved to a seperate repository.
+
 Changes in synapse 0.4.2 (2014-10-31)
 =====================================
 
diff --git a/UPGRADE.rst b/UPGRADE.rst
index 99ce1a2d3d9d7d0d74d3f33aab30e7d142253314..2229470c3f720877a42fa9cb58ff1fa34056557f 100644
--- a/UPGRADE.rst
+++ b/UPGRADE.rst
@@ -1,3 +1,33 @@
+Upgrading to v0.5.0
+===================
+
+This release completely changes the database schema and so requires upgrading
+it before starting the new version of the homeserver.
+
+The script "database-prepare-for-0.5.0.sh" should be used to upgrade the
+database. This will save all user information, such as logins and profiles, 
+but will otherwise purge the database. This includes messages, which
+rooms the home server was a member of and room alias mappings.
+
+If you would like to keep your history, please take a copy of your database
+file and ask for help in #matrix:matrix.org. The upgrade process is,
+unfortunately, non trivial and requires human intervention to resolve any
+resutling conflicts during the upgrade process.
+
+Before running the command the homeserver should be first completely 
+shutdown. To run it, simply specify the location of the database, e.g.:
+
+  ./database-prepare-for-0.5.0.sh "homeserver.db"
+
+Once this has successfully completed it will be safe to restart the 
+homeserver. You may notice that the homeserver takes a few seconds longer to 
+restart than usual as it reinitializes the database.
+
+On startup of the new version, users can either rejoin remote rooms using room
+aliases or by being reinvited. Alternatively, if any other homeserver sends a
+message to a room that the homeserver was previously in the local HS will 
+automatically rejoin the room.
+
 Upgrading to v0.4.0
 ===================
 
diff --git a/VERSION b/VERSION
index 2b7c5ae01848a77d95e2792eb83ab605c9aed91a..8f0916f768f0487bcf8d33827ce2c8dcecb645c1 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.4.2
+0.5.0
diff --git a/database-prepare-for-0.5.0.sh b/database-prepare-for-0.5.0.sh
new file mode 100755
index 0000000000000000000000000000000000000000..e824cb583e043d4015a7cbb06ae8e8f6ac0749d9
--- /dev/null
+++ b/database-prepare-for-0.5.0.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+# This is will prepare a synapse database for running with v0.5.0 of synapse. 
+# It will store all the user information, but will *delete* all messages and
+# room data.
+
+set -e
+
+cp "$1" "$1.bak"
+
+DUMP=$(sqlite3 "$1" << 'EOF'
+.dump users
+.dump access_tokens
+.dump presence
+.dump profiles
+EOF
+)
+
+rm "$1"
+
+sqlite3 "$1" <<< "$DUMP" 
diff --git a/synapse/__init__.py b/synapse/__init__.py
index 23ae5f003f51bdbb851411c9e43a11bd4101126a..14564e735edd8dcdbcfb3ae208e8d6ed45d8bdb5 100644
--- a/synapse/__init__.py
+++ b/synapse/__init__.py
@@ -16,4 +16,4 @@
 """ This is a reference implementation of a synapse home server.
 """
 
-__version__ = "0.4.2"
+__version__ = "0.5.0"
diff --git a/synapse/storage/__init__.py b/synapse/storage/__init__.py
index c36d938d96ae590540b92a5e99d1087c9e79cabd..330d3b793f9bc70b571d5b7a56c9899b9455053d 100644
--- a/synapse/storage/__init__.py
+++ b/synapse/storage/__init__.py
@@ -67,7 +67,7 @@ SCHEMAS = [
 
 # Remember to update this number every time an incompatible change is made to
 # database schema files, so the users will be informed on server restarts.
-SCHEMA_VERSION = 6
+SCHEMA_VERSION = 7
 
 
 class _RollbackButIsFineException(Exception):