Why I'm really excited about Joplin (previous Evernote developer)

Hey guys, thought I would introduce myself. This is what we, in the software industry, would call "bad practice" but yeah, hi. I worked for Evernote for 6 years, during their growth from about 100 people to 350, and then I bailed when they started changing out the executive team / management way too often

In particular, I mostly worked on the editing functionality, which is written in JavaScript. Many years ago, Evernote had custom editor implementations on each platform. The Android one was particularly notorious, because they actually implemented it natively, with each line of text being a separate text widget. As a result, you couldn't copy the entire note, just like, one paragraph at a time :stuck_out_tongue:

So I spent years wheeling the company around to what we were calling a common editor. This was a massive multi-year project, which led to Evernote being able to launch editing features much more quickly and consistently. Eventually, we even researched real-time collaborative text-editing, until management was replaced again, and we had to stop the project β€” and I left the company. A few years later, they released v10, which is the Electron app version of Evernote. I actually won a hackathon implementing that concept internally, years before the official strategy became a unified codebase. These days, I've been running an Ethereum project called flowerpatch.app

Anyway, so as you can guess, I think Joplin has the potential to take everything Evernote could have been, and do it right. The way that I see it now, Joplin is an incredible base platform for features and innovation, with a focus on building software that meets user needs (privacy, modding, choice of cloud), and not capitalist needs (storing your data on their servers, pushing partially done rewrites into prod, 50 note batch export limit in recent v10). Joplin has missing features, and rough edges, but all the core design is fantastic. Honestly, Joplin really tripped me out, seeing how a few indie devs nearly-obsoleted Evernote's 350 employees and millions of dollars, while providing key features I always wanted. Joplin is nothing like the other "evernote killer" corporations, which are just the same paradigm as Evernote, and don't even offer as many features as Joplin

Joplin made me think really hard about why we, as a society, pay so much money to corporations instead of open source developers. I think if Joplin made 1% of Evernote's revenue, it would be over-funded, and capable of hiring a whole team of developers (and a designer!). Joplin would be 10x better than Evernote in a matter of a year, for 1% of the funding. In 2019, Evernote's revenue was reported to be 100 million. I guess people haven't really thought it through, but it's way more worthwhile to fund "public software" (as I call it). Public Software is owned by the people, and serves at our pleasure β€” instead of being owned by corporate, and serving corporate needs. Public software can be remixed, updated, plugged into, and forked if the leadership becomes evil. When a smart person sees that their "digital brain" could be actually owed by them, the game is over

I think the focus on CLI, scripting, data APIs, and open source extensions / plugins β€” is what will make Joplin truly great. Evernote completely fails at this, with their API being a total disaster, their export format being lossy, and the removal of AppleScript from Evernote v10. Forget a working CLI interface β€” the few attempts people made in open source quickly broke

I am already contemplating a "collaboration" plugin for Joplin that could take any note you have and let you real-time collaboratively edit it with anyone that has a magic code. This is actually way easier to implement than you might imagine, mostly because Joplin uses markdown / plain text. Honestly, this might be a weekend project for someone that's familiar with Joplin and YJS (really cool p2p real time sync framework in JS, author is a friendly and cool guy). The only hard part I can think of now is syncing resources. I might try this one day, though I'm pretty tied up with my startup

Anyway, so just huge congrats to the Joplin developers, and our humble and honest leader, Laurent! I know it's a huge grind, but you're genuinely building software that we all need, and doing it the way it should have always been done. I think the years ahead are going to be totally crazy, and I'm excited to be involved

Feel free to AMA about the stuff I wrote. I'm also pretty active on /r/joplinapp as @hugelung

8 Likes

I do not think this is the developers' intention. I think that sometimes it is more annoying for them to listen to "Evernote practice." Even Evernote does not need users with complicated workflows and gets rid of them.

There is a whole discussion about it where we could not find the best solution. It would be wise to share your ideas there.

Happy to see a new Joplin user and maybe a new plugin creator! :slight_smile:

1 Like

Yeah, that's fair for sure. I meant less that Joplin should imitate Evernote closely, but rather that Joplin is providing the foundation that Evernote should have had. Unified codebase, encryption, extensibility, etc. We can build from this

Though I do think that there is a list of Evernote features that Joplin should steal. One cool one that I really love is Presentation mode, allowing you to transform a note into a beautiful slideshow. Not too well known, because it's a premium feature iirc. This was quite challenging for EN to develop due to notes being HTML, and having no understanding of sections or titles β€” but would be super easy under Joplin's new plugin architecture, I think. Basically just a custom, fullscreen render of the note with large font and pagination

2 Likes

It is certainly a plugin idea. BTW I have never used it, my teammates have never liked it :slight_smile:

In fact, there are already existing markdown/vscode plugins, but I still have to say that it is not easy to use. . .

https://marketplace.visualstudio.com/items?itemName=marp-team.marp-vscode

