looking to get out of “all my stuff are in Google’s server” I discover Joplin to get out from Google Keep.
One feature I miss is the ability to share some notes with my loved one.
I realise that is quite contradictory with the whole encrypted note stuff so I’m opening this discussion.
I was thinking to have an encryption key per notebook so I can create a shared notebook but we need also a way to sync only this notebook.
For this, may be the ability to specify a sync channel per notebook as well so a notebook can be sync into a common account in the cloud?
Sharing notes and notebooks is a commonly asked features and I agree it would be useful. The way Joplin is architecture at the moment would not make that easy though.
A way to somewhat make it work would be to have multiple Joplin profiles, eg. one for work, another for sharing stuff with family, each syncing to a different target. Obviously it’s not as convenient as having everything in the same app but it would work. To use multiple profile, use the “–profile” flag or use multiple PortableApps versions.
Nextcloud has a fairly easy sharing API available, thus implementing a right click on a note to share that note publicly (could also be protected by a password), should not be too hard.
Of course this will not work, if the notes are E2E encrypted.
Also, this would require using different APIs for all the different synchronization endpoints (Nextcloud, Google Drive, Dropbox, ...).
Unfortunately I'm so not a JS guy that I can't implement this myself. If this project were in Objective-C, Python, or some GUI C/C++ code, I would have already submitted several PRs and helped with other feature requests.
When I have a bit more time, I will look into JS development...
However, this is definitely a feature I'd look forward to as well.
Yes, most cloud platforms have a way to share files, however the issue is that Joplin’s data is not in a user-friendly format (it’s basically a database meant for performance), so it makes it hard to find the file you want to share, and for the recipient the file will look strange with metadata appended at the bottom.
What I’ve been thinking of is develop a client that will create a user-friendly copy of the data in a folder (called a “Live Folder”), with a folder per notebook, and each .md file named after the note title. The Live Folder will be updated whenever something change in Joplin or whenever one file is modified or added. Those files and folders will be placed in eg. the Dropbox directory on the user’s computer, and Dropbox Sync will take care of syncing that to the cloud. Then it will be possible to share and view the data more easily.
There are quite a few drawbacks to this approach though, which is why I haven’t done it yet. Mainly, it relies on the cloud platform own sync client, it won’t work on mobile, it indeed can’t work with E2EE, and if two clients read/write to the same Live Folder, various conflicts could happen. So basically it’s not sure yet what’s the best way to do all this.
Would this “Live Folder” allow the other person(s) to edit the notes with Joplin on their devices, and have the changes sync back to the first user?
My wish, and I assume it’s the same for @Geobomatic, is to share the actual notebook, so that the other person can also use it through their Joplin app (add/remove notes, add/remove tags freely, … as if the notebook had effectively two owners ). In my case, my partner and I use a shared Evernote notebook, where we can co-edit notes from all our devices.
(If Joplin allows all co-owners to add/remove arbitrary tags, that would put it ahead of Evernote, which lets only the original owner of the notebook add any new tag to notes in a shared notebook.)
For the second one I could still have E2E (but need to share the password with the person I want to share the notebook with). And in the app, it would divide the two accounts like an email app sets up different accounts by giving you two different headers too visit.
Maybe this is a stupid idea, I was just wondering if that would be a solution for sharing notebooks? I know this means you are really sharing through the cloud provider, but I think that is the best solution anyway since Joplin doesn’t offer it’s own server for syncing notes (which I think is good! Focus on the app, not having to run your own server for syncing and all work that comes with that).
A solution I would prefer is to the ability to assign individual syncing addresses to individual notebooks (or groups of notebooks). Whoever has access to such a syncing address is totally up to the user. From a programming point of view, another user is just another device. No hassle with user accounts, sharing tables, etc. Apart from the ability to assign dedicated syncing hosts to individual notebooks, no other changes in the program are needed.
If you are going to share notebooks you somehow need to mark which notebooks you are going to share and with whom. All this is taken care of automatically if you just can assign individual sync addresses to individual notebooks. No hassle with multiple user accounts, sharing tables, etc. Just like it is now, a syncing address can service multiple devices and whether these devices have the same owner or not is not really your concern.
It is likely that I might have to use multiple sync addresses anyway, as I might prefer my own nextcloud for sharing with my wife, and the companies google cloud for sharing with my company partners. So you will end up providing multiple sync address capability anyway.
Apart from sharing, multiple syncing hosts is a usefull feature by itself. I live on a sailing boat and I use shore connections when available. While anchored at unihabited islands I still like to use notes and still have (unfortunately) a need to maintain todo lists. So I use the on board netcloud server so sync all boat related notes/todo’s between devices, and shore related notes/todo’s via a shore based cloud server.
This appears to be open still, so I’ll post a suggestion here that should be easy to implement and may meet your needs…
@laurent would it be simple enough to enable a profile switcher in the file drop down menu and to only provide access to the notebooks that have been created/imported for that profile? I would understand if this were to be a desktop (PC/Mac) feature only, although I would expect some of the users of this feature to be a bit grumpy if they had to find some other way to swap profiles on mobile (not everyone would mind though, like myself, I have a separate work phone and personal and would only have one profile on each). Also, some smart phones allow multiple profiles on them and multiple instances of apps as well which would also make using this feature easier.
I located this feature request while searching for a way to sync only one notebook. This feature (as I am suggesting it be implemented) would allow me to do that, although not in the way I expected. The OP suggestion of selecting the sync target on a per notebook basis is what I was thinking of, but a profile system would be nice too.
Just adding my "vote" for this functionality
I guess having possibility of setting a separate synchronization target for notebooks intended to be shared would be sufficient for most of folks. For instance currently at home for a shared family shopping lists we are using tasks on a shared gmail account. Works quite well.
I was just thinking about this. Wouldn't an alternative to a database be an index file for speed listing of notebooks/notes, that would reside in "notebook" subfolders (and sub-sub-folders if needed) of \Joplin and each note residing in there as .md file with the note title? While editing a note, a lock file .lck could help avoiding conflicts.
Except for e2ee notes this would allow for easy sharing/forwarding notes...
Maybe I missed a point?
I wonder if notebook sharing couldn’t be fixed by doing it like Boostnote does it? There you can add several folders (in Joplin’s case I would say several WebDav connections to different folders). Where I can add one for my personal, and encrypt it, and another one for a shared notebook. Then Joplin doesn’t really have to deal with the sharing but rather the cloud provider you have.
I for one think this topic is very important. Coming over from OneNote I still have the notebooks I’ve shared and use with my family on MS servers.
If sharing will be implemented I wish I could use all my notebooks inside of one instance of Joplin. Meaning, I could easily move notes between shared and private notebooks. And ideally, yes, it would be possible to encrypt only some of the notebooks or at least encrypt with a different password the ones shared and not shared.