This pull request implements a custom image editor for the mobile app. It supports pen/touch drawing, touchpad gestures, and has an extremely large zoom range.
Features supported by the current implementation
An extremely large zoom range
Primarily designed for touch/pen input but also able to work well with mouse/keyboard input
Ability to rotate the screen while zooming
A GUI that fits nicely on a phone/tablet screen as well as on a desktop
This includes touchscreen and touchpad gestures, and keyboard navigation.
Saves as vector images (ability to edit images after saving)
Is maintaining this app worth it? If not, what other image editing libraries exist that provide comparable functionality?
If the Joplin team does not maintain the new image editor, I'm willing to try maintaining it myself. Should I consider doing this? Is there another currently-maintained library that we can use instead?
Edit: For now, the image editor is being distributed as a plugin for the desktop app. It may be added to the mobile app as an opt-in beta feature after additional testing/stabilization.
That would be great, but even if you maintain it we won't have the benefits of an established library. An extreme example is React Native - we know we can rely on it because there are thousands of companies using it so even if Facebook stops developing it, Microsoft or some other big company will take over. With a small lib maintained by one person, we don't have these guarantees which are very important for us.
I mean it might depend on your personal interest. Perhaps there's a potential to create a new generic JS image editor, with better mobile support for example. Then if you release this and a lot of people get interested and start using it, we get some of those guarantees I mentioned since there will be more contributors, etc.
But I don't know if that something we want for GSoC at this point?
I've given up on integrating FabricJS for now. While FabricJS would make it easier to add additional features, I think it would require roughly the same amount of custom code for the current functionality.
I've published the editor on NPM, however!
Because GSoC is nearing its end, I think the best course of action is to:
Create a plugin that connects the desktop app to js-draw.
Create another pull request that connects js-draw to the mobile editor.
For now, js-draw can be marked as a "beta" feature and be opt-in. A note can direct users to report issues/give feedback on GitHub.