iodide-project / iodide-project/iodide
Proposal of Metadata Support for Iodide Notebooks
- Dominant language
- JavaScript
- Stars
- 1.5k
- Forks
- 145
- PR merge metrics
- No merged PRs in 30d
Description
# Metadata Support for Iodide Notebooks
## Objective
This proposal introduces metadata support for Iodide notebooks with an aim towards localization. This proposal aims to provide a basic, single indentation field-value containing metadata cells.
## Motivation
Lack of metadata support is a blocker towards the existence of Iodide in different mediums with different audiences. Lifting this blocker would prepare the ground for Iodide's utilization in more academic and professional settings for published work.
## User Benefit
This support benefits users at two levels. First one is fields and their implications provided by the minimum viable product. The second one is providing a base for further proposals (e.g., bibliography support).
## Related Work
Jupyter (Jupyter notebook metadata), Jekyll (front matter) and Pandoc (metadata) have support for defining metadata. Only Jupyter edits and stores the data as JSON format, rest prefer a YAML block at the beginning of documents although fields vary between each other based on the supported output formats.
## Design Proposal
Metadata support for Iodide notebooks happens through a particular cell type rather than a custom interface for defining metadata. This choice helps to keep Iodide files self-sufficient and makes the support in line with the majority of related work, namely Pandoc, Jekyll, LaTeX.
Metadata cells have the `meta` tag. When multiple `meta` cells exist, their union results as the metadata of the notebook. If the same field is assigned twice, the last one is accepted. Metadata collection happens before the actual execution of cells.
Initially, only having the title and locale fields can serve as a base implementation. Title field can define the human-readable title of the notebook and locale field can define the locale of the notebook.
Example cell:
```
%% meta
title = "An Iodide Notebook"
locale = "en-US"
```
## Questions and Discussion Topics
- What format should Iodide adopt for `meta` cells? Would TOML or YAML benefit project more, given that Pontoon prefers TOML and Jekyll, Pandoc prefers YAML? Having a format that is consistent with cell argument syntax would benefit the project.
- Should metadata information be supplied to cells?
- Are there any other safe fields that we can incorporate to the minimum viable product of this proposal?
- Are there any sentences or sentence groups that would benefit from further clarification in this proposal?
Contributor guide
Research direction
The proposal names no implementation files, tests, or entry points. Before work can start, maintainers need to resolve the metadata format, how metadata reaches cells, and the initial supported fields; done would mean an agreed design and implemented metadata-cell support.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- jupyter-notebook
- Domain
- web-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100