Редактор кода Atom получил функцию для параллельного программирования Teletype

Atom Teletype

Писать код параллельно с другим разработчиком — отличная задачка для тренировки ума и развития взаимопонимания, а так же прекрасный способ усовершенствовать качество создаваемого ПО. Однако реализация такого подхода достаточно проблематична: на одном компьютере вместе не попишешь, с облачными сервисами нужно все время мигрировать свои наработки, делить экран тоже не всегда удобно.

В среду, 15 ноября, GitHub представила специальное расширение для Atom, Teletype, призванное решить эту проблему. На заре компьютерной эры телетайпы использовались для мгновенного обмена сообщениями между двумя машинами. Разработчики Atom вдохновились идеей электромеханических предков, и внедрили в свой редактор специальную функциональность, передающую печатаемые символы между удаленными компьютерами.

Начало работы

После установки Teletype (через настройки Atom или с помощью команды apm install teletype в командной строке) можно открыть «портал» в рабочую область своего компьютера в новом меню в строке состояния.

А дальше нужно просто поделиться сгенерированным секретным ID с сотрудниками через любимый мессенджер.

Нажав на кнопку «Join» в меню строки состояния и введя полученный ID, коллеги смогут присоединиться к открытому порталу.

После этого все участники совместной разработки могут редактировать код в открытом создателем файле (он появляется в новой вкладке их редактора). При этом каждому из разработчиков предоставляется собственный курсор, и все могут редактировать код одновременно. Поскольку соединение реализовано лишь на уровне нажатия клавиш клавиатуры, настройки собственных редакторов не изменятся.

Важно отметить, что код хранится на локальном диске разработчика, открывшего портал. При переключении между файлами содержимое текущей общей рабочей области перемещается к другим участникам, чтобы они могли продолжать работу.

Бесконфликтное редактирование

Реализация возможности совместного редактирования — очень нетривиальная задача. Для обеспечения гибкой и отзывчивой работы у каждого из участников разработки хранится собственная копия редактируемого файла, в которую записываются все изменения перед отправкой другим участникам. В связи с издержками параллельной обработки эти изменения вносятся в документ вразнобой, но по окончании работы все копии файла синхронизируются.

Для осуществления такой возможности при написании расширения для Atom был использован теоретический фреймворк типов данных conflict-free replicated data type (CRDT).

Соединение

Подключение участников производится через каналы данных WebRTC. Информационный обмен производится в зашифрованном виде, что обеспечивает безопасность личных данных разработчиков и минимизирует возможные задержки в отображении кода, вне зависимости от близости к дата-центрам GitHub.

Пока что доступна только бета-версия расширения. В настоящее время Teletype умеет передавать только текст, в будущем же планируется реализация возможности голосового общения.

Конкуренция

Интересно, что GitHub представила функциональность для парного программирования почти одновременно с Microsoft. Компания показала аналогичную фичу Live Share на конференции Connect(); 2017.

Источник: блог Atom