Digital asset management with ResourceSpace

On the DAM


Organize all your digital collections from a single user interface.

By Nathan Willis

gary718, 123RF

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.

Figure 1: While installing ResourceSpace, the setup system performs sanity checking, includes detailed built-in help, and allows extensive customization.

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.

Figure 2: On the ResourceSpace start page, themes, collections, help, and search are highlighted prominently. Along the bottom is the collection pane, which serves as a running workspace during your browsing or searching session.

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).

Figure 3: ResourceSpace automatically gathers metadata and inserts it into the database and encourages you to add details during the upload process.

Figure 4: ResourceSpace lets you download various image sizes and displays file metadata and links to related images.

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.

Search Me!

The real power of ResourceSpace is its search capabilities, starting with a MySQL-backed search engine that understands photo metadata. The underpowered searching of most desktop photo managers offers little more than timestamps, one-to-five "star" ratings, and an unkempt array of tags that capture neither meaning nor context.

In contrast, ResourceSpace makes user-friendly searching its priority. The basic search box is available on every screen, and the advanced search form lets you search on every field in the database, by field (Figure 5). That means you can search for photos of your uncle Rico without all of your photos from Puerto Rico clogging up the results - even if your uncle Rico lives in San Juan.

Figure 5: Search is the central feature of ResourceSpace. From the advanced search page, you can search on any of dozens of metadata fields.

ResourceSpace allows you to sort your search results in a variety of ways, including by date, by number of downloads, and by color, but it also keeps track of the click-through rate of every image that turns up in search results, so that it can continually adjust the "relevance" sorting order. "Relevance" thus learns which images are most likely to be selected based on the search terms and can rank them at the top of your search results.

ResourceSpace builds on its underlying search power with the collections framework. As you search or browse images, a filmstrip-like frame remains open at the bottom of the window that tracks your current collection. By default, you have one named "My Collections" (Figure 6), but you can add as many as you want. When you find an image that you are interested in, just click on the filmstrip icon to add it to the current collection. Also, you can add saved searches to a collection to aid in finding images in the future.

Figure 6: Collections are a free-form way of organizing images and other resources. You can use collections as temporary search result spaces, deleting them when you are finished, or you can maintain them as permanent galleries and share them with other users.

Each collection is persistent; ResourceSpace will not delete it unless you ask it to. The collections can serve as photo albums, workspaces for ongoing projects, or galleries. On a multi-user system, you can share collections with team members with read/write or read-only permissions, and you can make them entirely public. Additionally, collections can have keyword metadata to be indexed by ResourceSpace's search engine, and you can tag all items in a collection as related, so they will be accessible in a related images search. Finally, for offline usage, ResourceSpace can automatically generate proof sheets of collections in almost any layout and paper-size combination.

Customization

As nice as ResourceSpace is, it is even nicer that the entire system is easily customized. As free software, of course, all of the source code is available, and many changes are easy to make with help from the official documentation [4]. Additionally, those who don't want to dig into the PHP themselves will find many options available from the administration interface of ResourceSpace itself.

The Manage Content module (accessible to administrators from Team Center) allows you to customize virtually all of the display text used throughout the interface. The Manage Related Keywords module lets you relate keywords to one another that the database might not otherwise connect. The Manage Field Options module lets you alter or extend the options presented for file metadata, such as adding or removing countries, changing the built-in rating scale from1-5 to 1-10, or changing the image source options (Figure 7).

Figure 7: Customizing the metadata fields allows you to tweak your own installation and keep your collection current by adding new options as new standards emerge.

For example, the default Source field has just three alternatives: digital photo, scanned negative, and scanned print. To add a new category for computer-generated images, click Edit, type Computer Generated in the Add keyword box, and click the Create button. From the same page, you can also edit the existing fields, and any changes you make will be applied automatically to all matching resources.

Administrators can make more substantial changes to the metadata fields by going to the System Setup page. From there, you can mark fields as required to force users to fill them in when uploading files, select which fields are enabled for simple and advanced searches, and add custom help text.

