RFC 42 - Self Contained Vaults #2349
Replies: 10 comments 27 replies
-
An interesting proposal. It would be useful to see some use-cases described and some further detail.
|
Beta Was this translation helpful? Give feedback.
-
Thanks @SeriousBug But how would two separate vaults know about each other for the lookup (etc) to work across them if there is no workspace with the conguration file that lists them as belonging together? |
Beta Was this translation helpful? Give feedback.
-
While its optional, I would still include it by default on every vault. This is because vscode is our main client and if other users open the vault using vscode, we can add
What is the folder called? can you add it to the layout diagram in the RFC? how do we deal with collisions? (eg. I publish a vault named
Can you elaborate on how local vaults will be handled? Will they live inside the dependencies folder inside the vault (eg. copied or symlinked over)?
This is if you pull in a vault that depends on a local vault? |
Beta Was this translation helpful? Give feedback.
-
Also, can we apply the full RFC template to the RFC doc? [[RFC|dendron://dendron.dendron-site/templates.rfc]] |
Beta Was this translation helpful? Give feedback.
-
Also - how will we support mixing and matching vaults depending on use case? |
Beta Was this translation helpful? Give feedback.
-
Greetings, Since this would affect Native Vaults in some way, I would like to ask if the following would be possible: I have a Native Vault in Project A:
And I have a Native Vault in Project B:
Could I add the Vault from Project A as a dependent for Project B? Or another case We have a Monorepo with the following structure:
Could I Add the Vaults of the Components A and B to the Vault of the Overall Monorepo? I Hope what I wrote makes at least some form of sense for someone besides my brain, if you have further questions feel free to ask. |
Beta Was this translation helpful? Give feedback.
-
For new concepts, can we have a section called
Should be added as a concept. Can we have an example of what this looks like?
What do we do for people that don't want to upgrade? Do we support the legacy vault format forever? Or do we do a cutoff date?
At this phase, can users create self contained vaults? Would it be part of initialize workkspace?
What are the details of converting into this format?
Ideally, to support editor configuration changes we will support a local override that is outside of version control. Eg.
Today, xvault link is Eg: Might be a little unwieldly. The other solution is import maps -> https://deno.land/manual/linking_to_external_code/import_maps Some questions that I wasn't too clear on.
Lets say we make
|
Beta Was this translation helpful? Give feedback.
-
Nice write-up! It'll be exciting to see how this pans out. A few comments below: Vault DependenciesOn Format
How do we go from this format to actually resolving the URL from which to do a git clone? i.e., what if gitlab and github have different formats? Should we flatten out the structure to just the URL's? I think deno does something similar. On ChoiceI think we should offer an option to the user whether to download dependencies or not. The use case is quite different than with code - for example, if not all dependencies are met, your code won't compile / run. But that's not the case with notes. Say you bring in a vault that has 100 notes, only 1 of which contains a ref to a different vault. That different vault contains tons of dependencies. You may mostly just want to browse the 100 notes of the original vault, and you may never even come across that link. But then you'd be forced to bring in x additional vaults just to read those 100 notes that you wanted. To be fancier, at some point we can even choose to 'lazy load' - we only bring in additional dependencies when the user actually clicks on the link or wants to view the ref. Read-only vaultsI like the concept and proposals. One thing - we should consider maybe a way to have the vault only become read-only once it's 'published' (here, I'm using the word published loosely). That way, when the original author is working on the vault, they won't get prompted with read-only warnings, but only other folks get that warning when they pull down the published version. Mostly an edge case, not a big deal. dendron.ymlI think we need to add a section to the spec detailing how dendron.yml will work. This is alluded to in earlier comments, but right now dendron.yml mixes both workspace configuration with editor configuration. If a user has multiple vaults, each with their own dendron.yml, I'm worried users may find it confusing on knowing which one to edit for each scenario. And even for some editor experience commands - would we ever want the behavior to be different depending on which vault you're in? Or do we say that your root vault's settings always take precedence in the editing experience. For example: preview:
enableFMTitle: true Potentially, this can be either a user-desired behavior (I always want my notes to look a certain way in preview) or it could also be a vault behavior (the notes in this vault have been written such that the FM titles are formatted nicely, so the preview should use those). We may also need to enhance some of our commands to make working with settings in a multi yaml setting more intuitive. Broader Discussion on Dependency ManagementHow dependency management should pan out requires some more thought. It's easy to look to try to mimic how we do it for code and use npm as an analogy, but the more I think about it, the use cases around vaults/notes is quite different than modules/code-files. We should take inspiration from how we manage code and apply it to how we manage vaults/note, but when the analogy stops making sense, we should probably diverge. For example, we mention having the ability to check out a dependency at a specific commit, for example Another related issue is with cross-vault refactoring. This works well today with Dendron when I own (or can edit) all vaults that depend on me. But what if I can't? If I have a published vault, how can I rename my note without potentially breaking reference links to that note in other people's vaults? Does this imply that we basically should always depend on a commit hash for a public vault? In software, we can maintain back compat by guaranteeing an interface or an API. But here's where I think the analogy breaks down for us. What does 'guaranteeing' an interface mean for notes - that our note names and headers can never change? That's most likely going to be too restrictive - but maybe schemas can help us here. |
Beta Was this translation helpful? Give feedback.
-
This might be just creeping in more things to the scope than needed, and is an complete antithesis of vault dependency management, but would vendoring in vaults be something that can be done? (so that they aren't under dependencies, but rather exists locally with the vault somehow). |
Beta Was this translation helpful? Give feedback.
-
This looks great, and I have a ton of questions:
One last item: I think we've talked about a feature that we haven't yet implemented, and that is refactoring logs. As in, a machine-readable list of refactors in a repo. This is because cross-vault links are rather fragile right now, and break in the event that a refactoring is done on a vault outside of different workspaces. We'd likely want this as a feature request if there isn't one somewhere, but it could be designed with however this approach to vaults is implemented. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
This is the discussion for Self Contained Vaults RFC.
A summary of the discussion below as of 2022-02-15 can be found on the RFC page: Summary
Beta Was this translation helpful? Give feedback.
All reactions