
a) There are fewer packages, so some central help-yourself global registry is feasible, as Simon M suggests.
Note that URIs make pretty good unique package names. When used this way, URIs can take several forms: 1) The URI can be a pointer to an actual file to be downloaded like http://haskell.org/greencard/gc-3.01.tar.gz This is a good choice because it often exists for publicly released software and following the pointer produces something useful. The pointer usually contains a version number and so will be unique. 2) The URI is of the form http://organization/local-package-name/version and does not point to an actual file you can download. The organization is the URI to some group that is handing out locally unique package names. Some example organizations might be: haskell.org sourceforge.org reid-consulting-uk.ltd.uk microsoft.com/~simonpj microsoft.com <- an independent organization from ~simonpj The local package name should be unique within the organization but package names from other organizations can overlap. The version number can be whatever the individual author feels like using - as long as it is unique. Although the URI doesn't point at the actual package, it is probably good practice if it points at something which tells you about the package and where to download it. For example, Tweaking the form of the URI slightly, we could have: http://haskell.org/packages#greencard-3.01 where http://haskell.org/packages might be a web page that tells you how to install packages for Debian, FreeBSD, Windows, etc. and the anchor #greencard-3.01 doesn't point to anything at all. -- Alastair Reid