[Distutils] [Catalog-sig] packaging terminology confusion

John Gabriele jmg3000 at gmail.com
Fri Jan 8 04:43:06 CET 2010

On Thu, Jan 7, 2010 at 5:22 PM, Tarek Ziadé <ziade.tarek at gmail.com> wrote:
> On Thu, Jan 7, 2010 at 11:12 PM, M.-A. Lemburg <mal at egenix.com> wrote:
> [..]
>> I usually refer to the latter as 'Python package' and the former
>> as 'package'.
>> What you download is a 'distribution file' which could be an exe,
>> a tarball, an egg, etc. There are many forms such a package
>> distribution can take and just as many ways to install them.
> That would be a "release" instead imho. (I like Tres' definitions for that)
> e.g. a "release" comes in several "distributions" :  an egg, a source
> dist, a binary dist, etc.
>> Once installed a 'package' usually creates a single 'Python package'
>> (at top-level or some lower level).
> That's not always the case. Many projects have also scripts, and /or
> top level modules in site-packages.

I've got a few brief observations, and also a suggestion.

1. In english, the word "package" can mean an aggregation of features,
as in, "We got married, stayed at a hotel, and got the honeymoon
package. Heart-shaped bed, champagne, and chocolate-covered
strawberries in the fridge!". So, it's a great name for something that
aggregates things, like modules.

2. Also, in english, the word "package" can also mean a nice sealed
box that you send out via or receive from the postal mail. So, it's a
great name for those tgz things that you upload to or download from
the PyPI.

3. People don't like calling those MyProject-1.0.2.tgz thingies
"distributions". They keep calling them packages, and when you correct
them, they say, "[sigh], fine. [eyes roll] 'distribution'."

4. A "project" is just a general term for a named thing that people
work on. "I'm working on my Isengard Reforestation project! I think
it's going to be very successful! I'm keeping it in my
`~/dev/projects/IsengardReforestation` dir." But I don't think
`IsengardReforestation-1.0.2.tgz` would be referred to as a "project"
per se, nor a "project file". A "project file" is one of those things
that an IDE gives you to keep track of which files belong in the
project, how to build it, and so on---so I wouldn't call it that

5. There are already a bunch of tools that refer to those PyPI tgz
things as distributions (for example, Distutils).

6. The word "distribution" is long to type and long to say. And also,
when I think of a Python distribution, I imagine the
`Python-2.6.4.tgz` file you download from python.org. *That's* a
Python distribution (along with the previous Python releases). Also,
ActiveState has a Python distribution too.

So, here's a suggestion: just call both things (packages and
distributions) "packages", but then agree to fully qualify the names
when you need to avoid ambiguity, for example: "I just built a
distribution-package (or "dist-package" for short) and included
numerous module-packages in it."

* If you mean the kind of package holds modules, and the meaning isn't
clear from the context, say "module-package" (think "honeymoon

* If you mean the kind of package hosted at the PyPI, and the meaning
isn't clear from the context, say "distribution-package" or
"dist-package" (think parcel/postal package)

This way,

* The PyPI now becomes the "Python dist-package index", or just
"Python Package Index (PyPI)" for short. :)

* Distutils is now the "distribution-package utilities" or just "dist
utilities" for short. :)

* We can slowly fully-qualify the name "distribution" in the docs,
gradually replacing it with "distribution-package" or "dist-package"
(when it's referring to dist-packages) and it won't be much of a shock
to the system.

How's that sound?


More information about the Distutils-SIG mailing list