frontends-team-compass icon indicating copy to clipboard operation
frontends-team-compass copied to clipboard

How do we model notebook and cell metadata?

Open afshin opened this issue 3 years ago • 6 comments

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:

  1. 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.
  2. 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.

afshin avatar Jun 20 '22 23:06 afshin

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?

fperez avatar Jun 22 '22 05:06 fperez

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.

dmonad avatar Jun 23 '22 11:06 dmonad

@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.

afshin avatar Jun 23 '22 18:06 afshin

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 avatar Jun 27 '22 21:06 krassowski

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.

SylvainCorlay avatar Jun 29 '22 12:06 SylvainCorlay

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.

ellisonbg avatar Jul 11 '22 00:07 ellisonbg