..
MainWindow
CenterOnParent
6
6
Developer
0
True
False
False
True
False
●
1
True
0
True
False
False
6
Product
0
True
False
False
True
False
●
1
True
1
True
False
False
6
Version
0
True
False
False
True
False
●
1
True
2
True
False
False
6
Languages
0
True
False
False
True
False
●
1
True
3
True
False
False
6
Architecture
0
True
False
False
True
False
●
1
True
4
True
False
False
6
Machine
0
True
False
False
True
False
●
1
True
5
True
False
False
6
Format
0
True
False
False
True
False
●
1
True
6
True
False
False
6
Description
0
True
False
False
True
False
●
1
True
7
True
False
False
6
6
False
True
oem
True
True
True
0
True
False
False
False
True
upgrade
True
True
True
1
True
False
False
False
True
source
True
True
True
2
True
False
False
0
True
6
False
True
update
True
True
True
0
True
False
False
False
True
files
True
True
True
1
True
False
False
False
True
netinstall
True
True
True
2
True
False
False
1
True
8
True
False
False
In
True
True
9
True
6
False
label2
0
True
False
False
False
1
True
10
True
False
False
6
False
label22
0
True
False
False
False
1
True
11
True
False
False
6
True
True
StockItem
gtk-quit
gtk-quit
End
0
True
False
False
True
TextAndIcon
stock:gtk-preferences Menu
_Settings
True
End
1
True
False
False
True
True
StockItem
gtk-help
gtk-help
End
2
True
False
False
False
True
TextAndIcon
stock:gtk-close Menu
_Close
True
End
3
True
False
False
False
False
True
TextAndIcon
stock:gtk-save Menu
_Pack...
True
End
4
True
False
False
False
True
TextAndIcon
stock:gtk-add Menu
Add to _DB
True
End
5
True
False
False
True
TextAndIcon
stock:gtk-open Menu
Open _archive
True
End
6
True
False
False
True
TextAndIcon
stock:gtk-open Menu
Open _folder
True
End
7
True
False
False
False
True
True
StockItem
gtk-stop
gtk-stop
End
8
True
False
False
12
True
False
False
Help
Dialog
CenterOnParent
True
6
In
True
True
False
This is the naming scheme and folder organization conventions for the Operating System Repository.
The basic layout is as follows:
<Developer>/<Product>/<Version>/<Language>/<Architecture>/oem/for <Machine>/<[format]_update/upgrade/files/source/netinstall/description>.zip
All fields should contain only 7-bit ASCII.
<Developer>
-----------
This is the main developer of the operating system or associated software. e.g. Microsoft
<Product>
---------
This is the name of the operating system or associated software. e.g. Windows NT
<Version>
---------
This is the version of the operating system or associated software. e.g. 6.00.6000.16386
Service pack and release markers should be appended. e.g. 6.10.7601.16385 (RTM)
Build can be specified by appending "build". e.g. 10.2.7 build 6S80
And combined. e.g. 10.5 build 9A581 (Server)
Version with same version number but different build date should have it appended. Date format should be YYYYmm[dd]. e.g. 10 201009
<Language>
----------
This specifies the language localization and translation:
xxx: Language variation, e.g. German = deu
xxx_yy: Country specific language variation. e.g. Swiss German = deu_ch
multi: The only known variation of the product that contains more than a language
xxx,xxx,xxx and xxx_yy,xxx_yy,xxx_yy: The variation contains more than a single language
Where xxx is the ISO-639-2/T language code and yy is the ISO-3166-1 alpha-2 country code.
https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
If the product has ever been only released in one language variation, being it English (like CP/M) or multilanguage (like Mac OS X and Linux), this field should be omitted.
<Architecture>
--------------
The processor architecture the product is compiled for.
Omitted if it has only ever been compiled for a single one, contains all supported ones in same files, or it is source code containing support for several of them.
Exact one depends on the product (that is, the one that the product uses to identify itself, should be used). Examples:
* x86, i86, i386, i486, i586, i686, ia32: Intel Architecture 32 aka 8086 aka iAPX86
* x64, amd64, x86_64: AMD64 aka x86_64 aka EM64T
* ia64: Intel Architecture 64 aka Itanium
* sparc: SPARC
* sun4u, sun4m, sun1, sun2, sun3: Specific Sun architectures that specify not only the processor architecture but the whole system one.
* 68k, ppc, fat: For products that run under Mac OS indicate they require a Macintosh, a Power Macintosh, or can run on both, respectively.
* rpi, rpi2, beaglebone, bananapi: Specific whole systems that share a processor architecture but require a completely different variant.
oem
---
Present if the variant is OEM. Omitted otherwise.
for <Machine>
-------------
Present if the variant requires a specific computer to run.
Useful for computer restoration variants.
e.g. for Power Mac 5200
e.g. for Tandy 1000
<[format]/update/upgrade/files/source/netinstall/description>.zip
-----------------------------------------------------------------
This is the file containing the product itself.
It should be compressed using ZIP with certain parameters (see below).
Several of them can be combined separated with underscores.
Naming as following:
* [format]: If the variation is encoded in a disk image format that's neither a simple dump of sectors (.iso/.dsk/.xdf) or a BinCue/BinToc (.bin+.cue/.bin+.toc) format should be substituted to a descriptive name for the format. e.g.: [Nero], [CloneCD]
* update: Should be used when the product requires and updates a previous point release or build to the new one. Product version should be the updated, not the required, one. e.g.: 1.3 updates to 1.3.1 or 2.0 updates to 2.5
* upgrade: Should be used when the product requires and updates a previous version to the new one. Product version should be the updated, not the required, one. e.g.: 2.0 updates to 3.0 or MS-DOS updates to Windows 95.
* files: Should be used when the contents of the product disks are dumped as is (copied from the media) or it contains already installed files.
* source: Should be used when it contains the source code for the product.
* netinstall: Similar to files except that the files are designed to be put in a network share for remote installation of the product.
* description: Free form description or product part number if it is known.
Compression
-----------
The product should be compressed using ZIP with Deflate algorithm and UTF-8 headers. Zip64 extensions may be used. UNIX extensions MUST be used for products that require them (e.g. it contains softlinks).
In the doubt, use Info-ZIP with following parameters:
zip -9ry -dd archive.zip .
If the product requires Acorn, BeOS or OS/2 extended attributes it should be compressed using the corresponding Info-ZIP version under that operating system so the required extension is used.
DO NOT recompress archives in an operating system which zip product doesn't support all already present headers.
DO NOT use TorrentZip. It discards all headers as well as date stamps.
DO NOT use Mac OS headers. For conserving FinderInfo and Resource Fork see below.
FinderInfo and Resource Fork
----------------------------
FinderInfo and Resource Fork should be stored as Mac OS X AppleDouble format: file and ._file
This format is understand by all Mac OS X versions under any filesystem or a CIFS/SMB network share.
Also mkisofs recognizes it and is able to create an HFS partition with them correctly set.
Other formats should be converted to this one.
Metadata
--------
Each archive should be accompanied with a JSON metadata file using the CICM Metadata format. Name for metadata sidecar should be same as the archive changing the extension to .json.
If the archive can be modified (doesn't contain ZIP headers you would lose) the metadata should be put inside the archive as a file named metadata.json.
Recovery
--------
Disks fail, bit rot happens, so every archive as well as the metadata file should have a PAR2 recovery set created.
Example command line (with 5% redundancy):
par2 c -r5 archive.par2 archive.zip archive.json
Result
------
In the end you get something like this:
Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.json
Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.par2
Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol000+01.par2
Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol001+02.par2
Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol003+04.par2
Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol007+08.par2
Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol015+16.par2
Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol031+32.par2
Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol063+37.par2
Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.zip
QNX/QNX/20090229/source.json
QNX/QNX/20090229/source.par2
QNX/QNX/20090229/source.vol000+01.par2
QNX/QNX/20090229/source.vol001+02.par2
QNX/QNX/20090229/source.vol003+04.par2
QNX/QNX/20090229/source.vol007+08.par2
QNX/QNX/20090229/source.vol015+16.par2
QNX/QNX/20090229/source.vol031+32.par2
QNX/QNX/20090229/source.vol063+37.par2
QNX/QNX/20090229/source.zip
0
True
True
True
StockItem
gtk-ok
gtk-ok
1
True
False
False
frmSettings
CenterOnParent
6
6
Database file
0
True
False
False
True
True
●
1
True
True
TextAndIcon
stock:gtk-open Menu
Choose
True
2
True
False
False
0
True
False
False
6
Repository folder
0
True
False
False
True
True
●
1
True
True
TextAndIcon
stock:gtk-open Menu
Choose
True
2
True
False
False
1
True
False
False
6
Temporary folder
0
True
False
False
True
True
●
1
True
True
TextAndIcon
stock:gtk-open Menu
Choose
True
2
True
False
False
2
True
False
False
6
Path to unar
0
True
False
False
True
True
●
1
True
True
TextAndIcon
stock:gtk-open Menu
Choose
True
2
True
False
False
3
True
False
False
6
True
True
StockItem
gtk-cancel
gtk-cancel
0
True
False
False
True
True
StockItem
gtk-apply
gtk-apply
End
1
True
False
False
4
True
False
False