It’s an application launcher, for when you need control over what software and which versions of software belong to a given project. It builds on the self-hosted package manager and environment management framework bleeding-rez, providing both a visual and textual interface for launching software in a reproducible way.
Also keep an eye on its integration with Avalon, the fully-featured and open source VFX and games pipeline, building on amongst other things Pyblish and Qt.py.
This will enable them to take advantage of the packages authored by TDs and developers like anyone else. You could make a shortcut/script on their desktops and use pythonw (on Windows) to avoid typing and the additional console window.
For TDs, authoring packages requires access to the rez executable, for which you’ll want each machine equipped with Python and an install of pip install bleeding-rez such that they can call…
cd my_package
rez build --install
# building..
Once you’re comfortable with this approach, but want to manage multiple versions of Allzpark, then I would recommend each machine (including artists) be equipped with Python and Rez, and for Allzpark be a Rez package.
Thanks for your reply. So if I put pthon and Allzpark at a shared netowrk location. That helps the artist install allzpark, what about like to control all artist have the same profile or when TD update some package of a profile? I think I need to get my hands on it to understand it better.
Yes, those things are explained in the Getting Started tutorial on the site, but in a nutshell - packages are all shared similar to how Python packages are shared. Where Python uses a PYTHONPATH to look for packages, Allzpark (i.e. Rez) uses REZ_PACKAGES_PATH which contain directories with Rez packages.
So you can store your packages anywhere, and add them to the path prior to launching Allzpark.
so how does it work when it comes to different profiles uses different package? Does the package needs to be pre-installed from user ?
For example of my Q:
Say Alita uses maya2018 and kingkong profile use maya 2019. Does the user need to have both maya 2018 and 2019 installed on their machine (on window OS) ? or there’s some deploy mechanism that the user don’t need to install anything…what comes with the profile will load the correct version of the software for them ?
In an ideal world, each Rez package is self-contained. They each contain both the metadata like version and requirements to other packages, and the payload - like the whole Maya install.
That’s how it works for the vast majority of packages, and is the recommended workflow for Rez in general. However, because Maya is quite large, what most people do is let Maya reside locally, as a regular install, and have the package reference that install. The advantage is that you save space, network traffic and ultimately time spent loading Maya off a network; at the expense of having to install Maya locally on each machine, and of having this package not be self-contained. Not being self-contained means you can technically resolve a profile using this Maya package, but whether it works depends on the local environment.
So ideally, you would want every package self-contained - and some do self-contain even Maya and even larger packages (depending on how much space you have, how quick your network is and how complicated it is to deploy software like Maya locally, using e.g. Ansible/Chef/Puppet). But if you can’t (like most) then you would install Maya as-per usual, and make a package similar to the one you’ll find in the Allzpark Demo
The profiles for each project is independent of either option, and you could change your mind at any point without affecting the profile (instead affecting network traffic etc like mentioned) and would look something like…
alita/package.py
name = "alita"
requires = [
"~maya-2018",
]
kingkong/package.py
name = "kingkong"
requires = [
"~maya-2019",
]
If you do decide to self-contain Maya (and other DCC), then you could also employ the Allzpark localisation feature (see Localisation on landing page) to synchronise your networked Maya package with a local copy for local performance. Best of both worlds.
Thanks Marcuso, so localistion feature will try to synchronise the networked package with a local copy? if we updated the package it will sync to it and once it’s sync then it will just run locally ?
Then it would find the local copy, due to being ahead of the networked version on your PYTHONPATH. Allzpark localisation works just like this, with the addition that Rez packages are versioned. So when you release a new version of any package, any user of said package would be using the latest up to date version (as expected), but would need to localise again if need be.