Problem
We are having only one versioning schema at this moment. The version which is kepth in a file name or db document is either workfile synced or saved on next available. This will work usually in most cases and for most of produtions. There are still productions which are working on client review version sync - it means they want to keep as few versions as possible and each version refers to reviewed version with some given feedback from client or internal loop.
Now you might think this is still doable with the OpenPype, the only thing is to not version up workfile, but that would work only in case users would iterate user-versions for them selves with some sort of local rendering or render farm submitters - and not by using openpype publisher as a way of submitting (because they want to use the power of validators).
Well you get the idea what is the problem. Another thing is that we are requiring workfile instance to be part of publishing context as active as it is usually required by integrate plugin as it needs to use the source path in version data.
Solution idea
My idea is to use versioning and snapshots. Snapshots are only generated short hash string added as suffix to workfile after it published. As for example after we had published from nuke just gizmo
family instance, we would save new snapshot of workfile as workfilename_v002_oxw2o.nk
and this way we would keep the version of file untouched. The version would increase on workfile only if review toggle would be activated on render
family and its derivates (.local, .farm). So you can imagine this would need some sort of rules to be used on some Global Scene Version Up plugin
activated only in case of host, taskType, family would match.
Known caveat to be solve would be what if we want to keep version synced some families to workfile and those families are not part of client review cycle - like for example Nuke’s prerender
families. Yes those are challenges to be solved. Perhaps we could allow version to have dashed or dotted separated minor versions like workfilename_v001-02_oze6ze.nk
where template would be something like {name}_v{version}-{minor}_{snapshot}.{ext}
Has been discussed here Settings for Nuke IncrementScriptVersion by kalisp · Pull Request #2039 · ynput/OpenPype · GitHub