Digital asset management for an open movie project

Digital asset management for an open movie project

Learn more about using Subversion, Trac, and Resource Space to manage digital assets.

Digital asset management for an open movie project
Image by : 

opensource.com

x

Get the newsletter

Join the 85,000 open source advocates who receive our giveaway alerts and article roundups.

When it comes to frontend creative software for multimedia projects, Blender and Audacity tend to get the most attention, mainly because they are easy for beginners to use. But when you use them to produce a large multimedia project, like our animated open movie project Lunatics!, you quickly run into problems with the backend infrastructure.

You might not even realize at first that your problem is rooted in disorganization. You find yourself procrastinating and/or working in circles because you can't keep your project organized in your head. You need software to help you.

One of our goals has been to solve this problem using open source software, and thus remove obstacles to doing longer-format movies on the non-existent budget of a free-culture film project.

Digital asset management

The first and most obvious problem is called digital asset management (DAM), and a system to solve that problem is called a "digital asset management system" (DAMS). An "asset" is a component of a multimedia project, be it an image, sound clip, movie, 3D model, or whatever. It's generally synonymous with "file." Keeping one asset to a file is a good rule of thumb, but it is possible to store multiple assets in a file or for a single asset to have dependent assets, such that it spans several files.

dams-dams_roles-pd-lunatics.tv-m.png

Roles of DAMS in managing a multimedia project

A DAMS serves two main roles on a multimedia project: allowing you to find and preview assets and allowing you to identify connections or dependencies between them.
Lunatics! Project, lunatics.tv, CC BY-SA 4.0

A DAMS will typically provide something like a search interface combined with automatically collected metadata and user-assisted tagging. So, instead of having to remember where you put the file you need, you can find it by remembering things about it, such as when you created it, what part of the project it connects to, what's included in it, and so forth.

A good DAMS for 3D assets generally will also support associations between assets, including dependencies. For example, a 3D model asset may incorporate linked 3D models, textures, or other components. A really good system can discover these automatically by examining the links inside the asset file.

Version control for multimedia

Most software projects simply use their version control system (VCS) as a DAMS. The source tree provides a hierarchical scheme for locating files, which is entirely adequate for the rigid and static structure of program files that are intended to work together like parts of a machine.

dams-vcs_roles-pd-lunatics.tv-m.png

Version control

The purpose of version control is to manage changes to individual assets over the course of the production.
Lunatics! Project, lunatics.tv, CC BY-SA 4.0

Readers may be in familiar territory with VCS; you've likely heard of Subversion, Git, Bazaar, and Mercurial. However, these tools are terrible at handling multimedia assets. VCS documentation usually talks about this as if it were an intrinsic problem of multimedia files, but that's loser talk. The reality is that these applications simply aren't designed to cope with multimedia, so they fail badly at it.

Explaining exactly why that is (and how to really fix it) is a big enough subject to warrant a separate article, so, let's just talk about the consequences of it:

  1. You CANNOT merge multimedia files automatically
  2. That makes concurrent "merge-based" version control IMPOSSIBLE
  3. Therefore, all version control for multimedia should be on a "locking" basis

And with that, about 90% of the functionality of Subversion, Git, Bazaar, and Mercurial went right out the window and smashed on the pavement. Thanks anyway, guys!

  1. Multimedia files are HUGE
  2. Project structure is FLUID and LOOSELY DEFINED
  3. Intermediates can be EXPENSIVE

Typical VCSes simply have not been designed to cope with these facts. They all assume filesystem-type hierarchies of files are being stored, and most do not accommodate partial checkouts (or at least not easily; Subversion does do this better than the others). The relational, tagged organization of a DAMS is better suited to the fluidity of multimedia collections, and most have been designed with large file sizes in mind.

Searching for another option

We surveyed many different software packages, most of them not originally designed for our application. Some are used by other projects but don't seem optimal for ours. Others simply have issues with maintenance; they're either old and succumbing to bitrot (falling out of sync with current software) or still too immature to be used on an active project.

Some of the roads we didn't take:

  • Blender-Aid is a Blender-refactoring tool that assumes you are using Subversion for the VCS. It was developed for use on the Blender Foundation's Sintel project, but unfortunately was not maintained after that project finished. When we tested it, we had to patch the source to get it to work with current Blender files (and that was several updates back). We submitted our patch, but no one was maintaining the project to accept it.
  • Git is, of course, very popular with programmers. I'm often asked why we aren't on the Git bandwagon. It would be a small improvement over Subversion, but it's mostly a sideways move, making it not worth the trouble of migration.
  • Git-LFS is an extension to Git that improves performance with large files.
  • SparkleShare is a folder-sharing tool, based on Git, that's simple enough for artists without any VCS experience. It's used by the Tube project (Wires for Empathy).
  • Boar can be seen as either a VCS or a backup system. It focuses on folder replication and easy handling of large multimedia files, although it doesn't help much with search or organization.
  • Peragro goes to the other extreme, handling lots of small Blender assets well; in particular, it can look inside of Blender files to find the individual objects they contain. It's still very much in development, though.
  • MediaWiki allows assets to be stored as "files" or "images," and we did use this approach for a short time during our pre-production work, but it's difficult to manage when asset storage is its primary use.

What we're using now

We are currently using a combination of Subversion, Trac, and Resource Space.

Subversion is a VCS to manage the Blender "source code" for our project. It is familiar and somewhat usable, although we're clearly overloading it. The Trac application provides a simple web-based view of the repository but doesn't preview multimedia content.

dams-subversion-pd-lunatics.tv-m.png

Screen capture of Subversion as viewed through Trac

The Subversion (and Trac) web interface allows easy browsing of the source tree, but not much search or preview help.
Lunatics! Project, lunatics.tv, CC BY-SA 4.0

Resource Space is a DAMS with an excellent search and preview interface. Unfortunately, these programs don't really work together at all, so we must manually move files from one to the other when needed.

dams-resource_space-pd-lunatics.tv-m.png

Resource Space web interface (a search query for 'characters')

Resource Space provides excellent search and preview, but not much version control or dependency checking.
Lunatics! Project, lunatics.tv, CC BY-SA 4.0

Trying a new TACTIC

In 2012, the Blender Foundation started a new project, called Gooseberry, which ostensibly had similar goals to ours, including producing a feature-length film with Blender. However, that has morphed into a series of shorts, and its solution for a studio backend was to go with a software-as-a-service platform called Blender Cloud. This was completely the opposite of what we wanted.

We looked into what options they had considered prior to that project and discovered TACTIC. TACTIC seems ideal, providing DAMS, VCS, and additional project management features, and it's licensed under the Eclipse Public License. Our biggest concern was that we weren't sure why Blender Foundation had opted against it. Possibly it was not under the EPL at that time (the package was relicensed about the same time as the Gooseberry project started) or simply too coupled to Maya (which it was originally developed to work with). Considering that Blender Foundation opted to build new, it may simply be a case of "not invented here."

dams-tactic_interface.png

TACTIC asset view

TACTIC provides both DAMS and VCS features as well as project management features not discussed here.
Southpaw Technology, Eclipse Public License

However, as our intention is to invent as little as possible, TACTIC seems almost too good to be true. Our main infrastructure project for 2018 is to set up and test this system on our pilot project.

About the author

Picture of Terry Hancock
Terry Hancock - Terry Hancock is currently independently producing and directing the pilot for"Lunatics!", a free-culture animated science-fiction series about the first settlers on the Moon. He is the author of the book "Achieving Impossible Things" (2009), about free-culture and free-software production, and has written for online and print magazines on a wide range of open...