Henry Heino Henry Heino

Final Reflection — Google Summer of Code

Weekly status updates | GSoC project page | List of GSoC pull requests


The image editor/freehand drawing widget

js-draw on NPM | Joplin Plugin

While creating my GSoC proposal, I decided to spend my summer working on two sub-projects: building a markdown toolbar for Joplin’s mobile app and creating an image editor for both the mobile and desktop apps.

While js-draw hasn’t yet been added to the mobile app, I’ve added it to the desktop app through a plugin.

Try js-draw below!


What’s done

The markdown toolbar

UI pull request | Markdown commands pull request

Screenshot of the markdown toolbar, showing buttons for bold, italicize, toggle code, show more, link, search, and hide keyboard

The markdown toolbar is a feature added to Joplin’s (beta) mobile editor. It allows quickly changing the formatting of a region.

What’s done

Bugs and what isn’t done

Better markdown syntax highlighting

Relevant pull request (merged)

Screenshot of Joplin's beta editor. Math has highlighting, as do block quotes, bolded/italicized text


I accomplished my major goals for this summer’s GSoC project: I created a markdown toolbar for the mobile app and an image editor (with zoom from \(2\cdot 10^{-10}\) to \(1 \cdot 10^{12}\) times zoom!).

More time was spent revising code and responding to feedback than expected. For example, although I had a draft of the markdown toolbar created and ready (in my mind) to merge in the first few weeks of the program, it took a significant amount of refactoring, revising, and breaking my work into smaller pull requests to get the markdown toolbar merged into Joplin. If I apply for GSoC again, I will schedule more time for responding to feedback.

Additionally, I struggled with several bugs in React Native, including its vanishing KeyboardAvoidingView, improperly-sized KeyboardAvoidingView, and react-native-webview’s lack of support for dark-mode keyboards on iOS. While some of the issues related to the vanishing KeyboardAvoidingView have been fixed upstream, as of the time of this writing, many of these issues remain unsolved. Fixes may require pull requests to the upstream projects.

Even with the above challenges, I consider this summer’s GSoC project successful.