[ Home | Main Table Of Contents | Table Of Contents | Keyword Index ]

blob_development(n) 1 doc "Blob. General content storage with deduplication"


blob_development - Blob - The Developer's Guide

Table Of Contents


Welcome to the Blob project, written by Andreas Kupries.

For availability please read Blob - How To Get The Sources.

The audience of this document are anyone wishing to modify Blob in any way, shape, or form. This can be a maintainer fixing bugs, a developer adding functionality, or patching it to accommodate local cicumstances, etc.

Please read

  1. Blob - How To Get The Sources and

  2. Blob - The Installer's Guide

first, if that was not done already. Here we assume that the sources are already available in a directory of your choice, that it is known how to build and install the project, and that all the necessary requisites are available.

Development Tools

Blob requires the following tools going beyond those needed for build and installation.


Processor for diagram-based figures. See package tklib.


Processor for doctools-based documentation files, i.e. the ".man" files under "doc/". See package tcllib.

This requirement is optional. If a Tcllib providing the package dtplite is installed then kettle will use the package in favor of the external application.

Demonstration/Example Applications

Blob (currently) does not have demonstrations, nor examples.

Directory structure

The directory structure of the sources is as explained below:


The main file of the kettle-based build-system.


Main directory for all documentation.

Based on the doctools package and tools provided by Tcllib.


Main directory for all diagrams and figures used by the documentation.

Based on the diagram package and tools provided by Tklib.


Compiled documentation (manpages and HTML). Part of the repository for

  1. easy access from the repository's web interface (embedded documentation), and

  2. quicker installation (no need to compile during the installation process itself).


Main directory for the test-suite.

Based on the tcltest package distributed with the Tcl core.


Package blob.


Package blob::fs.


Package blob::memory.


Package blob::sqlite.

Extended Build Actions

Our build-system is based on kettle, as already explained in the Blob - The Installer's Guide. Beyond the targets useful for installation it also provides targets aiding developers and maintainers. These are:

Validation of the documentation
% /path/to/blob/build.tcl validate-doc
Regeneration of the embedded documentation
% /path/to/blob/build.tcl doc
Regeneration of the figures for the documentation
% /path/to/blob/build.tcl figures
Execution of the test-suite

The most basic execution of the test-suite is done with

% /path/to/blob/build.tcl test

When the test-suite reports issues with the framework use of the more extended form below is indicated, with a <stem> of your choice. This will generate a number of files whose name starts with the prefix "<stem>.". These will contain extended test logs, details about errors and failures, etc.

% /path/to/blob/build.tcl test --log <stem>

Architecture & Concepts

All packages to one of two layers, as shown below:


Note that:

The dependencies between the packages are very straight-forward:


Related Documents

  1. Blob - Introduction to the project

  2. Blob - License

  3. Blob - Log of Changes

  4. Blob - How To Get The Sources

  5. Blob - The Installer's Guide

  6. Blob - The Developer's Guide

Bugs, Ideas, Feedback

Both the package(s) and this documentation will undoubtedly contain bugs and other problems. Please report such at Blob Tickets.

Please also report any ideas you may have for enhancements of either package(s) and/or documentation.


blob, blob storage, content deduplication, content storage, deduplication, storage