In addition, I don’t think that Joplin can fully accept Evernote users. It is just a personal open source project, and what open source projects like to do is use the coolest technology to make the worst product, few people are willing to free Deal with various details and edge issues. According to experience, if it is found to be profitable, commercial companies will come to make products and do better (Eclipse => Jetbrains IDE or Vim/Emacs/Subline/Ohter... => VSCode).

Like here

The reason I am still here and developing some plug-ins for it is that there is really no other very good option, so I can only choose it.

I can see that you struggled for days with the OneDrive thing, and it does seem legitimately frustrating. However, I disagree with your general pessimism β€” open source has produced a large amount of software that all of us rely on daily. Some projects are poorly run, but then you have the opportunity to fork 'em. It seems the fact that you're here continuing to work on Joplin is actually evidence that it will eventually succeed, and become extremely stable

I also generally disagree with the idea that commercial products end up being better than the open source versions. I think it's a bi-directional flow, where good commercial projects cause open source copycats, and good open source projects cause commercial copycats. Overall, both sides end up ahead in the long run

3 Likes

Thanks for sharing your experience @Huge.Lung , it's always nice to hear how an app like Evernote was developed, and I didn't even know it was done in Electron too.

I see that like us you've struggled with the mobile editor, although we didn't go as far as implementing a native one with separate text widget for each line! For now, we're just back to a plain text field since existing solutions in React Native or even web (I thought about embedding the editor in a webview) don't cut it yet. I have hopes for Code Mirror 6 which I see is still active and should have good mobile support.

Being open source is an important part of Joplin as personally I prefer that my personal notes are not vendor-locked by any proprietary technology. I was using Evernote before as it's still one of the best note taking app out there, so when I've started Joplin it was important that I can import all my notes exactly as they were. I also sometimes check how they've implemented such or such UI feature when I have doubt on how to do it myself, saves me doing the UX research :slight_smile: So Evernote is still an inspiration although of course Joplin is on its own path now.

Indeed in open source we don't have millions of VC money, and as a result we have to be very cost effective when making decisions. If something doesn't seem maintainable it needs to be scrapped, no matter how much people might want the feature. For me a big unmaintainable core will be the end of Joplin so I'm careful with that. And we're lucky today with frameworks like Electron, React Native and Node it's possible to create cross-platform applications by sharing most of the code. Without this, I don't think Joplin would be possible at all.

I feel the plugin system indeed has potential. There's a lot of small and big features that users would want in a note taking app, but it wouldn't maintainable to make everything part of the core app. With plugins it will possible to create these features separately, and at the same time to make the core app more stable and reliable. Users have already many interesting apps using the API and created great themes with the custom CSS support, so hopefully the plugin system will take off too and we'll see some new interesting work!

10 Likes

Hehehe, lots of great stuff there @laurent! Yeah, I ended up being an accidental expert in text editing in javascript β€” its own world for sure. Let me know if you have any questions or interest with this regards. CodeMirror seems pretty decent, though we were once looking a lot at https://prosemirror.net/ (which explicitly supports mobile, markdown, and realtime collaborative editing). HTML clip editing is not worth the time to try implementing, please trust me. Imo HTML notes / clips should be treated like read-only attachments. I literally spent years trying to make this work β€” and kind of did: all Evernote notes are HTML and edited in JS β€” but html web clips or pastes will always be a mess

Yeah, I think this was basically the story of Evernote. I don't mind talking about it, because I guess it's pretty much public knowledge these days. The reason that the company stalled out is purely because of bad core decisions and huge amounts of tech debt. It's astounding how a few key mistakes can snowball so far out of control. At one point, one of the CTOs said "Evernote should have always been a fancy email client," and I couldn't get that out of my head. You may have been around long enough to remember the pre-Evernote era, where people would just email themselves "notes". Evernote could have literally just implemented an email client + email servers, instead of implementing the gigantic pile of services and custom apis that Evernote is today. Note history could be replies to a thread, folders, tags, editing, collaboration β€” all built in

Another one of those key mistakes was ENML. I believe that Joplin can move literally 100x faster because of the choice to focus on Markdown. I'm serious, I have spent years of my life implementing stuff like:

  • HTML simplifiers / note tidying
  • Working around absolutely insane web clips
  • Realtime sync of HTML (didn't even exist until my homie at YJS pulled some serious R&D to make it work, serializing and deserializing arbitrarily nested data with p2p realtime)
  • Automatic HTML table fixer, that could reformat tables into a more consistent, editable format
  • Browser bugs, way too new JS APIs for editing

Meanwhile, realtime sync of plaintext is so easy that it's going to be literally everywhere soon. Parsing notes to make previews, or understanding content layout is trivial in markdown. This kind of stuff is why Joplin has a serious competitive chance. You really can achieve the same features in 1/100 the time, if you make the right technical decisions from the start. Ofc it helps to have some hindsight too :slight_smile:

Keep up the great work!

4 Likes