Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How do we model notebook and cell metadata? #150

Open
9 of 42 tasks
afshin opened this issue Jun 20, 2022 · 6 comments
Open
9 of 42 tasks

How do we model notebook and cell metadata? #150

afshin opened this issue Jun 20, 2022 · 6 comments
Labels

Comments

@afshin
Copy link
Member

afshin commented Jun 20, 2022

This issue is to call a vote on the proposal in jupyterlab/jupyterlab#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


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 afshin added the vote label Jun 20, 2022
@fperez
Copy link

fperez commented Jun 22, 2022

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?

@dmonad
Copy link
Member

dmonad commented Jun 23, 2022

Please read my comment about why we implemented metadata using coarse granularity.

jupyterlab/jupyterlab#12709 (comment)

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.

@afshin
Copy link
Member Author

afshin commented Jun 23, 2022

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

@krassowski
Copy link
Member

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.

@SylvainCorlay
Copy link
Member

SylvainCorlay commented Jun 29, 2022

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.

@ellisonbg
Copy link
Contributor

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants