DM-30756 involved stripping autograd from a sub-module in scarlet, which effectively required a whole new code base with only a few shared primitives. At this time the main scarlet code is seen as being more geared to joint reprocessing of images from ground, space, and spectral data, which requires GPU/TPUs for better performance, so Peter Melchior and his group are going to be moving scarlet "main" to pytorch/jax so that it can be run on GPUs.
The question now is where do we keep the CPU "lite" version of scarlet that we will use for the LSST Science Pipelines, and how do we structure it? An important constraint is that there should be a version that is available outside of the stack so that people outside of DM can still continue to run a CPU version of scarlet without having to install the entire stack.
I am proposing to update the stack scarlet with the current main from Peter's repo, including the modifications for the lite module, and maintain this as a separate fork going forward, no longer keeping it in sync with the soon to be GPU version that will be maintained outside of LSST. It can be installed using setup.py as the current "main" branch and we will still use the lsst-dev branch inside the stack. There is a lot of scarlet code that we don't use/need at all in the stack, so we could remove all of that to make it more lightweight and easier for other developers to maintain/understand. We probably want to rename the package to scarlet_lite so that there is less confusion and will allow people to have both the heavy and lite versions of scarlet installed at the same time. Does this seem reasonable, or does anyone have a better idea about how to make this split?