Links
-
Link to project Idea: gsoc/ideas.md at master · joplin/gsoc · GitHub
-
GitHub profile: gherardi (Victor Gherardi) · GitHub
-
Forum introduction post: Welcome to GSoC 2026 with Joplin! - #69 by gherardi
-
Pull requests you have submitted to Joplin (include all of them, even if not merged)
1. Introduction
-
Background / studies: Computer Science student at the University of Milan (Italy
) with a strong interest in software engineering and systems design. -
Programming experience: Solid experience with algorithms and complex architectures through projects like wyag (version control system implementation from scratch) and shell-c (unix shell in C).
-
Experience with open source: Participant in the Joplin community through advice and contribution preparation, and have also engaged with Submitty (open-source organization), where I have an active pull request
2. Project Summary
-
What problem it solves: Currently, Joplin doesn’t handle notes conflict when the same note is edited on different devices, requiring tedious manual merging by the user.
-
What will be implemented: A deterministic conflict resolution engine that uses three-way merge and text diff algorithms to automatically combine compatible edits.
-
Expected outcome: A system that reduces manual merging while providing a dedicated UI for assisted resolution when automatic merging isn't safe.
3. Technical Approach
-
Architecture or components involved: The engine will use a "Base" version (last synchronized), a "Local" version, and a "Remote" version to perform the merge.
-
Changes to the Joplin codebase: Integration of the merge engine into the existing synchronization workflow at the point where conflicts are detected.
-
Libraries or technologies you plan to use: TypeScript based diff libraries (e.g Myers diff algorithm) and heuristics to preserve list structures and headings.
-
Potential challenges: Managing overlapping edits and ensuring the system never discards user changes by falling back to assisted resolution.
4. Implementation Plan
-
Weeks 1–2: Analyze current conflict detection, define data flows, and prototype the initial merge engine with unit tests.
-
Weeks 3–5: Implement three-way merge logic and integrate the engine with the synchronization process.
-
Weeks 6–7: Improve merge quality for markdown (lists, headings) and optimize performance for large notes.
-
Weeks 8–9: Design and implement the shared TypeScript ui for assisted conflict resolution.
-
Weeks 10–12: Extensive testing of edge cases, code cleanup, and finalization of documentation.
5. Deliverables
-
Implemented features: An automatic conflict detection/merging engine and a cross-platform assisted resolution interface.
-
Tests: A suite of unit and integration tests covering simultaneous edits, large notes, and structured Markdown.
-
Documentation: Developer guides for the merge algorithm and updated user documentation for the new workflow.
6. Availability
-
Weekly availability: Full-time commitment of approximately 40 hours per week for the duration of the summer.
-
Time zone: Based in Italy (CET/CEST) but flexible to adapt to mentors' needs.
-
Other commitments: Three isolated university exam days, with work redistributed to compensate.