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