This section outlines the rationale behind Allzpark, to help you determine whether or not it is of use to you.
Allzpark (a.k.a. LaunchApp2) started as a 4-month commission for the Japanese Studio Anima. Time was divided into roughly these parts.
- Week 0-0 Tour of physical building, infrastructure and crew
- Week 1-2 Requirements gathering, an evaluation if current system
- Week 3-4 Evaluation of off-the-shelf options, e.g. Rez
- Week 5-6 Evaluation of studio, system and personnel resources
- Week 7-8 Integration and testing of fundamental infrastucture software, Ansible
- Week 9-10 Research and development of Rez to fit the criteria and initial prototype
- Week 11-12 Conversion of existing package repository
- Week 13-14 Implementation of graphical user interface, LaunchApp2
- Week 15-16 Refinement of features, including localisation
- Week 17-18 Final integration and training of staff
Allzpark was initially an internal project, never intended to be open sourced. As a result, the first 2 months of development are locked away behind an internal journal for the company (due to disclosure of sensitive information).
Luckily, it was around this time that Allzpark got approved for open source and when I was able to start sharing its development publicly, so that you are able to take part in the design decisions made, the why and how. This way, you're able to accurately determine whether a solution to a new problem takes the original requirements into consideration; something all too often lost in software projects.
When Hannah - working at a digital production company like Framestore or ILM - arrives at work in the morning, she typically types something like this into her console.
go gravity maya
What this does is put Hannah in the "context" of the
gravity project. The subsequent call to
maya then launches a given application, in this case Autodesk Maya. But which version? And why does it matter?
A closer look
To better understand what's happening here, let's take a closer look at what these commands do. Following the command
go gravity, a few things happen.
- The argument
gravityis correlated to a project (either on disk or database)
- The project is associated with metadata, detailing what software and versions are in use
- The associated software is loaded into command-line
At this point, the subsequent command
maya unambiguously refers to
maya-2015, which is how Framestore - and virtually every visual effects, feature animation, commercial and games facility - is able to tie a specific version of each set of software to a given project.
Why is this important? The answer lies in interoperability.
You see, whatever comes out of Hannah's department must interoperate with subsequent departments. Like an assembly line, the pace of the line remains consistent till the end, and every tool depends on the output of whatever came before it.
This holds true for individual applications, like Maya or Visual Studio, but also sub-components of applications - plug-ins.
arnold-4.12 as an example. This particular version needs to interoperate with
2015 2016 2017 2018 2019 maya |--------------------------| arnold-1 |-------| arnold-2 |-----------| arnold-3 |-----------| arnold-4 |----------|
In order to leverage
maya-2015 for a given project, your choice of
arnold is limited to those that support it, or vice versa.
interoperable slice maya |-----------------|------|---| arnold-1 |-------| | | arnold-2 |-----------| | | arnold-3 |------|------| arnold-4 |-|------|---| | |
This issue is compounded by the number of libraries and plug-ins you use for a given project. Consider
ilmbase and other off-the-shelf projects you may want to employ in a given project, and you can start to get some idea of how narrow
It is then further compounded by in-house development projects, such as your pipeline.
None of this would have been a problem, if you were able to say:
- We will ever only work on a single project at a time
- We know which versions to use
- We don't develop any new software ourselves
In which case you could simply install each of these applications and get to work. But more often than not, things change. And in order to facilitate this change, there needs to be a system in place to help manage the combinatorial complexity of applications, software, and projects.
Here are some of the studios using Rez today, along with some approximate numbers (sources linked).
|Anima||2019-||100||30 GB||199||2133||5 / day||-|
|Animal Logic||2018-||999||2 TB||1552||44939||20 / day||a|