# Future of OpenRaster

10:00-12ish Mon 18 Apr, LGM 2016.
University of Westminster Harrow Campus.

## Introductions (emails optional)

* [AC] Andrew Chadwick, MyPaint developer, chair-kinda, <a.t.chadwick@gmail.com>, https://github.com/achadwick
* [JF] Joe Faleye, student photography and digital imaging technologies
* [MS] Michael Schumacher, GIMP 
* [VP] Ville Pätsi, GIMP
* [ØK] Øyvind Kolås, GEGL, @hodefoting  pippin@gimp.org
* [JP] Jehan Pagès, GIMP, jehan
* [JB] Joao S. Bueno, GIMP gwidion@gmail.com  github: https://github.com/jsbueno

## What is OpenRaster? [AC]

* Layered graphics interchange format
* "Alternative" to .PSD, at least as a lingua franca
* MyPaint's main, and only layered, file format
* Mention zip with "stack.xml" index

## Brief History [AC]

* [ØK] Pre-existing similar file formats
   - .KRA
   - GEGL's native XML
   - [ØK]'s http://codecave.org/oxide/
* Discussed in a BoF at the first LGM, in 2006
  - GIMP and Krita teams present
* Open specification, anyone can in theory edit the wiki & propose changes
   - via the CREATE mailing list (process changing to a more formall proccess - see bellow)
* A history of migration between wiki providers due to no-one really owning the format.
* Recent standardization of layer modes, group isolation semantics etc.

## What do we want to achieve in this meeting? [AC, all] / Future work [all]

* [AC] Agreement to start work on a github repo for the spec + app-specific exts
* [AC] Want this meeting to be a chance to start reworking some old, incomplete design decisions
* [AC] Revitalize the schema effort, if anyone's willing?
  - [all] nobody wants to do that right now...
* [MS] Need info on: how do users actually exchange layered data between programs?
* [MS] Lacking "we support ORA because..." stories from app developers.
* [ØK] Different levels of conformance: baseline, conformat apps can be certain that things will look right.
* [ØK] Use case: teaching, tutorials, JPG layer data?
* [MS] similar to the PDF concept of "Reduced Documents", but same PPI (?)
* [ØK] floating point buffers - EXR?
* [MS] Should OpenRaster files always look the same?
  - [AC] Yes! Or at least that should be the intent of the core spec.
* [JB] Need a formalized process for adding new features
* [JB] Python-like Enhancement Proposals? Can be rejected by the community, but still implemented by $APP.
  - [JB] we should check out PEP 0001 "what is a PEP" - an intro to process
* [MS, AC] Openly implementable, already implemented, not patent encumbered
* [MS] Process should *discourage* private extensions, to avoid the TIFF mess
  - [MS] Ask Liam Quin @ankh how to spec.
* [AC] Fallbacks idea
  - e.g https://gist.github.com/achadwick/819a5251042800a31e6c
  - this would be a move to the PNG src attribute of a <layer/> being the rasterized rendering of source data stored in other formats.
  - Suggested format only for now, but there are three key concepts for lifecycles: Source, Annotation, and Metadata
  - [AC] "Source" = file(s) used to make the layer .png
    - Editors which can't re-render these files SHOULD discourage the user from interfering
      with the pixel data in the layer's @src file, and MUST discard all sources if the
      layer @src is modified or painted over. With a big warning & the ability to undo.
    - [AC] Silly example: LaTeX sources + associated files
    - [JB] Example: darktable could have a "raw" file as src to a "png" layer (+ its own xml/whatever/textual information on the parameters it needs to create that png given the source)
  - [AC] "Annotation" = metadata that maps to pixels, in a file
    - [JB] example: DarkTable's image annotation format, XML (plus assiated RAW file)
    - [AC] example: MyPaint's strokemap
  - [AC] "Metadata" = metadata about the layer sources and .png as a whole
     - e.g. per layer licensing?
     - Metadata files SHOULD be preserved by editors if present when the layer was loaded
     - ... but dropped if the layer is cleared.
* [AC] Important: MIME-style content type field for layers 
* [AC] Less important: Standardize a default XML namespace for stack.xml 
*[AC] Standard ORA library and tools?  
* [JP, ØK, MS]
  - Acknowledge container-ness of format,
  - Allow opening of directory as ORA (alternative on-disk representation)? (not "serialization")

## Actions

* [AC] Create OpenRaster github
  - openraster/spec
  - current version of the spec
  - these notes should be published to the CREATE list
    - after discussion/hackery on this pad?
* [AC] sound out Boud at last that moving the spec documents would be OK
* [all] to hack on these minutes/discussion notes.