Jay That’s great news…. interesting to have some more thoughts around the conceptual basis.
Another reason to have multiple documents (besides sharing) is the encryption. I also started with a single document, but it ended up growing so much (and back then it was having some performance problems in the mobile) that I decided to split them because I didn’t need all my documents open in all my devices… Say my work laptop required only to open my work document, my personal laptop didn’t need my work document (otherwise I was working 16 hours per day). Same thing for my phones and tablets. Then when Jay enabled encryption per document it allowed to set different passwords to limit risk. Work document was encrypted on one password and personal document on a different one, while family documents were not encrypted.
Sharing a subtree (especially now that mirrors are functional) has been a long desire that fits both personal and work needs, and having a proper user configurable way of deciding what to include in the different panes as well. Some panes require integration of data from multiple branches/documents other panes require to be local only and show only the information that belongs to the current branch. Please take this into consideration in your database redesign.
Also at the moment of sharing (especially in business contexts) you don’t want to share a subtree that belongs to an encrypted document/branch with some one that doesn’t encrypt their documents and having that become the weakest link that broke confidentiality and/or security.
Also, for when you get to it, sharing has to be able to be done on a read only or write basis. I want to be able to share a subtree but have people only look at it (for instance your development plan subtree could be shared in this fashion and preventing anybody to mess with it either intentionally or not), but in other instances I want people I share with to contribute.
Now if you want to take sharing a step further, you can open up the writeable property into (Add Only, Modify, Delete, Share) which I’ve found very useful in other apps to share information with work groups. In some use cases I want people to view my stuff and if they feel they need to they can add new entries, but not delete or modify the existing ones. I could ask a person or group to review a branch and giving them access to modify the exisitng entries, but not delete. Then there si the case when I can have some one have full editing rights but not be able to share my content with anyone (ideal for semi confidential stuff). And then there is the full access that cando everything I can.