JSON Canvas – Un formato de archivo abierto para datos de lienzo infinito

Recepción general

  • Muchos están entusiasmados con tener un formato abierto y simple para lienzos infinitos y elogian a Obsidian por publicarlo.
  • Otros sienten que la especificación es demasiado inmadura como para etiquetarse como “1.0” y la ven más como el formato interno de Obsidian que como un verdadero estándar comunitario todavía.

Diseño de la especificación: simplicidad vs completitud

  • La especificación es muy pequeña: nodos con tipo/posición/color, aristas con desde/hacia/color/etiqueta, además de unos pocos subtipos de nodo.
  • Algunos aprecian este minimalismo “similar a Markdown” como bueno para la adopción, la legibilidad y la extensibilidad.
  • Otros sostienen que está poco especificada y es prescriptiva: colores predefinidos, tipos de nodo fijos, semántica poco clara para campos como file, backgroundStyle y las coordenadas.

Interoperabilidad, extensibilidad y gobernanza

  • A muchos les gusta el objetivo de intercambio entre aplicaciones de lienzo, pero cuestionan hasta dónde puede llegar eso cuando las apps innovan principalmente en la semántica y el comportamiento de los nodos.
  • Sugerencias:
    • Especificación central básica más metadatos extensibles (similar a unist o al frontmatter de Markdown).
    • Soporte explícito para tipos de nodo personalizados, estilos y embebidos (URIs, tipos MIME, tipos de enlaces más ricos).
    • Campo de versión en el nivel superior; convenciones para extensiones.
  • Algunos critican lanzar un “formato abierto 1.0” sin colaboración previa con otras herramientas; otros lo ven como un punto de partida razonable que puede evolucionar mediante retroalimentación.

Detalles técnicos y piezas faltantes

  • Se pide:
    • Bounding box explícito / metadatos para la vista inicial y la incrustación.
    • Definición más clara de coordenadas, unidades, comportamiento del zoom y origen.
    • Orden de apilamiento definido (más tarde añadido: el orden del array = índice z).
    • Hijos de grupo explícitos en lugar de inferirlos por solapamiento geométrico.
    • Más estilos (grosor/estilo del trazo, formas, garabatos, transparencia, enrutamiento de aristas).
  • Debate sobre arrays frente a mapas para los nodos, campos obligatorios frente a opcionales, y si deberían existir “nodos punto”.

Elección del formato: JSON vs alternativas

  • La elección de JSON se ve como buena para herramientas, uso web y la filosofía de archivos de texto; algunos argumentan que SQLite o formatos binarios serían mejores para la integridad y el rendimiento, mientras que otros señalan que la portabilidad, la capacidad de diff y la simplicidad favorecen JSON.
  • Comparaciones con SVG, GraphML, Excalidraw, Argdown, HTML y YAML: varios sostienen que reutilizar o mapear estándares existentes sería más sabio; otros dicen que SVG/HTML son demasiado de bajo nivel o complejos para este modelo gráfico semántico.

UX de lienzo infinito

  • Sentimientos mixtos: algunos consideran potentes los lienzos infinitos; otros los encuentran abrumadores y poco alineados con sus modelos mentales.
  • Las sugerencias incluyen densidad de información a múltiples escalas, lienzos anidados y herramientas que operen sobre subconjuntos/slices del viewport en lugar de documentos completos.