Реклама
Перетяжка // Коробка 3.0

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

GitHub представил бета-версию Teletype – специального расширения для Atom, обеспечивающего быструю и эффективную параллельную разработку ПО.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Соединение

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

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

Конкуренция

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