Hey @Kirtai,
Appreciate the conversation starter.
I am fine discussing these things early as it provide more insight I can use to prepare for LGM.
In general, my understanding is that ORA was created as a general replacement for PSD, that was designed as a libre format, after adobe created licensing /
maintainability issues with PSD:
“The Adobe Photoshop PSD file format was widely used as a cross-application file format for layered images. Adobe allowed this by releasing the format’s specifications publicly. In 2006 Adobe changed this license to only grant access to and use of the specifications and documentation “for the purposes of internally developing Developer Programs in connection with Adobe Software products and incorporating portions or all of the Sample Code into Developer Programs.”[4] In response to these restrictions, the OpenRaster format was proposed” (OpenRaster - Wikipedia)
While it is fine that mypaint chooses to use ORA as a native file format, in general I believe the goal should be maximum compatibility across raster editors,
both closed and open source.
In my first iteration, I have been trying to go over features of Krita, mypaint, gimp, Photoshop, and Procreate to determine the union of all features and consider the most practical ones to propose for the standard. Here are some initial things I noted just while looking at the open source programs:
Non destructive layer masks: Things like gimp’s opacity mask and Krita’s Transform mask, are very important for correctly rendering the intended image.
Blend Modes: While ORA currently supports a good amount of ‘named’ blend modes proposed by the w3c spec, there are a number of different modes available in gimp and Krita. There are two possible solutions; either the standardized list of named modes could be expanded, or the blend mode support could be expanded by allowing embedding of the source / dest pixel mixing formula into the ORA standard (using LUA or some other scripting lang?)
Composite modes: Some of Gimp’s composite modes, like “Clip to Layer” seem to work differently than the porter-duff composite modes represented in ORA. These modes actually composite the alpha channel too instead of just overlaying it. We need to decide if we would like to support this in general. (either additional porter-duff modes, or non porter-duff modes)
Vector Layers: This is a big one. Lot’s of use cases for a layered image interchange format involve some use of text of general vector layers. (Despite the fact that it ruins the format name, haha) I don’t at all expect a program like MyPaint to ever implement general support for vector layers (I would not want these features anyway - MyPaint is supposed to be a simpler painting program). For maximum compatibility, one possibility would be to provide both a vector and raster layer when writing ORA files, so that opening them with a program like MyPaint would still be able to render the whole image, even if the vector information was lost.
Composite + Blend modes: In some cases we want to both clip to the underlying layer, and also multiply for example. This should be fairly straightforward to support.
I am still going to need to investigate some of the closed-source programs to find even more quirky things to support. I will get back to you once I have some updated news about that. In the meantime I am welcome to some early discussion / feedback on the other points here. :3