When User A is editing a page and User B attempts to edit the same page, User B should receive a waiting screen notification while User A receives a real-time prompt to either begin a collaborative editing session, or reject User B's edit request and allow them to view updates in 'watch' mode instead.
If User A selects a collaborative editing session, both User A and User B will switch to a shared screen mode where all text changes are shared. Any text that is entered or changed will be reflected on all user's screens, with the user who made the most recent change having priority. During collaborative editing, a small page chat window is added to the screen across all participants so that they can chat about updates. This chat log is linked to the page version on save and accessible from the page history in the same way as update comments are shown. It should also be indexed.
Any users who are in a collaborative editing session may switch to 'watch' mode at any time, where they no longer have the ability to make page updates but can still see the edits made in real time. Both watchers and editors can always communicate with each other via page chat. This allows users who were rejected from making edits to communicate with the current page editor.
If a minimum connection speed is required to collaboratively edit, the session should check this for any client attempting to join a collaborative session and automatically deny the session if the test is failed. As more users request to join a concurrent editing session, join requests should start showing a soft limit warning when performance goes below a certain threshold, followed by hard limit automatic rejection at the point at which editing performance would be seriously affected.
This request may be useful in combination with sectional editing, where a user can select to edit only one section of a document, so the implementation should take into account that sectional editing may be implemented in future.
This request may be useful in combination with notes to indicate when any users are editing a page. This note could be an AJAX notification that appears within a minute of it being edited for all users viewing that page.