Было бы полезно понять больше конкретных требований - совместный текстовый редактор может означать много вещей. IM немного легче понять.
Для текстового редактора - в зависимости от ваших требований и т. Д. - я бы начал с использования существующего текстового редактора - http://www.tinymce.com/ имеет приличные функции и широко используется. Вы можете настроить его так, чтобы он удалял функции, которые вам не нужны / не нужны (например, форматирование), при этом сохраняя функции, которых ожидают многие (например, отмена / повтор и проверка орфографии). Вам нужно будет выяснить, как сделать это совместным, хотя и не уверены, к какому пользовательскому опыту вы стремитесь. Относительно легко позволить пользователям «по очереди» редактировать текущий документ - сохранять его в базе данных (используя PHP, Ruby или Rails, Java - все, что вам удобнее всего), когда пользователь нажимает «сохранить», и разрабатывать механизм блокировки для одновременного доступа. Гораздо сложнее, чтобы документ отражал изменения в реальном времени между несколькими пользователями и обновлял документ для всех этих пользователей. Вы бы выиграли от хорошей программы "DIFF". В этом случае я не думаю, что вы можете избежать AJAX - вам нужно много клиентов, чтобы общаться друг с другом, и нет надежного способа сделать это на стороне клиента.
Что касается IM, я бы посмотрел на использование готового решения на основе XMPP (http://xmpp.org/xmpp-software/) - это в значительной степени согласованный стандарт для IM, и хотя может потребоваться некоторое время, чтобы освоиться с стандартные и инструментальные средства, если вы хотите создать полнофункциональное приложение, вероятно, будет гораздо проще построить поверх всего того, что сделали другие, чем построить собственное.