Wow. I, like David, thought xPDO was "just" the database API, not an entire platform.
It’s definitely not just a database API; it’s also a very handy way of loading classes in PHP 4 and 5, and as such, just happens to make a good core library manager for database-centric applications, and the only real requirement to kickstart the work of installing the individual pieces.
And actually, let me bullet point this bootstrap install process out to be clearer after re-reading and giving it a little more thought; and let’s focus on xPDO being a core part of MODx, and leave xPDO out of the related installer terminology, i.e. MODx Installer and MODx Configuration Manager rather than xPDO Installer and Application Manager.
[*] User downloads the bootstrap installer file, puts it in their web server where they will be installing MODx, and points their browser to it.
[*] User triggers the MODx Installer process.
[*] Installer begins by asking for acceptance of the license, etc. and then prompting the user for their FTP user account credentials to be used for the installation.
[*] Installer verifies the credentials and proceeds if valid.
[*] Installer connects to the main MODx download repository (we’re seriously thinking Amazon S3) and presents the user with a list of the latest core MODx package releases available. They select a package and installation continues.
[*] Installer prompts user to select a directory where the MODx core will be installed (should present a directory explorer of the FTP server). NOTE: This directory does not have to be within the webserver, just accessible to the PHP and FTP user accounts.
[*] Installer performs a series of checks on the configuration to determine a mode of installation (i.e. transfer a zip and extract it, or transfer all files individually via FTP).
[*] If checks pass for one of the valid modes, just the core files needed to start the package installation process are installed directly to the server; otherwise, alternate manual steps are described which the user can proceed with, but this should all work automatically in all but extremely rare configurations.
At this point meta data about the selected package is used to define these next steps, so in essense, the bootstrap process now passes control to the installed xPDO core resources to perform the rest of the actual MODx core package installation...so for example the first two steps in the MODx core package installation might be
[*] Installer prompts user to select a directory where the MODx web context will be installed (this is the location where the main index.php or front controller will be located), along with a name for the assets directory if they don’t want it to be called assets (optional). NOTE: These directories must be within the web server document root.
[*] Installer prompts user to select a directory where the MODx manager context will be installed (this is the location where the manager index.php or front controller will be located). NOTE: This directory must be within the web server document root, and in a different location than the web context.
So on and so forth... the installer just follows the manifest of the package, which prescribes an order to execute the transport vehicles I described. Each individual vehicle in the manifest can then do just about anything, prompt the user for input, create a data table, add a data object stored in a db portable serialized format (JSON in my early implementation), execute a SQL statement or two to migrate data to a new data structure, represent a file by moving it from a local package or directly from the update server, to the appropriate location in your site, etc.