The roadmap of Inkdrop vol.5

I help people who are similar to me

Takuya Matsuyama
Dev as Life

--

Inu-san got a new goal over there

Hi folks, I hope you are doing well. It’s Takuya, the solo developer of Inkdrop. Last month, Inkdrop v5 has been released. It comes with a bunch of new features and improvements that help you organize your notes much more flexibly. I’m so happy to see people like it. And now, the current roadmap (vol.4) has been finally finished. So, let’s talk about the future of Inkdrop.

  • 2023/06/01 UPDATED
  • 2023/06/20 UPDATED

TL;DR

  • The cumulative total of gross sales has almost reached 200k USD
  • I help people who are similar to me
  • I focus on the core experience. And I allow you to extend it as you want
  • Provide the first-class experience on mobile platforms

We’ve come a long way..

Inkdrop announces a roadmap every year. The number of the next roadmap is volume 5. It’s 5! Yeah, we’ve come a long way. The first roadmap was announced 4 years ago. It would’ve not been possible without all your support. Thank you. Despite this Corona pandemic situation, fortunately, the revenue keeps stable and the cumulative total of gross sales has almost reached 200k USD 🎉

Stripe dashboard

It made a Mac Pro affordable for my development. I still remember the early days.. Many people said that they wouldn’t like to use Inkdrop because I’m developing it alone and they can’t trust if I can keep it going for years. But as you can see, I’m still working on it. This is the proof that Inkdrop won’t suddenly disappear with your data.

I help people who are similar to me

The reason why I could keep running this project without burnout is largely concerned with the app’s main target. I help people who are similar to me — those who want to take notes in plain-text Markdown for their personal use. So, it’s a very niche product. It’s not for everyone. I saw many people have left Inkdrop because I said a lot of noes to their feature requests. And I’ve been solely focusing on improving the core features instead of adding features that I won’t use. And that is the most important factor in order for me to keep running. You can broaden the target so that you can double the revenue. For example, there are a lot of beginner programmers who even don’t know what Markdown is out there. It looks very nice to target them, indeed. But if I did it, soon I get tons of questions from people like who don’t understand what they don’t understand. I try to answer them, but they still don’t get what I’m talking about. I often get troubles like people are angry for unknown reasons. Then, I get stressed out, hire people to provide user support for them, and try to make time for the development. But I get another big task. I have to train and manage the user support team. The doubled revenue is used to pay for them. I’m glad I didn’t go that way. I love to stay small. Being small means being free.

So, I don’t please everyone. It’s important for me to keep running. But I’d love to hear your voice. Please check out the past roadmaps and release notes. I credit contributors in each release. As you can see, the most implemented features and fixed issues were requested and reported by users. That means that Inkdrop has been evolved with you. Your feedback always makes me think and gives me ideas because I don’t know everything. Sometimes I initially say no to a request, keep getting it from others, rethink it, and find it important. So, please don’t hesitate to share your thoughts with me. I always appreciate your feedback!

I focus on the core experience. And I allow you to extend it as you want

The feature requests have been changing from the beginning. We’ve got v5, in which the basic feature set has been supported as a note-taking app. As users are happy with the current features, the ideas they come up with tend to be related to more particular use-cases recently. That would indicate that I’ve been working on the right issues. The more I solve them, the more people can come up with interesting ideas. If the app doesn’t solve the right issues, you would’ve quit using it before suggesting ideas. However, some ideas would affect the app’s fundamental concept, which is unacceptable, unfortunately. At the same time, I understand that there are many personal preferences and use-cases. For those requests, I usually think if they can be done by making a plugin. Inkdrop provides powerful APIs to accomplish various features. And we’ve already got more than 100 plugins now, which is awesome. I provide plugin developer license in return for their contributions. So, I’d focus on keeping providing powerful APIs rather than adding features for the particular use-cases. In v5, it supported the plugin GUI so that people can quickly find and install plugins.

On the other hand, while I try to keep it simple and clean, there are some users saying that it can do too many things. I kind of agree with them. Supporting more features doesn’t always mean good news for everyone. I don’t want to make it too bloated like Adobe products which require you to learn how to use. The best user experience is that you can use it without reading the documentation.

Therefore, I focus on the core experience. And I allow users to extend it as they want.

Provide the first-class experience on mobile platforms

Okay, so, what core experience am I planning to work on in the next roadmap? That is, the mobile app. It’s been improved during the every past roadmap but its quality is still far behind the desktop version. It still has a lot of serious issues with its performance and editing experience on both iOS and Android. I’d like to make the mobile version more comfortable to read and write notes. Let’s go.

Improve performance on loading images and E2EE

✅Done(21/02/26)

