Version 6 of package BoF: PACKAGE ABOUT - metadata

Updated 2002-10-12 10:57:37

Problem: people want to know things about packages other than version and load script.

  • Who wrote this?
  • When was it released?
  • Where was it downloaded?
  • What variant is it? (or is this TIP 59? - AK yes)

Solution store/retrieve name-value pairs

  • [package about $package $version] - return the metadata names stored for $version of $package
  • [package about $package $version $name] - return the metadata value of $name for $version of $package
  • [package about $package $version $name $value] - set the $value of $name for $version of $package

Alternative name?: [package meta]

No required names; let conventions arise

Discussion:

How do package variants share a single metadata?

When does metadata need to be available? Only after loading a package? Or earlier?

If earlier, [package about] calls need to go in index scripts, and automatic indexers should be able to place them there.

Does this complement or compete with TIP 59? If compete, who wins?


AK:

  • Availability of metadata: IMHO should be useable even before loading. Enables package management tools for packages without having to load their functionality into the tools. Which can be difficult if the packages are variants and do not match the interpreter running the tool.
  • [about] versus TIP 59: I believe it is compete, because TIP 59 specifies a way to implement meta data storage which is invalidated by [about]. It is a different system. Parts of TIP 59 are retainable, nameley the specified keys for Tcl.

SC

This would mesh well with the metadata provided by TIP 55 (see Cantcl) which could be available before loading packages. Since the format is name/value pairs it fits into the above scheme.

I'd suggest [package info ...] though and perhaps a more sophisticated query interface. Eg. [package info -subject web] might tell me the names of any packages with a subject field of web that are currently installed. [package info -repository $url -identifier ncgi] might give me info (a pair list?) about a package in a remote repository.

Is there a need for setting metadata values?