JSON Canvas – An open file format for infinite canvas data

Overall reception

  • Many are enthusiastic about having an open, simple format for infinite canvases and praise Obsidian for publishing it.
  • Others feel the spec is too immature to be labeled “1.0” and see it more as Obsidian’s internal format than a true community standard yet.

Spec design: simplicity vs completeness

  • The spec is very small: nodes with type/position/color, edges with from/to/color/label, plus a few node subtypes.
  • Some appreciate this “Markdown-like” minimalism as good for adoption, readability, and extensibility.
  • Others argue it’s under‑specified and opinionated: preset colors, fixed node types, unclear semantics for fields like file, backgroundStyle, and coordinates.

Interoperability, extensibility, and governance

  • Many like the goal of interchange between canvas apps, but question how far that can go when apps innovate mainly in node semantics and behavior.
  • Suggestions:
    • Baseline core spec plus extensible metadata (similar to unist or Markdown frontmatter).
    • Explicit support for custom node types, styles, and embeds (URIs, MIME types, richer link types).
    • Version field at top level; conventions for extensions.
  • Some criticize launching as a “1.0 open format” without prior collaboration with other tools; others see this as a reasonable starting point that can evolve through feedback.

Technical details & missing pieces

  • Calls for:
    • Explicit bounding box / metadata for initial view and embedding.
    • Clearer definition of coordinates, units, zoom behavior, and origin.
    • Defined z‑ordering (later added: array order = z‑index).
    • Explicit group children instead of inferring from geometric overlap.
    • More styling (stroke width/style, shapes, scribbles, transparency, routing of edges).
  • Debate over arrays vs maps for nodes, required vs optional fields, and whether “point nodes” should exist.

Format choice: JSON vs alternatives

  • JSON chosen is seen as good for tooling, web use, and text‑file philosophy; some argue SQLite or binary formats would be better for integrity and performance, others note portability, diffability, and simplicity favor JSON.
  • Comparisons to SVG, GraphML, Excalidraw, Argdown, HTML, and YAML: several argue reusing or mapping to existing standards might be wiser; others say SVG/HTML are too low‑level or complex for this semantic graph‑like model.

Infinite canvas UX

  • Mixed feelings: some find infinite canvases powerful; others find them overwhelming and poorly aligned with their mental models.
  • Suggestions include multi‑scale information density, nested canvases, and tooling that operates on subsets/viewport slices rather than whole documents.