The mobile version is built with React Native. It allows sharing a large amount of the JavaScript codebase with the desktop version. For a solo developer, it was a huge benefit to quickly support mobile platforms. But React Native is not a silver bullet. It is not good at dealing with binary data like processing images or ciphers. For example, I had to hack PouchDB to get image attachments to work on RN. Besides, RN doesn’t provide modules like node.js’s crypto module. To support the end-to-end encryption on mobile, I had to use react-native-crypto for shimming the crypto functions like pbkdf2. Since it's all done in JavaScript, it's not so performant to process a bunch of data. Those RN's drawbacks cause significant performance issues like this:

If you have a large image in a note, it takes a very long time, or it’ll never be loaded in the worst case. It even blocks the main thread of JavaScript, which causes the app unresponsive eventually.

I’d like to solve it by making native modules for accomplishing faster and asynchronous processing of images and cryptographic data. Maybe I can drop the dependency on react-native-crypto which would make the app much simpler.

✅Build a native Markdown editor for iOS and Android

🎉New mobile app has been released! (May 2023)

The current implementation of the Markdown editor on mobile is based on CodeMirror running in WebView. But WebView is not suitable on touch screens for providing a code editor as CodeMirror itself has been struggling. I’ve made some dirty patches to make CodeMirror work on both Android and iOS. But it’s not as smooth as you’d expect, as you’ve got the following issues:

Unfortunately, those issues are not possible to solve with the current web-based implementation. I tried various editor libraries on mobile but none of them worked fine on both Android and iOS as they are basically meant to be for PCs. On top of that, Android doesn’t provide a solid way to handle its input assistance like auto-correct. Android often messes up the CodeMirror’s state. Thus, the editing experience on mobile devices is kind of terrible at the moment.

The next version of CodeMirror is being developed and we could expect that it will work smoothly on mobile browsers as they say it aims to support touchscreen. It’s been 2.5 years since the project started, but its ETA is still unknown. You know, making a code editor is very very hard and time-consuming work, as the author of Xi Editor wrote in his retrospective.

As I saw CodeMirror.next is still in the early alpha stage, I’d like to consider another way. That is, to build a native Markdown editor. Yes, this is going to be a big challenge. I don’t know if it will work out or fail. But listen, I have a promising idea for accomplishing it. Here is a brief diagram that depicts the native editor architecture:

The idea is that a native editor component is built on top of UITextView on iOS and EditText on Android, and it relies on CodeMirror as its backend for syntax highlighting and input manipulations like continue list. I came up with this when I saw Highlightr, which uses highlight.js as its core:

I guess CodeMirror works better because it supports incremental parsing. As I’ve already done some dirty-hacks for the current mobile version, I understand a bit the internals of CodeMirror. Highlightr is converting HTML into NSAttributedString which would not be so good in terms of performance. With CodeMirror as its backend, you can get metadata of code syntax more efficiently and incrementally, which would be better.

I found that it is a good opportunity to contribute to the React Native community as there are no solid modules for having a code editor component. Not only Markdown, but it can also be used for editing HTML, CSS, Python, Ruby, etc. If I successfully built it and published as an open-source project, it may get quite good attention from the community. It would also be nice for marketing Inkdrop.

I’ve been fiddling with Android’s EditText and iOS’s TextKit. I made PoCs and I think I can do it. Let’s give it a try.

👀 Share target & share extension

Providing a quick way to stock web pages would be important, as we often find useful pieces of information on the web and other apps. It involves some native implementations for each platform. Note that it is not going to be a web clipper.

✅️ Export as PDF and HTML

💪Work in progress (May 2023)
🎉It’s now supported in v5.1.0

Better exportability is important as I wrote in the previous roadmap. Because I was planning to rebuild the editor in native, it is not supported yet. It also involves some native implementations.

✅ Search in note

This is important to help you read notes.

Keybindings

If you are using a hardware keyboard, keybindings are crucial for better productivity as you can quickly perform actions with your keyboard on the app. Since RN doesn’t provide a way to support keybindings, native implementations would be necessary to accomplish that for each platform.

API Improvement

Command palette

Inkdrop comes with a lot of commands that can be bound with keystrokes as you like. But like Atom and Sublime Text, if we have a command palette, the commands can be found by keyword and be tried quickly without configuring keymaps.

Let’s make it together

Thank you so much for reading this! To make Inkdrop more sophisticated and mature, it will not be possible to accomplish without your help. Let me know what you think on this roadmap!

Thank you so much for supporting Inkdrop!

--

--

I’m an indie SaaS developer currently building a Markdown note-taking app called Inkdrop. https://www.inkdrop.app/ Homepage: https://www.craftz.dog/