Copyright © 2006 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and document use rules apply.
This document specifies the design goals and requirements for packaging web applications.
should we focus just on client-side web apps? or on server-side web apps too?
Coming soon...
Application Packaging is the process of bundling an application and its resources into an archive format (eg. a .zip
file) for the purpose of distribution and deployment.
A package bundle usually includes a manifest, which is a set of instructions that tell a host runtime environment
how to install and run the packaged application. Application packaging is
used on both the server-side, as is the case with Sun's JEE .war
files and .ear
files and Microsoft's .NET .cab
files,
and on the client-side, as is the case with widgets such as those distributed by Apple, Opera, Yahoo! and Microsoft.
Currently, there is no standardized way to package an application for distribution and deployment on the web. Each vendor has come up with their own solution to what is essentially the same problem (see Appendix). The working group hopes that by standardising application packaging developers will be able to distribute and deploy their applications across a variety of platforms in a standardized manner that is both easy to use and device independent.
When it comes to web distribution, a typical application package consists of four parts:
application/x-opera-widgets
MIME type.config.xml
file.This document calls for the standardization of:
This section describes the design goals that the working group will follow in standardising the packaging file format and the manifest file and language used by web applications. The requirements outlined in section 3.1 and 3.2 are directly derived from the following design goals:
This section describes the requirements that the working group feels are essential to having an effective packaging format and manifest language. These requirements are directly motivated by the design goals.
This section lists the requirements of the packaging format.
When delivered over the web, the package format should be sent with a standardized MIME type. MIME types allow user-agents to associate the package with the appropriate runtime environment.
Packaging format must have a consistent file extension. When a MIME type is not present, the operating system may use the file extension to associate the package with the appropriate host runtime environment.
The packaging format must be one that is implemented that has been widely implement on current platforms. It must also be supported by current user-agents, runtimes, and the operating systems on which users are developing web applications.
Packaging format must already be suitable for global delivery and use.
Packaging format must support directory structures and long file names.
Packaging format may support data compression to make packages smaller.
Packaging format must be suitable for delivery onto many devices, particularly web-enabled mobile phones.
Packaging format must include a manifest file. The file name given to a manifest file must be standardized.
This section describes the requirements of the manifest.
The manifest must declare metadata about the application that is relavant to end-users, other developers, and the host runtime environment. This may include the application's name, version, a unique identifier, copyright notice, publication date, etc.
The manifest should allow a user to record information about the authorship of the application. This may include details like the name, email, and URL of the people that created the application.
The manifest should reference a file that host runtime environment can use as the initial user interface.
The manifest should allow developers to reference alternative representations of the web application. Alternatives could include a set of images, animations, or sounds that represent the application in different states.
The manifest must provide a means for developers to declare properties.
The manifest may provide a means for developers to declare their intentions to access networked resources.
The manifest may provide a means for developers to declare how localized content is stored.
The manifest must provide support for Unicode and other character sets.
The manifest must make use of XML syntax.
Application | Container Format | Extension | MIME | Manifest Format | Manifest Extension | UI Markup | Host Runtime | Localization Strategy | Security Model |
---|---|---|---|---|---|---|---|---|---|
Application | Container Format | Extension | MIME | Manifest Format | Manifest Extension | UI Markup | Runtime | Localization strategy | Security Model |
Yahoo! Widgets | Zip, proprietary flat-file | .widget | application/vnd.yahoo.widget |
Proprietary XML [x] | *.kon | Proprietary XML format | Yahoo! Widget Engine | Directory-based+JS | Manifest |
Microsoft Sidebar Gadgets | Zip, Cab, folder | .gadget | application/x-windows-gadget |
Proprietary XML [x] | gadget.xml | HTML+CSS | Internet Explorer | Directory-based+JS | Browser |
Google Desktop Gadgets | Zip | .gg | app/gg |
Proprietary XML [x] | gadget.gmanifest | Proprietary XML language | Google Desktop sidebar | Directory-based+JS | ? |
Opera Widgets | Zip | .wdgt | application/x-opera-widgets |
Proprietary XML[5] | config.xml | See [x] | Opera | undefined | Manifest+Browser |
Apple Dashboard Widgets | Zip,bundle | .wdgt.zip | application/x-macbinary |
Proprietary XML[6] | info.plist | XHTML+CSS | Safari/WebKit+Quartz | Directory-based + JS | Access Keys |