On the DAM

As your document collection grows, it becomes more and more difficult to find what you are looking for – doubly so for photo and video media, for which full-text searching is impossible. As big as this headache can be for individuals, however, it is far worse for organizations. For businesses of any size, as well as open source project teams, Digital Asset Management (DAM) problems can get out of control if the right tools aren't available.

Fortunately, the right tools are out there. ResourceSpace [1], a BSD-licensed application originally created for the global charity Oxfam International [2], does for photos, video, and other digital documents what a distributed version control system does for source code. A ResourceSpace installation maintains a central digital collection of assets accessible to users and teams anywhere around the globe – with an emphasis on user-friendly searching, speed, and as little administrative work as possible.

Background

Oxfam is a UK-based confederation of 13 humanitarian non-profit organizations; it has permanent offices in six cities on three continents and participates in campaigns, advocacy, and emergency relief all over the world. Logistically, its needs could scarcely be more complicated. The different offices need to collaborate on campaigns, share photos from different sources, and maintain a massive collective of existing resources.

For years, Oxfam used a clunky in-house system built with Lotus Notes to organize its collection of documents that are accessed by staff and clients across these varied locations, but by 2005, it was deemed too slow and difficult and had to be replaced. The proprietary commercial choices – such as Extensis and ACDSee – were simply more expensive than an organization of Oxfam's size could afford. The group decided to write its own distributed DAM system instead, based on the LAMP stack: Linux, Apache, MySQL, and PHP. Contractors Dan Huby and Neale Hall got the job, and ResourceSpace is the result.

Since it was released to the public in 2006, ResourceSpace has undergone significant revisions and enhancements. The original focus was on photographs, but ResourceSpace now can handle video, audio, and other types of electronic files as well. Additionally, it is fully internationalized, supporting per-user language choice, and can be extended easily to support additional translations. Besides being in daily use at Oxfam, ResourceSpace is also used by a wide range of other users, groups, and individuals.

Get It

To get ResourceSpace, download it from the project's website; installation instructions are available on the wiki. ResourceSpace is a standard PHP application and requires very little customization. The only settings you might need to adjust are resource limits in PHP.INI. ResourceSpace recommends that memory_limit be set to 200MB or higher and that post_max_size and upload_max_filesize be set to 100MB or more to deal properly with large media files.

The application also relies on the GD and ExifTool libraries to handle thumbnail creation and metadata parsing, respectively, so make sure you have the latest of both installed on your server. If you plan to run a ResourceSpace server on the public web, you can use HTTPS to secure connections, but this is not mandatory. ResourceSpace will also run happily on a local machine if you plan to use it only for managing your own media files.

The installation itself is straightforward. Once you have met all of the correct dependencies, simply download the latest release with Subversion and place it in /var/www/resourcespace. Next, create an empty directory at /var/www/resourcespace/filestore in which the application can store your media content (make sure that Apache has write permission to this directory). Then, create an empty MySQL database for the application with mysql -u root -e "create database resourcespace".

Finally, visit the new installation in your web browser at http://www.yourserver.com/resourcespace. The ResourceSpace installation program will check that everything is set up correctly (Figure 1) and that it can access the database server and locate helper libraries like GD and ExifTool. Then, it will populate its internal database and create an administrator account.

To get started with ResourceSpace, you will need to create user accounts for everyone who will access the system; if it is just you, you are done. With the administrator account, you can perform every task. But if you create additional users, take a look at the ResourceSpace manual to make sure you understand the difference between the various user levels. "Regular Users" can search for and download content, but you must mark a user as an administrator to permit him or her to upload content.

Further nuances allow you to create teams and grant read-only permission to outsiders. For basic usage, however, the key distinction is which users can add content, because adding content is the first task.

First Things First: Add Your Content

Visit the ResourceSpace start page in your browser (Figure 2) and log in with your account (you can stay logged in to the administrator account if you want, but the usual caveats about accidentally damaging the system apply). The homepage displays three prominent buttons (Themes, My Collections, and Help & Advice) and the search box. Themes are public groups of images and resources, which are most useful in a team environment. My Collections are personal stacks of images and saved searches that you can build and destroy on the fly. Help & Advice is the built-in help system, and the search box lets you perform basic content searches on description, keyword, date, and file type.

To add images (or other content), click on Team Center in the top menu, then select Manage Resources. As you can see, ResourceSpace gives you several options for adding content – including uploading single files, uploading files in batches, and fetching from an FTP server. Next select Add Single Resource, then, in the subsequent drop-down menu, select the appropriate content type (this example uses photos) and click Create.

This next step illustrates the difference between ResourceSpace and a traditional iPhoto-like desktop photo manager. The Upload a file button is obvious, but the bulk of the page is dominated by resource metadata fields. ResourceSpace's emphasis on user-friendly search places significant emphasis on metadata and does everything it can to encourage you to add metadata when it is easiest and most appropriate (i.e., when you first add the image). Click on Upload a file and select the photo you want to add.

When ResourceSpace uploads the image, it automatically extracts as much metadata as it can from the file (Figure 3), including camera-generated image data from Exif headers (e.g., size, date, and camera model) for most image types. If Extensible Metadata Platform (XMP) metadata are available, such as the IPTC headers used by media organizations [3], ResourceSpace will grab that as well. Before completing the download, you can add additional metadata, such as title, keywords, a full caption, location information, image source type, and named people that appear in the image – all of these fields will be searchable, separately or collectively. Clicking Save takes you to the resource page for the new image, complete with a summary of the metadata entered, download links for the original file, several sizes of automatically generated thumbnails, and links to search for similar or related images (Figure 4).

If this seems like a lot just to add one image, it is. The vast majority of the time, you will batch import images rather than upload them one at a time. Fortunately, ResourceSpace makes it easy to duplicate the shared metadata between a batch of related images.

Because ResourceSpace was originally built to function as a centralized server for multiple users, by default it copies uploaded files into its own "filestore" system. However, if you are not using the distributed features – perhaps just managing your own image collection – you probably do not want to devote the disk space to duplicate copies of files. Luckily, ResourceSpace has an option to maintain an external repository of images, too, via the staticsync.php script.

Staticsync can be run as a cron job rather than executed from within a web browser session. Just configure the settings to point to the location of your image repository, mark any folders you want excluded from synchronization, and set up the cron job to run as often as you like. ResourceSpace documentation explains more detailed options, such as automatically created themes and specialized metadata mappings.

As with full imports, Staticsync will pull all of the metadata it can find from the synchronized images and import them into its database. As with regular imports, you will have more luck finding the photos you want if you remember to take a look and add additional information yourself.

The Elasticsearch full-text search engine quickly finds expressions even in huge text collections. With a few tricks, you can even locate photos that have been shot in the vicinity of a reference image.