Skip to content
Search

JSON Canvas

lastmod 2024-11-28created 2024-11-281 edits

An open file format for infinite canvas data

About

  • Infinite canvas tools are a way to view and organize information spatially, similar to a digital whiteboard.
  • Infinite canvases encourage freedom and exploration, and have become a popular interface pattern in many apps.
  • The JSON Canvas format was created to give data produced by infinite canvas apps long-term durability, readability, interoperability, and extensibility.
  • The format is designed to be easy to parse and gives users ownership of their data.
  • JSON Canvas files use the .canvas extension.
  • JSON Canvas was originally created for Obsidian, and can be freely implemented as an import, export, or storage format in any app or tool.
  • This site and all resources related to JSON Canvas are open source under the MIT license.

GN⁺'s opinion

  • Infinite canvases are very useful for visually arranging and connecting creative ideas and information, letting users easily structure and understand even complex concepts.
  • The JSON Canvas format takes data compatibility and long-term use into account, making it easy for users to move their data to other apps or platforms.
  • Because it is open source, the developer community can contribute to extending and improving the format, which can drive technical progress and innovation.
  • Individuals and companies using infinite canvas tools can, by adopting the JSON Canvas format, improve data interoperability and get help establishing a long-term data management strategy.
  • However, for a new format like this to be widely adopted, enough tools and apps need to support it, and users need to recognize its benefits and start using it.

Hacker News comments

  • JSON Canvas – An open file format for infinite canvas data | Hacker News
  • Introducing the JSON Canvas project
    • JSON Canvas is an early-stage project launched today.
    • Since Obsidian Canvas launched a year ago, the .canvas file format has felt stable, so it was given a name and resources so other apps can use it too.
    • The current spec is conservative and does not support many features yet.
    • The purpose of JSON Canvas is to encourage an interoperable ecosystem around the format.
    • Looking for all kinds of feedback; suggestions shared in this thread provide a roadmap for making the format more useful.
  • Comments and questions on the spec
    • The current spec is incomplete, with many unclear parts.
    • Clear explanations are needed on how coordinates work, the difference between file nodes and URL nodes, which HTML tags are allowed, and so on.
    • There are feature requests for compatibility with apps such as Excalidraw and TLDRaw.
  • Suggestions on how data is stored
    • Storing application data in text files can get complicated over time.
    • Using SQLite brings benefits such as data validation, atomic transactions, and an advanced query interface.
    • JSON Canvas is good work, but this offers a perspective from experience with SQLite.
  • Trust in Obsidian
    • Obsidian is committed to building around simple, open file formats, making it one of the few closed-source applications that can be trusted.
    • A profitable business that keeps users happy is hard for open-source alternatives to catch up with.
  • More comments on the spec
    • The spec looks pre-1.0 and lacks detail.
    • Fields such as file paths and background URLs are not clearly defined.
  • Assessment of the spec
    • The idea of exchanging formats between infinite canvas apps is good, but the spec seems heavily opinionated.
    • You could build an app like Kinopio, but anything beyond that is hard.
  • Critical comments on the spec
    • Whiteboards are all about visuals, so the spec should devote much of itself to defining visual elements.
    • The current spec looks like a very basic graph file format, and many existing specs already define the visual side better.
  • Comments from a maintainer of an open-source infinite canvas application
    • A bit disappointed that the set of supported canvas objects is so minimal.
  • Suggestions for improving the spec
    • Needs things like top-level metadata and a defined bounding box that contains all nodes.
    • Optimizing serialization so metadata is written first would be useful.
  • Spec summary
    • The spec can be summarized on one page and is simple.
    • It has a structure like "node: { type: ..., x/y/color }; edge: { from/to: ..., color/label/... }".
    • Its simplicity stands out, along with a GIF showing how to use it.

See also

Favorite site

author Zer0 sitemap