ACS Package Manager (APM) v4.0 Requirements

by Bryan Quinn and Todd Nightingale

ACS Documentation : Kernel Overview : APM : Requirements


I. Introduction

The following is a requirements document for the ACS Package Manager (APM), version 4.0 (APM4). APM4 offers a superset of APM v3.3 functionality with the following specific enhancements:

To differentiate these new requirements from the requirements of version 3.3, all requirements new in v4 are prefaced with the number 4.

We gratefully acknowledge the authors of APM 3 for their original design documentation which suggested these features, as well as the influence of the design and open-source implementation of the Red Hat Package manager, the Debian packaging system, and PERL's CPAN in the development of the ideas behind this document.

II. Vision Statement

A typical website will tend to offer its users a number of web-based services or applications, e.g. a bulletin board, calendaring, classified ads, etc. A website may also have underlying subsystems, such as a permissions system, content management system, etc. For such applications and subsystem components, modularity - or the degree to which a component can be encapsulated and decoupled from the rest of the system - is of great value. Thus the ACS Package Manager (APM) was created to allow website components, or packages, to be added, removed, and upgraded easily, with minimum disturbance to the rest of the system. This allows site owners to steadily offer users new and improved services, and also allows programmers to quickly and easily distribute their ACS components in a standardized manner to other ACS sites.

In general terms, a package is a unit of software that serves a single well-defined purpose. The ACS Package Manager (APM) provides a mechanism for packaging, installing, and configuring ACS software in a consistent, user-friendly, and subsite-aware manner.

III. System Overview

The ACS Package Manager (APM) consists of:

IV. Use-cases and User-scenarios

The APM is intended for the following classes of users, which may or may not overlap:
  1. Developers (referred to as 'the developer') use the APM to create a software package for distribution and use the procedural API for direct control of the APM system.
  2. Site-wide administrators (referred to as 'the administrator') use the APM to install packages for their ACS instance, and optionally make them available to sub-sites.
  3. Sub-site administrators (referred to as 'the sub-admin') use an administration interface to configure and enable packages for their sub-site.

Initial Package Development

David Developer writes a piece of software used to do knowledge management (km) for the ACS. He distributes his data model, procedure code, UI pages, and his documentation according to the APM specification. He splits the documentation and the code into sub-packages, and creates a KM installation-chain to install both with the APM developer UI. Noting that his software was built with Patricia Programmer's Super Widget toolkit, he specifies that as a dependency. Moreover, since this package is capable of being used at the sub-site level, David configures this option in the package. When the package development is complete, David uses the APM developer UI to construct a distribution file. He assigns it a version number, 1.0, and makes the package available for download at the ArsDigita package repository.

Initial Package Installation

Annie Admin learns of David's KM system by browsing the ArsDigita package repository. Annie Admin uses the APM administrator UI on her system. She selects to install a package from a URL and types the URL displayed on the system. The APM automatically downloads the package. The dependency checker notices that Patricia's Super Widget toolkit is required, so it warns Annie of this. Annie selects an option to find a package that satisfies the dependency at the ArsDigita APM repository. The APM informs Annie that it can download and install Jim's Super Widget toolkit. Annie confirms this option. After successfully installing Jim's toolkit, Annie proceeds to install David's KM system. The data model is loaded and all of the files necessary for the software are installed. Because installation was successful, the package is available for use.

Since the package is available for use, its initialization routines are set to run automatically on server startup. Annie is warned that since there are initialization routines, she must restart the server for the package to be ready for use. Annie restarts the server.

Initial Subsite Use of Package

Annie Admin decides to make the KM module available only to a particular sub-site type on her ACS system, and not others. She specifies this option using the Sub-site type UI (not part of APM).

Annie Admin notifies Sally SubAdmin by e-mail that a new package is now available for use. Sally goes to her sub-site /admin page and sees that a new entry, KM, is available. Sally clicks on it and finds links to the installed KM documentation and to the web based configuration utility. Then, Sally configures the package using an automatically generated web interface and enables KM for use on her sub-site. After some initial use of the package, Sally decides to change some parameters using the SubAdmin UI. These changes take effect immediately, without any server restarts.

Upgrade Process

Sally SubAdmin finds a bug in the KM system and sends a report to David Developer. David reads the bug report and verifies that the bugs are present in the current version. Because the bugs are present in the shared procedure file, David assigns a watch to the file. David makes the necessary modifications to the source code and saves the file. Because a watch was assigned to the file, the APM automatically reloads the updated code. David tests the program and confirms that the bug is fixed. He increments the minor version number and makes km v 1.1 available for download at the repository.

Sally SubAdmin asks Annie Administrator to upgrade the package using the APM UI. This upgrade supersedes the old version of KM at the site-wide level. Once Annie upgrades the package, the new version starts working immediately in Sally's sub-site.

Procedural API

Danielle Developer wants her software to perform different actions depending on what version of another package is installed. She uses the APM procedural API to check if KM version 1.0 is installed or version 1.1. Based on the results of this procedural call, the software exhibits different behavior.

VI.A Requirements: Data Model

VI.B Requirements: API

The API for APM v3 is explicitly a private API. However, it would be useful to obtain information from the APM through a procedural API. Implementing the API specified below is quite easy given that there are pages that already do all of the below in raw SQL.

VI.C Requirements: Security

Provisions will be made to assure that packages are securely identified.

VI.D Requirements: The User Interface

The user interface is a set of HTML pages that are used to drive the underlying API. It is restricted to site-wide administrators because the actions taken here can dramatically affect the state of the running ACS.

VI.E Requirements: The Developer's Interface

The intent of the developer's interface is to enable the developer to construct and maintain APM packages. It will be possible to disable the developer's interface for production sites to help reduce the chance of site failure; much of the functionality here can have cascading effects throughout the ACS and should not be used on a production site.

VI.F Requirements: The Site-Wide Administrator's Interface

The requirement of the administrator's interface is to enable the administrator to install, enable, upgrade, disable, deinstall, and delete packages.

VI.G Requirements: The Sub-Site Administrator's Interface

If the developer is in charge of creating packages and the administrator for installing them, then the sub-site administrator is responsible for configuring and enabling packages. In order for a package to be available for a sub-site it must be associated with the sub-site's type specification. This interface is part of the sub-site /admin interface.

VII. Implementation notes

Despite the fact that requirements are meant to be design/implementation neutral, the following thoughts were in our head when specifying these requirements. You must be familiar with the new object design for this to be comprehensible.

When a package is installed system-wide, a corresponding acs_object_type is created for it. All parameters registered for the package are registered for that acs_object_type.

When a package instance is created, it is an acs_object. Its parameters are set using the acs_attribute_values table. The automatic web interface for setting package parameters should be one and the same with the interface for setting acs object attribute values. Consequently, the implementation of these features should be quite straightforward.

VIII. Revision History

Document Revision # Action Taken, Notes When? By Whom?
0.1 Creation 8/10/2000 Bryan Quinn, Todd Nightingale
  Reviewed 8/11/2000 John Prevost, Mark Thomas, and Pete Su
0.2 Revised and updated 8/12/2000 Bryan Quinn
0.3 Reviewed, revised, and updated - conforms to requirements template. 8/18/2000 Kai Wu
0.4 Minor edits before ACS 4 Beta. 9/30/2000 Kai Wu

acs-docs@arsdigita.com
Last modified: requirements.html,v 1.2 2001/02/26 20:41:04 bquinn Exp