I am so excited to be open sourcing Notesnook this month! This blog will give you a clear idea about why we are doing that, what we aim to accomplish & how you can help. If you have any questions, feel free to reach out on Twitter.
A matter of trust
When I look at the private note-taking apps space, there's only one name: Standard Notes. Its trustworthiness is undeniable because it is open source regardless of how good or bad it is. On top of that, every respectable privacy-oriented software is also open source. A clear indication that we are the odd one out.
So why now? The main reason for the delay was inexperience & lack of resources. Notesnook has been a 3-man project for a year & we could do only so much. Maintaining an open source project requires a lot of energy. Energy we could not spare.
Along with that, we had very little idea about how important open sourcing is. Over time and feedback from our users, we realized the opportunity we were missing. Many people reached out to us concerned about their privacy. More often than not, the conversation went something like this:
Hi, I love what you guys are doing with Notesnook, but I cannot migrate all my notes because it is not open source. Have you guys thought about open sourcing yet?
Users' feedback has been the primary motive behind Notesnook's growth (the new editor, fixing performance issues, making sync reliable, etc.). It was clear after a time that a lot of users were hesitating to join Notesnook because we weren't open source.
And the community's response speaks for itself after we broke the news last month. We received 100+ stars on our GitHub repo, 700+ followers on Twitter, and a lot of people came back after hearing that we are going open source. All these are validation enough that this is a good idea.
Open source is nothing without its community of contributors, developers & everyone else working together to make something great. We'd be crazy to not let Notesnook benefit from that.
And to be honest, Notesnook would not be here today without the efforts of the open source community; starting from the lowest layer (Linux) to the highest (React). We owe this contribution to OSS.
For this very reason, we have decided to go with an (A)GPLv3 license. I wanted a less permissive license for Notesnook (BSL or something) but this wonderful article by Drew DeVault changed my mind. Freedom is a part of open source & we do not want to restrict you in any way.
DCO vs. CLA
I had no idea what Developer Certificate Of Origin was until I heard about what happened with Redis Labs & ElasticSearch. I have signed a few CLAs myself (React Native) not knowing what they implied.
Re-licensing our contributors' hard work under a proprietary license would break all levels of trust. Even if that is legal, I cannot allow Notesnook to allow that. Everyone deserves to be acknowledged for their contributions which is why we are going with DCO instead. I am hopeful that this will create a safe environment for everyone & encourage more contributions.
If you have a minute, I'd appreciate if you can star our GitHub repo.
Building Notesnook behind closed doors gives us the safety to be lazy & make mistakes. An easy thing to do since no one can point them out. I know for a fact that there are some obvious flaws in Notesnook invisible to my eyes. No matter what I do I cannot completely eliminate that. Open source gets around this by being transparent. What is transparency?
The fact that anyone can scrutinize my code & point out the mistakes. At first this is anxiety-inducing but from a different perspective it is also vital for Notesnook to be bulletproof. 1 person cannot fix the bugs a 100 people can.
I was a user of the MYKI password manager for the last couple of years. This year when they got acquired I was forced to migrate — not something I enjoy. I liked how MYKI made managing passwords so simple but they shut down their servers and I could do nothing.
If MYKI had been open source this whole scenario would have been so much different. I'd have self-hosted it and gone on with my life.
That's what I want Notesnook to be. A piece of software that'll live on even if we decide to shut it down. Independent from decisions of a single party.
What will be open sourced?
Here's a list of all the different components of Notesnook that'll be open-sourced:
- Web, desktop & mobile clients
- Shared core
- Editor & extensions
- Sync server
Most of these will be in a monorepo for seamless integration. The sync server get its own repo, though.
How can you contribute?
In the first few weeks, we'll be focusing on improving repository's health. This includes:
- Writing lots & lots of tests
- Improving documentation
- Refactoring the client apps to share as much logic as possible
We won't be accepting any feature pull requests until the repository is in a good enough health. Still, you can help out in various ways:
- Bug fixes (& bug reports)
- Writing documentation
- Taking part in refactoring discussions
- Writing tests (if you are familiar with Playwright, Jest, etc.)
All in all, I am super excited about making Notesnook open source. If it were possible I'd open source it immediately but I want to do it right to avoid any regrets later. This is by no means a sole mission and you can take part in the conversation without any hesitation on GitHub.