Hey everybody,
I’ve been tossing this idea around for a while and I think it’s time for me to get this going. I really want to develop a SIMPLE package distribution system that can work in most DCC apps as well as standalone. This is basically a way to getting tools rolled out to your teams and theoretically across studios. I would love to open this up to the community and have people pitch in with ideas or help out with the code.
I’ve brought this up in the slack channel and I’m usually there if you want to brainstorm. I left the description a bit more vague than necessary so we can flesh some of the subsystems together. But the idea is that this is a simple core system that pulls files down and manages dependencies, and then you can enhance it with your own packages for your own needs. Small modules that do things well. And then we can start having some shared community modules, like maya menus, perforce hooks into DCCs, logging libraries, crash reporters and all of the other stuff that noone really wants to write.
I’m planning on writing this in python because it’s the industry standard (yes, not C# or powershell), but that’s not to say that you couldn’t have a C# module that does something and gets delivered through Python. I’ve seen people use these kinds of systems even to distribute photoshop brushes or reference images, basically anything that you want to share with multiple coworkers that might not have access to a common p4, and the real trick is to get packages to be used cross studios, so we can stop the madness.
I’ve written about 3 different iterations of systems like this, and there are some out there that come close, but are a tad to complicated or unsupported (wpkg, rez) but I’m all for taking the best of those packages and bringing them into this. I’m sure the larger studios already have something like this in place and don’t really need this, but I want the packages to be usable by those devs too (python logging library should agnostic enough)
Requirements:
Small bootstrap script for installation (one or 2 files ideally)
Simple way of generating packages
Different ways of hosting packages (network drive, AWS, local drive)
General Loop:
Bootstrap script will download zipped packages and set them in local user machine, as well as their dependencies.
Environment setup package will run functions on each of the packages to add them to the user’s environment (this can be anything from adding it to sys.path, to any code that should be run during initialization of the package)
What is in scope:
Copying files locally
Running local commands on the user’s machine (move files around, run installers, etc)
Dependency management
Modules will have hooks for different parts of the deployment process (pre_deploy, post_install, run)
Multiple repository sources (general public, company wide, project specific, etc)
What is not in scope:
CMake or any more complex building systems (this could be done with a package, but not out of the box)
Let me know if you’d like to help design/contribute this and we can start a slack channel or a github depot for it.