Uli's Web Site
[ Zathras.de - Uli's Web Site ]
Other Sites: Stories
Abi 2000
Stargate: Resurgence
Lost? Site Map!
     home | blog | moose | programming | articles >> blog

 Blog Topics

15 Most Recent [RSS]

 Less work through Xcode and shell scripts
2011-12-16 @600
 iTunesCantComplain released
2011-10-28 @954
 Dennis Ritchie deceased
2011-10-13 @359
 Thank you, Steve.
2011-10-06 @374
 Cocoa Text System everywhere...
2011-03-27 @788
 Blog migration
2011-01-29 @520
 All you need to know about the Mac keyboard
2010-08-09 @488
 Review: Sherlock
2010-07-31 @978
 Playing with Objective C on Debian
2010-05-08 @456
 Fruit vs. Obst
2010-05-08 @439
 Mixed-language ambiguity
2010-04-15 @994
 Uli's 12:07 AM Law
2010-04-12 @881
 Uli's 1:24 AM Law
2010-04-12 @874
 Uli's 6:28 AM Law
2010-04-12 @869
 Uli's 3:57 PM Law
2010-04-12 @867


Metadata across platforms

Update: uploaded a new version of metAPI that includes a MacOS X implementation.

By now, most developers of operating systems have realized that what users really need to keep their files organized aren't folder hierarchies, but rather metadata. Little bits of data you can attach to a file to later retrieve it again more easily.

Metadata is also very handy when it comes to caching data related to a particular file. You can attach a small, pre-generated preview image to your 13MB Photoshop map of Nunavut, and thus make it easy to speedily browse your image collection.

However, there's one thing that hasn't been addressed yet: Portability of metadata. With every platform having their own way to handle metadata, from BeFS to Spotlight to whatever Longhorn's metadata will be called when it ships in 2020, how will users be able to migrate their metadata along with their files?

To offer a solution for this problem, I've created metAPI. metAPI is a simple API specification for attaching metadata to files. I've also included a reference implementation for Unixes, and another for MacOS X that takes advantage of Mac-native APIs behind the scenes, while offering the same API to the outside. metAPI has the following goals:

  • Genericness: metAPI metadata consists simply of a "label" string and the actual metadata, which can be arbitrary binary data. This should be flexible enough to handle most metadata needs for now.
  • Platform-agnosticism: metAPI expects ANSI C and a file system, and that's it. It doesn't say anything about where the metadata goes. Whether it's in the file system nodes, in a hidden file next to the owner, in a database provided by the OS or in a box next to the door -- that's just an implementation detail.
  • Source-code compatibility for programmers: If you've written a metadata-aware Unix application, it'll be metadata-aware on the Mac as well. Just recompile it against the Mac version of the library.
  • Standards-compliance: metAPI will eventually support all needed modern buzzwords. It will generate XML from a file's metadata for easy transfer between platforms, and it will support UTF8 (Unicode) for some of the built-in default properties.
  • Convenience: All built-in metadata items will also come in platform-specific variants that are transparently converted to the platform-independent ones when needed. This allows library implementations to internally work with native formats for better efficiency, and it'll save programmers the hassle of having to convert to a non-native format just to have the library convert it back again.
  • Standardization: With the historic lack of metadata support on most current platforms, many applications fake their own metadata, each using a different scheme. This creates redundancy and often makes two applications keep essentially the same data, but neither 'seeing' the other's data. With metAPI, all applications use the same library, and thus can share their metadata, saving disk space, cycles, and giving the OS the opportunity to become metadata-aware and automatically handle applications' metadata the right way without having to know about the data itself.

Now, this is the very first iteration of metAPI. As such, it probably still has faults, and could probably use some modifications to work better with some of the more esoteric platforms. If you have any suggestions how I could improve metAPI, let me know.

And if you know anyone working on a Linux distro's file system or file manager, or on anything else that can use metadata, please point them at metAPI.
Created: 2004-12-13 @851 Last change: 2004-12-27 @037 | Home | Admin | Edit
© Copyright 2003-2023 by M. Uli Kusterer, all rights reserved.