Announcing OCIF 0.2 is ready for implementation
TL;DR: The OCWG has released a draft specification of the Open Canvas Interchange Format (OCIF) specification. While still a draft, it is considered ready for implementation.
An Example OCIF File
Here's a simple OCIF file containing a circle with "Hello, World!" in it:
{
"ocif": "https://canvasprotocol.org/ocif/0.2",
"nodes": [{
"id": "n1",
"position": [100, 100],
"size": [50, 50],
"resource": "r1",
"data": [{
"type": "@ocwg/circle",
"radius": 50
}]
}],
"resources": [{
"id": "r1",
"representations": [{
"mime-type": "text/plain",
"content": "Hello, World!"
}]
}],
"relations": [], // Sets, edges, hyper-edges, etc
"schemas": [{
"uri": "https://spec.canvasprotocol.com/node/circle/0.2",
"name": "@ocwg/circle",
"schema": {
"properties": {
"radius": { "type": "integer" } },
"required": ["radius"]
}
}]
}
OCIF files are a collection of:
Nodes: visual items, placed on the canvas.
Resources: content displayed by Nodes, such as text, vector drawings, raster images, videos, or audio files.
Relations: logical connections between Nodes (and other Relations).
Schemas: definitions of the structure of Nodes and Relations, including Extensions to the main spec.
What's Next
On March 14, 2024, Orion Reed and Jess Martin announced the Open Canvas Working Group with a goal of establishing interoperability between infinite canvas tools. Over the last nine months, we've met together bi-weekly (see Meeting Summaries with links to recordings) and worked through a lot of design challenges (see Design Decisions for a summary).
Over the next few months, we'll be focusing on adoption. Specific objectives include:
Documentation and examples
Define the core extensions (rectangles, circles, arrows, images, etc)
Build a validator for OCIF files
Build two-way converters between other canvas tools and OCIF (Obsidian Canvas, TLDraw, Excalidraw, etc)
If you're interested in helping out with any of these efforts, you can find all the necessary info on GitHub, join us in Discord, or join the next meeting on Tuesday, January 21 at noon ET.
A few special thanks for helping us get to this point:
Max Völkel for leading the charge on documenting and editing the spec.
Maikel van de Lisdonk for implementing OCIF in CodeFlowCanvas and organizing meeting logistics.
Aaron Franke for bringing insights from the glTF community.