iodide-project / iodide-project/iodide

Proposal of Metadata Support for Iodide Notebooks

Open
#2,029 2 comments 0 reactions 0 assignees View on GitHub
l10n
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.