Manifest Format Comparison
This is a comparison of the manifest formats for Mozilla's Open Web Apps and Chrome's Hosted Apps.
|Name||name||name||YES||Mozilla stipulates max length 128 characters|
|Description||description||description||YES||Mozilla stipulates max length 1024 characters|
|Version||version||version||NO||For Chrome this is required, for Mozilla it's optional. Mozilla uses a string, Chrome uses dot-separated integers.|
|Launch URL||launch_path||app.launch.web_url||NO||Mozilla requires a path relative to the app's "origin", Chrome requires an absolute URL beginning with http, https or * (meaning both).|
|URLs||n/a||app.urls||NO||Chrome allows multiple URLs (including wildcards) to form part of the app and be given the permissions required in the manifest. Mozilla hasn't implemented a permissions system yet, but presumably will assign permissions per domain?|
|Icons||icons||icons||YES||Map of sizes to paths. With Chrome icons are uploaded to the apps store, with Mozilla they are served at URLs as part of the app.|
|Developer||developer.name, developer.url||homepage_url||NO||Mozilla allows developers to provide a name and URL which can be used in repositories & dashboards, Chrome does not. Not a huge problem as these are optional fields for Mozilla. Chrome extensions can have a homepage_url which may be supported by apps and could be seen as comparable and is also optional.|
|Locales||locales, default_locale||_locales (directory), default_locale||NO||Mozilla uses a map for localised versions of the data in the manifest, Chrome extensions use subdirectories containing "default strings" for the extension and this may be supported for apps.|
|Installs Allowed From||installs_allowed_from||n/a||NO||Mozilla allows an array of origins allowed to trigger the installation of the app, Chrome does not have an equivalent.|
|Widget/Panel||widget.path, widget.width, widget.height||launch.container, launch.height, launch.width||NO||Mozilla has the concept of "widgets" as a separate abbreviated view of the app, Chrome has the concept of "panels" which is an alternative method for presenting the app itself.|
|Background Page||n/a||background_page||NO||Specifies an HTTPS URL to load in a "background window" in Chrome, not supported by Mozilla.|
|Key||n/a||key||NO||Chrome requires apps to have a public key, Mozilla does not appear to have an equivalent.|
|Minimum Chrome Version||n/a||minimum_chrome_version||NO||Appears to have no use outside of Chrome.|
|Offline Enabled||n/a||offline_enabled||NO||Chrome uses this field to highlight apps that can be used offline when the Internet connection is dropped. Mozilla doesn't have an equivalent.|
|Permissions||n/a||permissions||NO||Mozilla does not yet have a permissions system.|
|Update URL||n/a||update_url||NO||Chrome uses an XML file for auto-updating apps, Mozilla doesn't appear to have an equivalent.|
A manifest file called manifest.json is packaged in a .crx file (a special kind of .zip file) and uploaded to the chrome web store to be served by Google along with icons and other resources.
A manfiest file is recommended to have the extension .webapp and can be served from any web server with Content-Type header of application/x-web-app-manifest+json and is expected to be UTF-8 but other encodings can be specified with a charset parameter. The manifest is expected to respect normal rules for web caching and updates can be handled through the use of the version property.