Ok, just a rough scratch up of how snippets could be setup for instance.
Each snippet could be packaged as a zip, (or txt if simple snippet) with a separate info file describing the snippet
* version
* author + email address
* category
* snippet homepage - for support and update info
...
Now the resource manager(or whatever its called) could connect to a central resource server to list templates/snippets/modules etc (server could be defined in manager, allowing different access to different installations), and than modx would download the package, uncompress it into a dir, read the info file, insert the snippet data into database, add templates to a chunk and so forth. Snippets could also be updated in this method, like a 1 click or auto update.
Also snippet packages could be uploaded similar to other systems.
Each snippet could also have override files for installation, update, and uninstallation. In case the snippet needs to generate its own tables, directories, or do something unusual.
The separate info file would contain all the info on how to use the snippet, define parameters default values and how to use them, and the core snippet code would be reduced to just code. Other snippets, modules, and templates will be able to read this info and somehow use it, the info will only be accessed when needed.
I’ve just uploaded a quick overview of how it might be structured in the .zip.
Templates:
------------
As there is usually several templates on a site based on a similar type, ie one site template, and several templates based on the site template, but with different layouts. Each template package could contain different revisions of templates, or template styles.
for example:
templates/
atemplate/
atemplate.tpl.html
atemplate_2col.tpl.html
atemplate_3col.tpl.html
atemplate_4col.tpl.html
So you could have the main template installed, and the installer will list the other templates based on that template (could be defined in template info file) like so:
With descriptions for each templatefile.
example:
$templatefiles[0]['name'] ='atemplate.tpl.htm';
$templatefiles[0]['desc'] = 'Description for this file'];
$templatefiles[1]['name'] ='atemplate_2col.tpl.htm';
$templatefiles[1]['desc'] ='description for this revision';
Again templates would contain a template info file or similar to define the template data, and possible override files again to install template variables, chunks and the like.
* Author, Version, homepage, ....
Or, something along these lines...so that modules, snippets, templates etc have some common way to be installed,updated and removed easily.
More to come...