Also, you can add new fields entirely. Out of the box, ResourceSpace only supports a subset of the defined Exif and IPTC metadata fields. To add a new field, click on the New Field link under the resource type you want to edit and give the new field a name. Immediately, it will appear in the list of available fields, and you can edit it like any other.

For example, ResourceSpace includes a Country field by default, but not a City field. To add a City field, visit System Setup, navigate to the Photo resource type, click on New Field, name it City, and click Save. Now edit the options for the City field that ResourceSpace will present to users - making it a free text entry box or a drop-down list of options. Also, you can tell ResourceSpace to map any incoming IPTC headers to the new field by filling out the Iptc equiv option. According to ResourceSpace documentation, the official IPTC header for City is 2#090. Put 2#090 in the Iptc equiv box and click Save; subsequent photo imports will automatically pull city information from the IPTC headers and insert it into the database.

Teams and Advanced Usage

Importing files, capturing metadata, and enabling quality searches might be sufficient for many home photo and video collectors, but ResourceSpace can do more, particularly when it comes to enabling teams to collaborate. A business or project with multiple users and multiple sites might find ResourceSpace an invaluable aid for tracking digital assets and collecting subsets of those assets for specific projects.

ResourceSpace has the special feature Research Requests, written specifically for team usage (Figure 8). A team member can fill out a research request describing a job assignment or opportunity that needs image selections. Other team members can search and save results to the research request just as they would to a personal collection, and ResourceSpace can keep team members notified of the progress via email.

Figure 8: A Research Request lets someone with specialized knowledge create a search task that casual users can work on.

Furthermore, administrators of multi-user systems can take advantage of ResourceSpace user levels to assign specific permissions to accounts that, for example, allow only photographers to upload new images to the system and edit metadata but graphic designers to create research requests. ResourceSpace also can be configured to support multiple user groups, each of which has access to its own private content library, but not to each others. Although much of what is discussed above pertains to local access, ResourceSpace also supports email for user notification, resource sharing, and other communications tasks.

For administrators, ResourceSpace provides user- and resource-oriented statistics and report generation, watermarking, and other features important to enterprise usage. The interface itself can be customized with a flexible plugin system. Plugins already exist to provide RSS export, a SOAP API, web gallery export, and LDAP authentication, among other features.

Moving Forward

Original author Dan Huby is still the maintainer of ResourceSpace, which he works on nearly full time. Oxfam and other users periodically contract with Huby to add additional features.

In addition to enterprise customers, though, Huby says that more and more open source developers are starting to join the project - a change he welcomes. Huby credits the open source community with pushing the translation and internationalization effort in particular, but plugins and patches are increasing in number as well.

Now that the number of third-party contributions is increasing, Huby notes that the project is expanding from a small, informal team into a full-fledged open source effort that will require bug tracking and other infrastructure. The ResourceSpace code already is accessible through Subversion.

Huby cannot predict exactly what changes the future holds, although he says that reworking the interface is high on the list. The current release ships with three user interface themes, all of which can be customized through CSS, but which follow essentially the same layout and style guidelines. Huby wants to incorporate the Smarty templating engine into a future release to give users the power to customize their ResourceSpace experience thoroughly.

Meanwhile, if your business or project has trouble coordinating digital assets, particularly photos and videos, you might find that ResourceSpace is exactly what you need. Alternatively, if you simply have more image content than a desktop photo browser can handle, or you are tired of weeding through clouds of unstructured tags to find that one image you really need, then it might be time to consider the more powerful options provided by ResourceSpace.

INFO
[1] ResourceSpace: http://www.resourcespace.org/
[2] Oxfam International: http://www.oxfam.org/
[3] Wikipedia on IPTC:http://en.wikipedia.org/wiki/IPTC_Information_Interchange_Model
[4] ResourceSpace wiki: http://rswiki.montala.net/index.php/Main_Page