Network Working Group T. Clarke Internet-Draft BATC Expires: February 1, 2009 July 31, 2008 Application Extension Bundle (AEB) draft-tclarke-aeb-00 Status of this Memo By submitting this Internet-Draft, each author represents that any applicable patent or other IPR claims of which he or she is aware have been or will be disclosed, and any of which he or she becomes aware will be disclosed, in accordance with Section 6 of BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This Internet-Draft will expire on February 1, 2009. Clarke Expires February 1, 2009 [Page 1] Internet-Draft AEB July 2008 Abstract This memo presents a file format for describing an application extension bundle. An application extension bundle, otherwise know as an add-on, extension, plug-in, suite, or package, is an encapsalation of all the data needed to add functionality to a plug-in based application. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Relationship to XPI . . . . . . . . . . . . . . . . . . . 3 2. File Format . . . . . . . . . . . . . . . . . . . . . . . . . 4 3. Required Files and Directories . . . . . . . . . . . . . . . . 5 3.1. /content . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.2. /platform . . . . . . . . . . . . . . . . . . . . . . . . 5 3.3. /icon . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.4. /license . . . . . . . . . . . . . . . . . . . . . . . . . 5 4. Multiple item AEB . . . . . . . . . . . . . . . . . . . . . . 6 5. Failure to Install . . . . . . . . . . . . . . . . . . . . . . 7 6. Shared Files . . . . . . . . . . . . . . . . . . . . . . . . . 8 7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 10 Intellectual Property and Copyright Statements . . . . . . . . . . 11 Clarke Expires February 1, 2009 [Page 2] Internet-Draft AEB July 2008 1. Introduction An application extension bundle (AEB) encapsulates all the data required to extend an application. Often refered to as a plug-in or add-on, an AEB is a specific format designed to be application and platform agnostic. AEB defines common file formats and directory layouts. Extension and specification points are defined by a target application. 1.1. Relationship to XPI The AEB format is based on the XPI format used by the Mozilla XPInstall [refs.XPInstall] addon system. XPI is a compelling format containing much of the metadata and encapsulation information needed for an AEB. However, the XPI format is tightly coupled to the Mozilla project and the description documents often refer to specific XPI engine implementation details. AEB standardizes XPI and removes the Mozilla specific details. The original version of AEB is nearly an exact copy of the XPI format with minor changes and clarifications. AEB should, however, be considered a fork of XPI and further changes to XPI may not be reflected in AEB. Clarke Expires February 1, 2009 [Page 3] Internet-Draft AEB July 2008 2. File Format An AEB is a ZIP archive [refs.zip] containing AEB specific files and target application files. The AEB specific files within the ZIP must use commonly compatible ZIP options. Since ZIP is a defacto standard, the features which are commonly compatible are not explicitly stated here but can be determined by a survey of available ZIP libraries. The version of the published ZIP specification at the time this document was written is 6.3.2. Optional compression algorithms and ZIP file extensions may be supported by a target application for target application specific files. An AEB may also exist as a directory hierarchy on a file system or file system-like service. (such as an FTP site) This is intended for use while devoloping an AEB. An AEB should be deployed as a ZIP archive. The file extension of an AEB ZIP archive must be .aeb unless a particular system does not support file extensions. When an AEB is associated with a MIME type (such as when served by an HTTP server) the MIME type should be application/x-aeb. The MIME type may be application/ zip or application/octet-stream. A target application may impose additional file extension and MIME type restrictions. (for example, .myapp.app and application/x-aeb+x-myapp) A target application imposing additional restrictions may only require those restrictions on AEBs targetting only the target application. An AEB with multiple target applications must use only the restrictions in this document. A target application should always accept files meeting only the restrictions in this document. Clarke Expires February 1, 2009 [Page 4] Internet-Draft AEB July 2008 3. Required Files and Directories Every AEB must contain an install manifest in /install.rdf. This file contains a AEB metadata written in the application extension bundle description language (AEBL) [refs.aebl]. This file shall be serialized in RDF+XML format. The root directory may also contain the following directories. 3.1. /content This contains most of the AEBs extension files. The contents of this directory are specific to a target application but generally contain files which will be installed in the target application. 3.2. /platform The /platform directory may contain sub-directories for each platform declared in the install.rdf file. The contents of the sub-directory corresponding to the current platform are unioned with the /content directory. If both directories contain a specific file, the /platform directory takes precedence. Not all platforms declared in the install.rdf file require a /platform directory. 3.3. /icon This directory generally contains icon files referenced in the install.rdf file. These should not be installed by the target application. 3.4. /license This directory generally contains license files referenced in the install.rdf file. There should not be installed by the target application. Clarke Expires February 1, 2009 [Page 5] Internet-Draft AEB July 2008 4. Multiple item AEB An AEB may contain multiple AEB archives if the multiple item AEB type is specified in the install.rdf file. The /content and /platform directories should contain only files with the .aeb extension. These must be AEB ZIP archives. AEB archives in the /content directory shall be installed on all platforms and AEB archives in a sub-directory of /platform shall be installed on that platform. The installation order may be arbitrary but a target application may define a specific order. Failure to install any AEB archive in a multiple item AEB shall result in failure to install the entire multiple item AEB. Clarke Expires February 1, 2009 [Page 6] Internet-Draft AEB July 2008 5. Failure to Install Installation of an AEB shall be an atomic operation. Failure to install an AEB shall remove a partially installed AEB. Clarke Expires February 1, 2009 [Page 7] Internet-Draft AEB July 2008 6. Shared Files If an AEB request installation of a resource which is already present in the target application, the resource should be reference counted. When an AEB with a shared resource (a resource with a reference count greater than one) should only remove the resource if decrementing the reference count yields a new reference count of zero. Clarke Expires February 1, 2009 [Page 8] Internet-Draft AEB July 2008 7. References [refs.aebl] Clarke, T., "Application Extension Bundle description Language (AEBL)", I-D draft-tclarke-aebl-00, July 2008. [refs.XPInstall] "Mozilla XPInstall", . [refs.zip] ".ZIP File Format Specification", . Clarke Expires February 1, 2009 [Page 9] Internet-Draft AEB July 2008 Author's Address Trevor R H Clarke Ball Aerospace & Technologies Corp. 2875 Presidential Dr. Fairborn, OH 45324 US Phone: +1 937 320 7087 Email: tclarke@ball.com URI: http://www.ballforge.net/ Clarke Expires February 1, 2009 [Page 10] Internet-Draft AEB July 2008 Full Copyright Statement Copyright (C) The IETF Trust (2008). This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights. This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Intellectual Property The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79. Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr. The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org. Clarke Expires February 1, 2009 [Page 11]