Description
Checklist
- I added a descriptive title
- I searched open requests and couldn't find a duplicate
What is the idea?
I noticed that conda-lock.yml
files are topologically sorted.
I was wondering why this was chosen over alphabetic sorting. It feels to me that alphabetically sorting the packages makes the format more stable compared to topological sorting. If a package version changes and it adds or removes a dependency this might change the order of packages in the format resulting in a large chance when viewing the diff.
Why is this needed?
It would be ideal that small changes of the lock file would also result in small changes in a diff/patch. Large changes cause reviews to skip reviewing lock-file changes while the small chance might be significant.
Since the dependencies of packages are also stored, the topological sorting of packages can relatively easily be reconstructed from the file itself (Mamba already does this, rattler doesn't need it).
What should happen?
Instead of sorting the packages in the file topologically we sort them by name, by platform, by version. I think this will result in the smallest possible diff when:
- A package changes version
- Adding or removing a package
Which I think are the most common causes of change.
Additional Context
Would love to hear your thoughts! :)