teapot_intro - TEApot Introduction
TABLE OF CONTENTS
DESCRIPTION
Entities and Storage Formats
Entities
Storage Formats
Meta data
Repositories
Further reading
BUGS, IDEAS, FEEDBACK
SEE ALSO
KEYWORDS
COPYRIGHT
The TEApot system is ActiveState's initial implementation of Tcl package repository management.
At the center of the system we have three main concepts which interact with each other:
The relationship between these three is simple:
An entity contains meta data which describes the entity, whether the entity is a package, an application, or a profile. For the rest of this introductory document I will focus primarily on examples relating to package entities, i.e. packages, mentioning other entities only where necessary.
We limit what can be stored in a repository. I.e. the TEApot system is not able to handle any possible form a Tcl package may take (such as, for example, a directory containing multiple packages sharing a single "pkgIndex.tcl" file). The handful of formats it can process however are enough as all other formats can be converted to at least one of them. Just as with Tcl Modules, as described in TIP 189 we give up on the extreme set of choices available to Tcl developers, making things easier, yet without truly limiting the system in what it can do.
TEApot currently handling three types of entities:
TEApot accepts entities which are in one of the four formats below and understands how the meta data describing them is embedded into them. The details of the latter are specified in the TEApot Meta Data Specification document.
The meta data to be associated with packages and applications is in a very free-form keyword/value based format, essentially an encoding for a Tcl dictionary plus identification information naming the entity in question.
The details of the format itself and how the data is stored in the various forms of packages as described in the previous section can be found in the TEApot Meta Data Specification.
One thing of note is that the quite unlimited nature of the format seems to go very much against the grain of making things easier by limiting choice to the main/important options, as we so strongly expounded at the beginning of this document.
There is a reason for this however. Packages in their various forms have been a feature of Tcl which has existed for quite some time, and by now we have gained an understanding of its space - what the most important forms are.
Meta data for packages however is at the very beginning of its life and it is not clear at this time which meta data is merely wanted, possibly needed, or absolutely essential. Because of this we are intentionally not limiting the imagination of users with regard to keywords and their meaning, with the sole exception of the keywords which are claimed by ActiveState's tools for their use.
TEApot repositories come in basically two forms, opaque and transparent. The latter expose their internal structure, i.e. filesystem hierarchy, and make it accessible to the package management code of a tclsh. An opaque repository on the other hand is not accessible to a tclsh.
Because of that the term transparent is basically synonymous with the term installation repository, a repository from which packages are loaded for actual execution.
This implicit connection to a tclsh is another difference between transparent/installation and opaque repositories. We can store whatever package we like into an opaque repository, but a transparent repository can hold only packages the connected tclsh is actually able to execute. I.e. only packages with an architecture matching the tclsh can be stored. To be able to know this architecture the implicit connection is made explicit, by telling installation repositories which shells are using them.
In summary, transparent repositories are designed for interaction with Tcl installations, whereas opaque repositories are more cast into the role of general, central archives servicing the installations.
There is a second axis of classification for repositories. The relevant terms for this axis are local versus remote, or filesystem versus network. A local repository is accessible through the filesystem, while a remote repository is accessible through the web, i.e. the network.
This makes for a total of four classes of repositories, one of which is empty. We do not have remote transparent repositories.
This document will undoubtedly contain bugs and other problems. Please report such at the ActiveState ActiveTcl Bug Tracker. The relevant component is teapot. Please also report any ideas for enhancements you may have for either application and/or documentation.
teacup, teapot-admin, teapot-md, teapot-pkg
TEA, TEAPOT, introduction, package management
Copyright © 2007 ActiveState Software Inc.