Hi everyone-

I need some suggestions for terminology to use in my code and documentation.  
I'm picky about names, so this is important to me (perhaps more than it should 
be).  The context is Pinto, which is yet-another suite of libraries and tools 
for building a private CPAN-like repository.  Here's what I have so far...

Distribution:  A Distribution is an abstract concept that defines relationships 
between packages.  The minimal concrete implementation of a Distribution would 
be just a META.json (or equivalent) file.  Distributions also have names and 
versions like Foo-Bar-1.2

Distribution Archive:  A Distribution Archive is the physical manifestation of 
a Distribution, and corresponds to an actual file on the local disk.  For 
example, /home/jeff/Foo-Bar-1.2.tar.gz or C:\MyDocuments\Foo-Bar-1.2.tar.gz

Distribution Path:  The Distribution Path is how an Archive is identified in a 
CPAN index.  It is basically a URL fragment that looks like 
A/AU/AUTHOR/Foo-Bar-1.2.tar.gz.  This is the term I'm having the most trouble 
with.  CPAN::DistnameInfo calls this the "prefix" but I don't really like that 
either.

Package:  A package is just a package, in the usual way.  That is, something 
declared with the "package" keyword.

Module: I actually avoid using the term Module because I think it is often 
misused.  I feel that a Module is a physical file (i.e. something that you 
"use").  But some folks use the terms Module and Package interchangeably.  To 
be precise, CPAN (and Pinto) index Packages not Modules.  So when you ask 
cpan[1] to install Foo::Bar, what you actually install is an Archive that 
contains some Module that provides Package Foo::Bar, and that Module may or may 
not be called Foo/Bar.pm.  At least, that's how I understand it.

Repository: A repository is a general term for any CPAN-like pile of files.  
This includes CPAN mirrors, as well as any DarkPAN or mini-cpans.  A repository 
has a URL that identifies the entry point.  For example: http://cpan.perl.org

CPAN: *THE* CPAN is http://cpan.perl.org (or wherever PAUSE publishes stuff).  
*A* CPAN is one of the mirrors that replicate *THE* CPAN.  A DarkPAN or 
mini-cpan or Pinto are *not* CPANs.

Thanks for your suggestions.

-Jeff

Reply via email to