Internships
Register
Copyright © 2000—2025 JetBrains s.r.o.

Спекулятивный набор текста в Projector

Description

В рамках стажировки предлагается исследовать алгоритмы коллаборативной работы с текстом (diff-match-patch, Causal Tree, Chronofold, RON и другие) и реализовать поддержку асинхронной печати на клиенте. Это позволит клиенту отрисовывать печатаемые символы на экране не дожидаясь ответа от сервера с командой на отрисовку, что значительно увеличит комфорт работы при соединении с высоким пингом.

На данный момент Projector имеет только proof-of-concept спекулятивного тайпинга. Сервер следит за позицией каретки и передает эту информацию на клиент, а клиент при включении параметра страницы speculativeTyping по нажатию на клавишу отрисовывает символ серого цвета на позиции каретки. При получении команды от сервера на отрисовку спекулятивный символ стирается и отрисовывается уже настроящий правильный символ.

Поддержку спекулятивного тайпинга можно развивать довольно широко, одним из направлений является создание client-side компонента TextEditor (сейчас в Projector реализован только client-side компонент для отображения Markdown, можно вдохновляться им). Текст внутри компонента и цвет символов можно бы было синхронизировать как раз с помощью алгоритмов коллаборации.

Requirements

Знание или желание и умение самостоятельно изучить Kotlin (JS и JVM), Java Swing, Java Reflection, Java Agents, статьи с алгоритмами коллаборативной работы.

Admission

Разработчики: Лето 2021

Mentor

Sergey Bulgakov, Vitaly Khudobakhshov

Mentor's location

Remote

Product/Team

Other