Packaging of the Tcl world

Purpose: to attempt to characterize the various packaging layers of Tcl, extensions, and applications.


Donald Porter and Paul Duffin and others have been discussing over the past few weeks a way of looking at the pieces of Tcl so that people can figure out what alternatives for distribution exist. Here's my attempt at bringing their discussion to the Wiki.

This is how Paul stated he saw things, after some usenet exchanges:

Structural ordering.

 Layer 1:        Tcl kernel
 Layer 2:        non-kernel packages of the Tcl core
 Layer 3:        non-core packages in the Tcl core distribution
 Layer 4:        packages not in the Tcl core distribution (TEA compliant)
 Layer 5:        packages not in the Tcl core distribution (Not TEA compliant).

 Layer 1 + Layer 2 constitutes the binary Tcl library plus the script Tcl
  library (which is distinct from tcllib).

Responsibility ordering.

 Layer A:        Authored, redistributed, and hosted by TCT.
 Layer B:        Authored by others, redistributed and hosted by TCT.
 Layer C:        Authored and redistributed by others, hosted by TCT.
 Layer D:        Authored, redistributed and hosted by others.

Here is an example table which illustrates how certain packages fit into it.

         | A             | B             | C             | D             |
 --------+---------------+---------------+---------------+---------------+
 1       | Tcl Kernel    | ***           | ***           | ***           |
 --------+---------------+---------------+---------------+---------------+
 2       | Tcl Core      | ***           | ***           | ***           |
 --------+---------------+---------------+---------------+---------------+
 3       | http, msgcat *| ???           | ****          | ****          |
         | tcltest, opt  |               |               |               |
 --------+---------------+---------------+---------------+---------------+
 4       | Tk, tclhttpd  | Expect        | @             | @             |
         | tcllib        | [incr Tcl] 3.0|               |               |
 --------+---------------+---------------+---------------+---------------+
 5       | **            | TclJava       | TclXML        | Img           |
 --------+---------------+---------------+---------------+---------------+
 TCT:      mdh             dh              h

        m = maintains the package
        d = distributes the package
        h = hosts the package (NetCVS, bug DB)

 *       Some parts of tcllib are written by others, some by TCT.
 **      There are of course no packages written, or redistributed by
         TCT which are not TEA compliant ;-)
 ***     Only the TCT can modify the Tcl kernel and non-kernel packages.
 ****    The TCT must host and distribute anything which is part of the
         core distribution.
 @       Do not know which packages are TEA compliant and which ones are
         hosted by TCT. I would appreciate some examples of extensions
         which fit into these categories.

CMcC would like to point to the Debian Package Lifecycle [L1 ] as an interesting example of how some people manage a large number of binary packages with a distributed user and maintainer base. I note that they don't emphasise QA as much as TCT does. Debian also maintains several package versions concurrently: stable,testing,unstable as against tcl's alpha/beta. Debian also has a cast of thousands, so I'm not suggesting this process be emulated.


Category Deployment