Krita/Version Control

From KDE Community Wiki

Better is the enemy of good. Hence the need to store the good to try the better.

Need

Often when creating or manipulating an image comes a time when the result is quiet satisfying and the artist want to save the current state of his work, and be able to keep experimenting and still be able to go back to a previous state.

Examples

This is based on how I (Cyrille) work. Other experiences are needed to get a better "picture", especially experience of people who are more than amateur.

Photography

When a photograph works to improve a picture he took with a camera, he needs to try the effect of different filters and different configuration for each filter. And he needs an easy way to compare the different results.

Drafting

When an artist is drawing an object, the first steps involves drawing a coarse version of the object, and then step after step adds details. This part is done by using different layers. Then comes the fine-tuning of the drawing, which involves trying different strokes until perfection is reached.

How it is done currently

This section describes the current possible solutions, and their shortcoming.

Undo stack

The Undo stack is the most basic version control of Krita, and image manipulation. The biggest problem is that it doesn't allow branching, i.e. whenever the user cancel a change, if he starts something new, then information about the operation he has canceled is lost forever.

Duplicating

The layer stack offers the possibility to "duplicate" a layer or a group of layer. Comparison is done by hidding and showing alternatively the different groups. Or for a sketch, affecting different visibility to each versions allows to make a comparison.

Saving to different files

It's possible to save the image to different files, but then comparison needs to have different instances of Krita.

General problems

The biggest problems are that there is no easy way to do comparison or merge two versions to take the best.

How it could be improved

This section is intented to discuss solutions that might or might not be implemented in distant future (or very far future).

History paintop

When painting, entries in the Undo stack are created only when the mouse button is released or when the stilus is raised, and when canceling, it's impossible to cancel only for a small part of the drawing. The history paintop is intended to draw on the canvas using the image as it was before the last image, thus allowing to keep part of the drawing.

Version control integration in layer stack