This theorem establishes that, independently of the underlying core, a web site may be computed by a function of its constituent components.. It is devided into three parts:
- 1. The build process of an open source component-based web site may be structured as follows:
- Transpose: obtaining the constituent components from the source into the building environment
- Transfer: placing the components from the building environment into the target site code base
- Configure: setting the identity of the target site
- Install: initializing and activating core, module and theme components
- Conform: configuring panels, blocks, and menus; setting site variables; defining permissinos; creating users and content
- 2. A site may be defined as a directed series of actions on the constituent logic and presentation components that may be declared in a xml file. Actions may be:
- those associated to the core and available to all packages: install package, update package, set variable, create block in panel, add row to menu. Internal functions common to all cores include: say if the core is installed, say if a module is installed and installed version
- those exposed by installation packages associated to specific components -modules-
- 3. Given a site, it is possible to automate the update the components from a reference components library.
- 4. It is possible to clone a site as follows:
- Backup the site: data base, file system and site identification
- Restore: database and file system processing source and target site identification
- Configure: setting the identity of the target site
This theorem is proved as follows:
Create a drupal site as identified in sbd501_at_localhost from the sib_drupal5_sif_sif.xml definition file
> php sifcmd.php b --sifpacksdir=../sifbuilder_local/packages --sifnetsite=sbd501_at_localhost --siburi=./sibs/sib_drupal5_sif_sif.xml -x
Create a drupal site with a version-defined component
> php sifcmd.php b --sifpacksdir=../sifbuilder_local/packages --sifnetsite=sbd501_at_localhost drupal5_mod_views_1_5 -x
Update the component in the site
> php sifcmd.php b --sifpacksdir=../sifbuilder_local/packages --sifnetsite=sbd501_at_localhost drupal5_mod_views --nohistory --doupdate
Create a postnuke site as identified in sbpn501_at_localhost from the sib_PostNuke08_sif_sif.xml definition file
> php sifcmd.php b --sifpacksdir=../sifbuilder_local/packages --sifnetsite=sbpn501_at_localhost --siburi=./sibs/sib_PostNuke08_sif_sif.xml --dev -x
Create a postnuke site with a version-defined component
> php sifcmd.php b --sifpacksdir=../sifbuilder_local/packages --sifnetsite=sbpn501_at_localhost PostNuke08_mod_EZComments_1_3 --dev -x
Update the component in the site
> php sifcmd.php b --sifpacksdir=../sifbuilder_local/packages --sifnetsite=sbpn501_at_localhost PostNuke08_mod_EZComments --dev -f --doupdate --doupdate
Create a xoops site as identified in sbx501_at_localhost from the sib_XOOPS20_sif_sif.xml definition file
> php sifcmd.php b --sifpacksdir=../sifbuilder_local/packages --sifnetsite=sbx501_at_localhost --siburi=./sibs/sib_XOOPS20_sif_sif.xml --dev -x
Create a xoops site with a version-defined component
> php sifcmd.php b --sifpacksdir=../sifbuilder_local/packages --sifnetsite=sbx501_at_localhost XOOPS20_mod_multimenu_1_74 --dev -x
Update the component in the site
> php sifcmd.php b --sifpacksdir=../sifbuilder_local/packages --sifnetsite=sbx501_at_localhost XOOPS20_mod_multimenu --dev --doupdate --doupdate
Create a joomla site as identified in sbj501_at_localhost from the sib_joomla1_sif_sif.xml definition file
> php sifcmd.php b --sifpacksdir=../sifbuilder_local/packages --sifnetsite=sbj501_at_localhost --siburi=./sibs/sib_joomla1_sif_sif.xml --dev -x
The Corolarium I to this theorem establishes that, in two years, all open source component-based content management systems will include this function.

