1) agree on package format - zip is easiest with Java because it's built-in .. I'd need to look for a tar/gz library otherwise

2) agree on manifest format - i recommend inside the ZIP is a file called manifest.emp that is something like:


<empeg-app>
<!-- metadata about the app -->
<uid>org.jempeg.Application1</uid>
<name>My Application</name>
<version>1.0</version>
<author>Mike Schrag</author>
<email>[email protected]</author>
<description>A Sample Application</description>
<homepage>http://www.jempeg.org</homepage>
<license>This is the text of my license. Don't steal my code</license>

<!-- defines requirements -->
<requires>
<!-- a required package -->
<package>
<uid>org.jempeg.Application0</uid>
<version>1.0</version>
</package>

<!-- required empeg version -->
<!-- one of min or max is required -->
<empeg min = "2.0b10" max = "2.0b12"/>

<!-- one of min or max is required -->
<hijack min = "242" />
</requires>

<!-- config-ini defines values that are to be set in config.ini -->
<config-ini>
<!-- "set" values will automatically be set, description is optional -->
<set name = "key1" description = "Key #1" value = "value1"/>
<set name = "key2" description = "Key #2" value = "value2"/>
<set name = "key3" description = "Key #3" value = "value3"/>

<!-- "ask" values will be asked to the user. "enum" would be a drop-down box -->
<ask name = "color" description = "Your favorite color" type = "enum">
<valid-response value = "red"/>
<valid-response value = "blue"/>
<valid-response value = "yellow"/>
</ask>

<!-- "ask" values will be asked to the user. "text" would be a text field -->
<ask name = "yourname" description = "Your name" type = "text"/>
</config-ini>

<app-ini>
<!-- same as config-ini but would go into the app.ini file in the package directory -->
</app-ini>

<!-- files defines the set of files to be installed -->
<files>
<!-- target of "relative" would install this file (w/ full directory) relative to the user's install dir -->
<file src = "/file/inside/of/zip/1.file" target = "relative"/>

<!-- target of "absolute" would install this file (w/ full directory) to absolute path (like /etc/whatever) -->
<file src = "/file/inside/of/zip/1.file" target = "absolute"/>

<file ...... >
.
.
.
</files>
</empeg-app>



3) decide where manifests are stored after install
(so jEmplode can introspect your Empeg for installed apps to determine version dependencies). Probably shuuld be renamed to /somewhere/packages/{uid}.emp where uid is the UID from the manifest file.

4) Add it to jEmplode

What do you guys think? No promises on delivery time of something like this, but it's very doable.

Mike