Problem description
In YouTrack, certain race conditions occur when users update multiple fields regarding an issue with slow or unstable network connections. Other users or Workflows run on the backend could also make modifications. These issues lead to inconsistent UI states and potential data loss.
This internship project focuses on designing and implementing a sync engine that ensures reliable and predictable updates between the client and server, even under adverse network conditions and simultaneous editing.
Project goals
Investigate and document current behaviors in YouTrack’s entity update flow.
Design a generic sync engine that:
Applies changes optimistically to the local state
Performs merges between the server and local state
Detects and resolves conflicts (automatically where possible)
Optionally allows user intervention in case of non-resolvable conflicts (e.g., concurrent description edits)
Implement a prototype that integrates with YouTrack’s issue update flow.
Propose UI/UX solutions for handling conflicts when needed
Outcome:
A working prototype of a sync engine that improves the reliability of field updates in YouTrack, plus a documented architecture proposal that could be extended to other parts of YouTrack and beyond.
🛠️ Technologies & Skills Involved:
TypeScript + React + MobX (YouTrack frontend)
Real-time collaboration principles
Conflict resolution algorithms (e.g., CRDTs, Operational Transform, or simplified 3-way merge) would be a plus
Kotlin (YouTrack backend) (Not required, but a plus)
RESTful APIs and asynchronous request handling
🙋 Ideal Candidate:
Understanding of concurrency, sync models, or distributed systems
Experience with frontend frameworks (especially React) and state management
Willingness to dive deep into complex edge cases and propose robust solutions