Sharing environments and resources between solutions
Proposal for a new strategy for sharing environments and resources between solutions.
We could completely drop the parent solution approach this way.
When installing an environment, we generate a hash from the environment file content (maybe with some preprocessing to catch same environments where the dependencies are listed in a different order). The hash is used to catch if an environment that a solution needs already exists and then it can be reused. That means that we do not need the child parent relation. It would also fix redundant solutions in between catalogs and fix the reference issue between different catalogs we have been experiencing.
Additionally, we can add shared resources as a feature - a solution can install / copy stuff into a shared resource with a name / id. Others can then access that without reinstalling / downloading if the resource already exists. This would enable for example multiple Blender solutions running on the same Blender installation. That's better than what we planned where one solution was supposed to gain access to the application / data / cache space of a different solution, because it again avoid child parent relationships.
Thank you @ctrue for the discussion regarding this topic.