mottosso / bleeding-rez

Rez - Reproducible software environments for Windows, Linux and MacOS
GNU Lesser General Public License v3.0
72 stars 10 forks source link

Alternative to Variants #61

Open mottosso opened 5 years ago

mottosso commented 5 years ago

Goal

Avoid having to nuke or batch-update your entire repository on changes to your implicit request, such as platform_map = {"os": { r"windows-10(.*)": r"windows-10"}}.

Motivation

There's nothing worse than updating your OS only to find that none of your packages containing the version of your OS as a variant aren't working anymore. This is a silent but deadly design flaw of Rez, forcing the new user into making a decision they cannot possibly hope to understand without significant experience with Variants and its pitfalls. Once a repository has been authored, it is designed to be immutable, thus it cannot be fixed once it becomes a problem, but must be fixed beforehand.

Issues

Implementation

This can be addressed from one of two points.

Fixing the user involves writing documentation and making it apparent, especially to the beginner, what needs to happen prior to designing your package repository. Given the complex nature of the issue itself (e.g. only occurring during an update to the OS, very hard to reproduce and debug, and rarely an issue), the resulting complexity of the necessary documentation would incur a cost to user experience and ultimately adoption.

Fixing Rez is another alternative, although it's not clear exactly how. Consider the issue Variants try to solve, and provide an alternative. Something capable of living side-by-side with Variants, but doesn't suffer from the aforementioned issue.

Requirements