Hi Jack,
Rez-2 is a total rewrite of Rez-1 and is much improved, especially in terms of the API. Rez-1 grew quickly, but Rez-2 has been engineered from the ground up. The 2.0 branch is usable right now, just follow the README to install it. The API is quite different, but I would say that from here on it will not change much. Even though it's a rewrite, conceptually it is much the same as Rez-1 so reading the user manual is still useful (although a lot of the finer details will have changed). I have not been able to replace the docs for Rez-2 yet, but they are coming (one day!) In the meantime feel free to contact me if you have any questions.
All the major components you need are there (it is very easy to create an environment via the API - have a look at the README). What is missing is managing environments across projects, providing overrides at the show/shot/etc level, that kind of thing. Having said that, I'm working on that as we speak, and intend to have something available within the next few weeks.
Rez-2 has only been tested a little on Osx and Windows and will certainly need work to get running on both. But, especially on Osx I don't think the work needed is significant. Rez-1 was working on osx for a time. Windows is worthy of note though. In Rez-2 you will see that there are various "shell" plugins, and an unfinished one for Windows. Rez is unique to a lot of management systems, in that it is not restricted to only altering environment variables to configure environments - it also allows you to create aliases, shell functions, source scripts and such (and that's why the shell plugins are there). However, if all you want to do is alter environment variables, you may not need to implement a Windows 'shell' plugin at all. The API will let you extract the environment dict from a resolved environment, so you can use that to configure the environment yourself (and this might be all you want to do if you're launching all tools from a GUI).
Rez-2 also has a GUI. It may not be geared exactly around what you want, however there are a lot of widgets there that have been written with reuse in mind. And yes the GUI contains a tool launcher. The main GUI provided is a "context manager". A "context" (short for ResolvedContext) is one of the most important objects in Rez-2. It encapsulates the result of a resolve - what was asked for (the 'request'), what packages the solver chose (the 'resolve'), and the "resolve graph", which shows you how the resolve occurred, or shows the cause(s) of conflict if it didn't (very useful for debugging). You can write a context to disk, and use it later on to recreate the same environment.
To get started I would suggest installing Rez from the 2.0 branch (the install procedure is drastically simpler than rez-1). Then I would create some rez packages so you can do some basic testing. There is a 'rez-bind' tool that can automatically create some packages for you (this feature is going to be improved over time). Try this:
```
]$ rez-bind platform
]$ rez-bind arch
]$ rez-bind os
]$ rez-bind python
then
]$ rez-env python
]$ rez-context
]$ rez-context -g
```
In Rez, the platform/arch/os are modelled as packages.
After that, you could try adding more packages, just by hand - you just need to create package.yamls and put everything in a package in the expected structure. Simple 3rd party python modules are a good place to start. Rez-1 had a "rez-egg-install" tool which does this for you (it downloaded the package from Pypi). This feature isn't in Rez-2 just yet but is definitely on the list.
I would also just check out all the command line tools available - rez cli is git-like, all the tools like "rez-env" are equivalent to "rez env" (the hyphenated form is just there for rez-1 backwards compatibility). They all have fairly extensive help via -h (although no man entries yet - would like to add this).
The code itself is well documented - you might want to look at resolved_context.py, it's what I might call the main entry point in the code (it contains the ResolvedContext class).
hth!
Allan