1 | | Hm, there are four overlapping namespaces here. |
2 | | |
3 | | One is the "appname" which is defined by us (the Tahoe-LAFS project) to distinguish different variants or forks of Tahoe-LAFS or independent implementations of the LAFS protocol. We agreed on how to do this versioning in [http://tahoe-lafs.org/pipermail/tahoe-dev/2008-November/000879.html this message to tahoe-dev]. The appname is used in [source:src/allmydata/__init__.py@4597#L61 in allmydata/__init__.py] to construct a variable named {{{__full_version__}}}, which is used in a few places such as [source:src/allmydata/storage/server.py@4595#L270 storage/server.py]. The appname for Tahoe-LAFS has been "allmydata-tahoe" for the last couple of years, and we would like to change the appname to "tahoe-lafs" someday. |
4 | | |
5 | | Another namespace is the Python "distribution" namespace. (A "distribution" is what the Python world calls a package.) This is a global namespace where everyone on the planet is supposed to avoid choosing colliding names. An important central locus of this namespace is the Python Package Index (which I suppose ought to be called the "Python Distribution Index")—installers such as {{{easy_install}}} and {{{pip}}}, when asked to install a distribution named {{{$DIST}}}, will by default look for it at {{{http://pypi.python.org/pypi/$DIST}}}. The distribution name for Tahoe-LAFS has been "allmydata-tahoe" and we would like to change it to "tahoe-lafs". |
6 | | |
7 | | The third namespace is the Python "package" namespace. (A "package" is what the Python world calls a directory containing an {{{__init__.py}}} file.) This namespace is global and is populated by all of the Python distributions that you install on your system. Collisions are silently resolved by a complicated algorithm involving your {{{PYTHONPATH}}} and a certain widely disliked hack due originally to setuptools ([http://bugs.python.org/setuptools/issue53 setuptool #53]). The {{{tahoe-client.tac}}} file loads a package named {{{allmydata}}}. We would probably like to change that in the future to {{{tahoe}}}. |
8 | | |
9 | | Now currently [source:trunk/setup.py@4616#L329 our build scripts] ensure that the Python distribution name is always equal to the appname, and the [source:src/allmydata/scripts/create_node.py@4641#L31 create-node command] adds {{{pkg_resources.require(APPNAME)}}} to the {{{tahoe-client.tac}}} file. |
10 | | |
11 | | The fourth namespace is the scripts and executables in your system, where we currently create a file named {{{tahoe}}}. |
12 | | |
13 | | One thing that we can do right away to ease this is change create-node to stop putting the call to {{{pkg_resources.require()}}} in the tahoe-client.tac. |