While ResourceSpace is fairly easy for those with moderate skills to install and use, *developing* for a DAM system like ResourceSpace requires a very broad range of skills and experience. I'll try to outline some of the skill sets required for DAM development:
Graphics/File Formats
One of my first modifications of ResourceSpace involved researching the INDD (InDesign) format and figuring out how to extract embedded previews from those files. So, the first encounter with DAM development often has to do with a file format that isn't currently supported for previews.
In DAM, being able to have visual previews of files is essential, and there are many techniques involved depending on the file format.
Tools such as ImageMagick can handle many bitmap graphics formats, so familiarity with ImageMagick is a must. Even then, you must go deeper and deeper into the options available to get good renders of files which contain, for example, layers or transparency (or color management profiles)
Proprietary formats like INDD are often not possible to render using an open source library, but in those cases, previews are sometimes embedded within the file and must be extracted. Initially we did this with straight PHP code, but now Exiftool has made this much easier.
Many Audio and Video file formats can be transcoded using FFMPEG or similar tools.
For Office Documents, again, some formats like the new XML formats (ODF and OOXML) embed a preview that can be extracted, but sometimes those previews are single paged or too small. In those cases, running a program like OpenOffice on the server to convert the files to a renderable PDF is often a good option. We use Ghostscript to RIP (raster-image-process) PDF page layouts into a JPEG preview format.
Additionally, the process of creating various preview sizes in an efficient manner has been very important. ResourceSpace, for example, starts with a full sized image, and gradually produces smaller previews using the next largest preview available. I found that creating each thumbnail preview from a full-sized TIFF image, for example, was incredibly slow, and was able to enhance the speed of previews by 400% by creating the various thumbnail sizes from an already-smaller JPEG.
Metadata
There seem to be almost as many types of metadata as there are file formats! Luckily, there is the excellent Exiftool by Phil Harvey, which provides ResourceSpace with a way to avoid many of those details. Exiftool creates a layer of abstraction, where at the application level we can simply refer to "tags" by name, and generally let Exiftool worry about whether those tags are EXIF, IPTC, XMP, ID3, or others, and let Exiftool deal with how exactly to read or write (if possible) to those metadata elements within the various file formats.
We've found that metadata tools within ResourceSpace using Exiftool, such as the Metadata Report, help us to not only understand existing metadata better, but help us to debug and refine metadata strategies.
SQL
As ResourceSpace becomes more complex, a more and more solid understanding of SQL (and specifically the MySQL server) becomes necessary. Much data needs to be interleaved into every search result, such as access permissions, watermarks, and display fields.
A lot of work has gone into analyzing indexes, denormalizing data, and using available data wherever possible to avoid excessive queries. And there is still room for improvement. We've added the $config_show_performance_footer option to help explain which queries are being made on a page, and how they are performing. In more than one case, this tool has allowed me to greatly optimize query speed.
PHP/HTML/CSS
Obviously, the big three 'languages' (other than SQL) that go into creating every ResourceSpace page. There is a constant need to learn about HTML/CSS standards, PHP extensions and configurations, and cross-platform issues on both the client and server side, since ResourceSpace needs to run on many different platforms and every possible browser.
Server Administration
Then, there is this whole world of IT issues. Linux. Apache. MySQL. PHP. Cloud hosting. Domains. Extending storage. Cron jobs. Automated Backups. SSH. [edit: + Bash. Subversion. VIM (for me)] Security. Local or Remote. Bandwidth and transfer speed. Etc.
Workflow
Perhaps the most important part of being a DAM developer is understanding real-world workflows. ResourceSpace is used in many different ways, by various types of organizations. Developing for ResourceSpace in some ways means to look out for all of those possibilities at the same time, and to understand particular workflows enough to make the system efficient and useful in the real world. I can honestly say that every one of my ResourceSpace installations has been a unique challenge, with unique configurations and developments. ResourceSpace has become so configurable that people like me specialize in knowing what is possible and how to configure it via configuration files, permissions, server setup, etc.
Honestly, I'm sure there are more categories of expertise. Business and communication, and how to monetize these skills and services certainly come to mind! Since I started working on ResourceSpace three years ago, it has been a constant learning experience and expansion of my technical horizons. I love it.
0 comments:
Post a Comment