Roadmap and design question

Just want to get out a couple of quick initial thoughts, and wish-list items as a new user. I'm hoping that a new user's perspective can be useful every now and then.

I'll start with a sort of "initial take" and then share a list of things I was looking for when comparing note-taking options. Please don't take the first list I share here as complaining; Thank the developers and community for sharing Joplin and making it possible. The reason for me starting with a sort of list of problems are that I think it's the most useful and potentially actionable info.

Initial thoughts (humble opinions)

  • The Joplin server should do more than just sync.
  • There is an API which enables note CRUD; That should be built out, standardized across the clients, and added to the server functionality.
  • The data API being named correlation with the web clipper is a bit confusing and probably sorta limits the scope/usefulness of the API to some degree.
  • Sync and backup triggers/scheduling would be useful if added to the API as well as the server interface
  • The server itself should be a sync source AND destination. For example, all clients can sync to the server, and the server can sync to a slower offsite destination such as Dropbox.
  • It would be great if versioning and backup functionality were built into the clients and server
    • A user might start with local versioning and/or backup, and then realize that a central solution is needed (so they move to server,) and then they realize that off-site backups are necessary (support for encrypted offsite/cloud backup from the server)
  • If the local and server APIs were basically the same and built out more, the CLI functionality could then be included with the clients and simplified quite a bit I think. It could provide commands for note crud, sync and backup triggering, logging, etc... But it could also just use and build off the APIs that would then be available.
  • Editor stuff. This is a bit personal and it's no huge deal, but the separate editor and view layout seems a bit antiquated, and things like hitting tab or shift+tab to indent a bullet or numbered list should, I think, be enabled.

Explanation / How I arrived here:

The "Joplin server" works well for sync, if local sync is all you want to do. I set it up and realized that there's no API exposed for searching/adding/editing/deleting or organizing notes. I figured that functionality would be made available in the "server" solution. I need that functionality for situations where my home automation, LLM solutions, or other scripts need to tie into notes for searching, creating, or editing. There are a ton of cases where this is useful, such as summary of Youtube videos, tracking and inventory system including grocery list updates, etc...

In order to get that functionality, I needed to enable the "web clipper" functionality in my local client. I can see that a web clipper would need a way to programmatically interface with your notes. But a lot of other things might also need to, and I wonder if renaming the web clipper API might make sense at some point.

Anyways, I would always need my client open on the computer I'm working on in order to use the API, and my other services would need to know/guess where to look for that API if I wanted to programmatically manipulate notes.

I was able to get the Joplin desktop app running within a headless docker instance, and it syncs up no problem, but I'm left with five disparate solutions (desktop, server for local sync, "central" desktop for API, CLI, and mobile.) I have to remember where to go for which functionality. It works so far, but it's a bit clunky.

Initial note-taking wish list:

  1. plain-text, no lock-in or proprietary formats.

    • So far, so good with Joplin. The file naming isn't really ideal though, as it makes it so I HAVE to use joplin to browse my notes. It'd be great if they were plainly named and contained tags in either meta or side-load files that could then be correlated in the database. If there was an API that made browsing notes externally much more friendly, this wouldn't be much of an issue.
  2. Reliable and flexible sync that is easy to analyze, track and, well, rely on. This seems to be somewhere that everyone struggles, including people who's only function is to sync files (looking at Drobox here haha)

    • See which files were synced/edited
    • Preferences for how to handle common conflicts (always use newer if only new content exists in newer note, concatenate both notes, attempt to merge, etc...)
    • See conflicts that arose and how they were handled in a historical view
  3. Versioning. It'd be really great to be able to see and roll back to old versions of notes

  4. Uncomplicated but flexible organization system (folders, tags, includes, etc...)

  5. OCR, hand-written notes, and other features are just kinda bells and whistles that are nice to have beyond the

Can I help?

I'm going to dig around a bit and see if I can see how the Web Clipper API was put together and build something out for my own use. Knowing how the sqlite database and notes themselves are related would be essential there. I get the feeling I can figure it out, but having that documented or explained would be a good kick-start. Thinking of starting with a simple CRUD API, and perhaps a web interface for editing when I'm on a machine where installation is not possible.

1 Like

Thank you for the feedback! I'm linking to related topics/projects.

The Standalone Sync API GSoC project may be related to this.

On desktop,

  • In Joplin >= v3.1, this should be supported by default.
  • In older versions of Joplin, it may be necessary to enable the beta Markdown editor for this to work. (Settings > General > Opt-in to the editor beta).

I'm linking to two related projects:

There's some work being done on this! See this pull request.

See Note History | Joplin

4 Likes