[Distutils] Metadata fields

Andrew Kuchling akuchlin@mems-exchange.org
Sat Mar 10 15:58:00 2001


Following the IPC9 discussion, let's continue the thread on metadata.
Here's a list I posted to the Catalog-SIG back in November.  

Information about a package
===========================
Name
Version
Supported Platforms
Description
Keywords
Homepage URL
Author IDs
License
Download link
Date of release

Leaving out for now: dependency information, except perhaps as just a
    text field

Information about an author
===========================
Name
Home page
GnuPG/PGP key (both the actual key, and just the ID)
E-mail address (used as ID?)
E-mail address public: y/n

Information about a document
============================
Name
Author
Description
URL of HTML version
URL of printable version
URL and format of downloadable version
  (Any of these URLs can be omitted if not applicable.)

The "Information about a document" section is only relevant to a
catalog that includes non-software things such as documentation, and
can probably be ignored for now.  The "Information about an author"
section makes sense for a CPAN-like system where authors are
registered as independent entities, but not for one where packages are
the only entities.  On the other hand, maybe registering developers is
worth preserving; otherwise you'd have to put your URL and GPG key in
every single package you maintain, which is kind of annoying.

I plan to write this up as a PEP, and explain the contents and
semantics of each field in detail.

Comparison with OSD
===================

Additional fields in OSD:

LANGUAGE: for the implementation language, I assume, and not the human
          language it's documented in?
OS, OSVERSION: operating system required to run this package.
PYTHONCORE:   Version of Python required to run this package.
PROCESSOR:                  CPU required to run this package.

CODEBASE, INSTALL, UNINSTALL: references to downloadable code, to an
install script, to an uninstall script.  

Given the existence of the Distutils, the last 3 fields all collapse
down into the code's location.  PROCESSOR seems only marginally useful
(can you name a Python extension that runs on only one processor?),
but leaving it in is no big deal.  

OSD does not have fields for keywords or for a release date.  

Looking at the PAD format, there's little new there that's applicable;
about the only thing is a field to indicate if a release is a minor or
major update (perhaps there's a 'Security Bug' value, too).
  
--amk