[CREATE] Categorizing resources

Aurimas Juška aurimas.juska at gmail.com
Wed Feb 18 12:25:09 PST 2009


Hi,

Resource tagging is now available in GIMP development version. Before
it is released, I think it would be good to discuss possibilities how
tags could be shared between applications and also how tagging could
be implemented in other applications.

Common (standardized?) tag storage format

Currently GIMP tags storage format is minimalistic, but seems to work
quite well. Tags are stored in a tags.xml file which can be easily
understood and edited manually:
<?xml version='1.0' encoding='UTF-8'?>
<tags>
  <resource identifier="/home/auris/gimp/trunk/build/share/gimp/2.0/brushes/confetti.gih"
checksum="d136b60fdd9cf41693a485a329b32e95">
    <tag>aaa</tag>
  </resource>
</tags>

Resources are mapped with entries in tags.xml using:
 * identifier - filename for resources stored on disk. Easy to
understand, but can be different between computers and platforms.
 * checksum - uniquely represent resource. However, how checksum is
calculated (which data from resource is used, algorithm) seem hard to
standardize. Useless when user wants to edit tags.xml manually (or
with a simple script).

Currently identifier is used primarily to identify resources, and
checksum is only used when identifier can't match actual resource file
(file rename/move).

Tag is a text string which cannot contain separator characters,
newlines, tabs, etc. There is no additional information stored with a
tag, such as language. However, tags provided with GIMP can be
translated into various languages. Localized version is installed in
user's home directory on the first run but is not changed when
switched to a different language later.

In order to make format useful for other applications and external tag
editors as well, is there anything that should be added/removed ? It
would be good, as always, to keep the format simple as possible.

Common GUI elements

It might be good for user if similar GUI element would be used for
similar purposes. There is a small PDF available which shows more
detail how tagging GUI elements work in GIMP:
http://sites.google.com/site/aurijusk/gimp-resource-tagging/tagging.pdf?attredirects=0

Code reuse for implementation, etc.

Some code could probably could be used as starting point. It might be
possible to put some functionality in places where multiple
applications could take advantage of it.

Best regards,
Aurimas Juška


More information about the CREATE mailing list