Since the retouch and liquify modules have been merged in darktable, I have not used Photoshop anymore to do my skin retouches, since it covers most of my needs. There is still a thing I miss from Photoshop: its painting abilities, to do advanced skin retouch (airbrushed dodging and burning) and specific colour edits without all the burden of sliders and parameters tuning.
Layered painting options give a lot more freedom and fill the gap between painting and photography. (example of stuff I did with darktable + PS). Also, I enjoy this kind of retouching much more than the sliders pushing process in dt (it’s more organic).
I knew about Krita for a long time but just tested it recently. Its painting abilities are on-par with those of Photoshop or better (many options to create your own brushes + efficient UI), and far superior to those of Gimp (witness the settings layers, OCIO colour management, smart patch tool and the no-nonsense UI), but you also get a fully scene-linear 32 bits workflow.
I’m considering wiring Krita and darktable in a seamless way, kind of the same thing you would get with Photoshop and Lightroom, using Smart Objects and such.
My preliminary idea would be to add a Krita module in the darktable pipeline, before the non-linear adjustments, like that:
RAW → WB + demosaicing + denosing → input colour profile → global colour adjustments → [Krita] → filmic/base curve → output colour profile
The darktable Krita module would send its input to the base layer of a new Krita project (32 bits float linear REC2020), open Krita, allow you to add layers and paint. Once you save the Krita file, its output would be re-injected in darktable pipeline and allow you to finish the tone-mapping and stuff, export to your usual media and be done.
When you change parameters in previous modules in dt, the base layer of the Krita file will be updated accordingly (with the input of the Krita module), then Krita will be run in CLI or something to process the stack of layers, then the updated output will be sent to darktable pipe again.
What do you think about the general idea/feature and the implementation method ?