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.
- 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.
- 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.
- 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.
- The spec looks pre-1.0 and lacks detail.
- Fields such as file paths and background URLs are not clearly defined.
- 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.
- 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.
- A bit disappointed that the set of supported canvas objects is so minimal.
- 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.
- 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.