frontends-team-compass
frontends-team-compass copied to clipboard
How do we model notebook and cell metadata?
This issue is to call a vote on the proposal in https://github.com/jupyterlab/jupyterlab/issues/12709
(Full text of top-line comment)
Problem
We have an open PR #12359 from @hbcarlos that refactors our models for notebooks and text documents to improve the real-time collaboration (RTC) user experience and APIs for extension developer. There are a couple of questions that are coming up in the review of that PR that are not really RTC questions. I am opening a few issues to help us reach consensus/vote to resolve those questions to make it easier for us to review and make decisions about #12359.
In the current issue, we are trying to answer the following question:
How do we model notebook and cell metadata in RTC?
There are two primary options under consideration:
- Notebook and cell metadata is a single JSON blob. In this approach, our internal APIs and extension authors can only replace or observe the entire notebook or cell metadata blob.
- Notebook and cell metadata is a nested set of shared types (list, map) that allow internal APIs and extension authors to mutate and observe metadata at a fine-grained level. Thus, the slideshow metadata can be modified and observed without touching the top-level notebook metadata.
There is a third option that is half-way between these two (only use a shared map at the top-level), but this option doesn't answer the actual question that is coming up in the review of #12359.
Proposed Solution
The proposed solution is that we should be able to model notebook and cell metadata as a nested set of shared types (option (2)) above. If we decide this is the right approach, we will then have to figure out how we get from where we are now to this north star (in JLab 4 or beyond). The key is that this would rule out us making decision now that would make it difficult or impossible to move in this direction over time.
Summary
Vote Yes if you agree with the following:
Notebook and cell metadata is a nested set of shared types (list, map) that allow internal APIs and extension authors to mutate and observe metadata at a fine-grained level. ... that we should be able to model notebook and cell metadata as a nested set of shared types ... this would rule out us making decision now that would make it difficult or impossible to move in this direction over time.
Vote No if you agree with the following:
Notebook and cell metadata is a single JSON blob. In this approach, our internal APIs and extension authors can only replace or observe the entire notebook or cell metadata blob.
@jupyterlab/jupyterlab-council votes
- @ellisonbg
- [x] Yes
- [ ] No
- [ ] Abstain
- @fperez
- [ ] Yes
- [ ] No
- [ ] Abstain
- @ivanov
- [x] Yes
- [ ] No
- [ ] Abstain
- @afshin
- [x] Yes
- [ ] No
- [ ] Abstain
- @jasongrout
- [ ] Yes
- [ ] No
- [ ] Abstain
- @jtpio
- [x] Yes
- [ ] No
- [ ] Abstain
- @damianavila
- [ ] Yes
- [ ] No
- [ ] Abstain
- @blink1073
- [x] Yes
- [ ] No
- [ ] Abstain
- @krassowski
- [ ] Yes
- [ ] No
- [ ] Abstain
- @marthacryan
- [ ] Yes
- [ ] No
- [ ] Abstain
- @fcollonval
- [x] Yes
- [ ] No
- [ ] Abstain
- @mbektas
- [x] Yes
- [ ] No
- [ ] Abstain
- @isabela-pf
- [x] Yes
- [ ] No
- [ ] Abstain
- @ajbozarth
- [x] Yes
- [ ] No
- [ ] Abstain
Edit: Fixed a typo pointed out in the comments.
Thus, the slideshow metadata can be modified and observed without touching the ~~slideshow~~ metadata.
Thus, the slideshow metadata can be modified and observed without touching the top-level notebook metadata.
I think I grok the bulk of the proposal, but can I ask for clarification on this sentence?
Thus, the slideshow metadata can be modified and observed without touching the slideshow metadata.
Honestly it doesn't parse in my brain - how can something be modified without touching it?
Please read my comment about why we implemented metadata using coarse granularity.
https://github.com/jupyterlab/jupyterlab/issues/12709#issuecomment-1164266229
I'm all in favor of exposing a granular interface. As I said before, that could be easily done on top of the existing shared-model approach.
@fperez:
I think I grok the bulk of the proposal, but can I ask for clarification on this sentence?
Thus, the slideshow metadata can be modified and observed without touching the slideshow metadata.
Yes, this was a typo! I've updated the description to say:
Thus, the slideshow metadata can be modified and observed without touching the top-level notebook metadata.
Technical: can we please ensure that everyone has edit rights on team-compass to vote by clicking a checkbox? It looks that I cannot edit this post and hence vote by click.
Technical: can we please ensure that everyone has edit rights on team-compass to vote by clicking a checkbox? It looks that I cannot edit this post and hence vote by click.
@krassowski You should be able to vote now.
The voting period for this proposal has closed:
- Yes: 9 votes
- No: 0 votes
- Abstain: 0 votes.
With a voting body of 14 council members, the quorum of 50% is met and the proposal passes.