Workshop report -- WWW5, 6 May 1996

Status: 20/5/96
Program

Programming the Web - a search for APIs

Participants, Keynote, Papers, References, Wrap-up, Comments, Mailing list

Introduction

There is a trend towards replacing monolithic general-purpose Web browsers by more finely-tuned Web applications enhanced with user-specific functionality, such as for example applets that allow for user-interaction or the display of dynamic information.

This raises the issue of what support should be provided for developing such applications. So a workshop was organized for the WWW5 entitled Programming the Web - a search for APIs with the goal of defining requirements for high-level APIs and frameworks for Web programming, and characterizing suitable components for Web-aware applications.

Rationale

The workshop was intended to focus on concepts and requirements for high-level API suitable for developing Web-aware applications. An explicit goal of the workshop was to publish state of the art references to existing APIs.

The papers that were submitted covered a wide range of interests, including computation models, applications and user requirements, software architectures and libraries as well as heuristics and guidelines for API developers.

Computation Models
 [Model],  [DOOWWW],  [CAMEO],  [HIPPO],  [V6]
Applications and Users
 [Meta],  [UOD],  [URA],  [VAPIS],  [VEMMI] ,  [Tele]
Software Architecture
 [W3CReference],  [V6],  [Broker],  [CAMEO],  [DejaVu],  [Jigsaw],  [FastCGI]
Heuristics and Guidelines
 [W3CReference],  [Configure],  [VAPIS]
As can be expected opinions diverged on many of the issues, even the need for APIs to exist at all. To get the flavor of the positions presented by the participants, some of the points put forward are listed below: A summary of the papers can be found together with the list of participants.

Organisation

Apart from a keynote speech, the workshop program consisted of four rounds:
  1. Round 1: Reference libraries -- configuration and composition
  2. Round 2: Objects and abstractions
  3. Round 3: Virtual APIs and Users
  4. Round 4: Objects and more objects
and two discussion sessions
  1. Requirements for APIs
  2. A catalogue of state of the art APIs
The discussions were lively, but did not result in a consensus concerning requirements for APIs. This remains a topic for further discussion. Nevertheless, a wealth of material was presented, some of which is reflected in the catalogue of APIs. This catalogue needs to be extended. Also, what we need is an evaluation of the APIs listed there.

Note: This report reflects my personal view of the workshop and its outcomes. Look at the comments for an assesment from the point of view of the participants.

Keynote -- What is the Web's model of computation?

The keynote was given by Luca Cardelli. As testified by a summary of the main points below (recorded by Dave de Roure) it is not altogether clear what exactly is the Web's model of computation, nor what support should be provided on a language level or API level. See http://www.research.digital.com/SRC/personal/Luca_Cardelli/home.html for more material.
The slides are available at (A4) http://www.research.digital.com/SRC/personal/Luca_Cardelli/Slides/WWW5APITalk.A4.ps
(USLetter) http://www.research.digital.com/SRC/personal/Luca_Cardelli/Slides/WWW5APITalk.ps

In particular, Cardelli's speech made clear that the distinction between API, languages and computation models is not clear cut.

Round 1: Reference libraries - configuration and composition

Frystik Nielsen  [W3CReference] presented an overview of the LibWWW reference library, featuring stream and channels, and offering support for plug-ins. The LibWWW is an application-independent light-weight Web API. Lessons learned from a previous version were that APIs should be layered, open-ended and thread-safe. Robert Thau  [Configure] stressed the importance of configuration. He discussed some of the configuration options available for the Apache server  [Apache]. In particular, configuration through an RPC-like mechanism, or CORBA interface, needs to be studied.

Round 2: Objects and abstractions

A variety of abstractions was presented, all intended to facilitate the development of Web applications. Bernard Lang  [V6] presented the filter composition model underlying the V6 engine, which in a sense eliminates the need for explicit APIs. Mike Spreitzer  [DOOWWW] discussed a language-independent mechanism for the realization of Web applications employing distrubuted object  [ILU]. Finally, Richard Connor  [HIPPO] explored the idea of using persistent objects.

Requirements for APIs

To open the discussion about requirements for APIs, an inventory was presented encompassing complaints about the functionality of the Web, observations concerning its 'nature', general requirements for open systems development, a wish-list of desired behavioral characteristics and potential (technological) answers.
Complaints
Observations
Requirements
Behavior
Answers
It was observed by Mark Brown that requirements could not be stated without an explicit indication of a perspective, that is the kind of application for which the API is intended. In contrast, the  [W3Creference] library makes no such distinction, but tries to provide a platform for a variety of applications.

Round 3: Applications and Users

In contrast to the previous rounds, which were primarily technology-oriented, in this round the focus of attention lay on the needs of particular areas of application. Ian Palmer  [VAPIS] presented an exhaustive overview of APIs for 3D and Virtual Reality applications, and proposed the notion of virtual APIs. Pierre Wellner  [Tele] discussed the requirements APIs should meet to enable resellable services. Thomas Koch  [Meta] discussed the needs for group-aware Web applications. Daniel Mavrakis  [VEMMI] presented a protocol allowing for the integration of Tele-services with the Web. And finally, Mark Brown  [FastCGI] discussed the employment of FastCGI to improve the server-side generation of documents. (See also his comments on the workshop.)

Round 4: Objects and more objects

The last round was devoted to the employment of object technology and interfacing the Web with data repositories. Bastiaan Schönhage  [DejaVu] discussed the Web components of the DejaVu framework. Anselm Baird-Smith  [Jigsaw] presented the design and realization of Jigsaw, a Java-based server. Mala Anand  [Broker] presented Oracle's solution to server-side plug-ins. Finally, replacing Andy Wood  [CAMEO], Benjamin Renaud from the Java Team discussed the new releases of the Java libraries, providing APIs for 2D/3D graphics, security, mobile methods, persistence and database access.

Discussion - What are APIs?

The application areas and solutions, whether object-oriented or not, covered a wide range of interests and did not suggest a canonical approach to the definition and development of APIs. In particular, as has been mentioned before, the somewhat blurry demarcation between computation models, languages and APIs seem to confuse all of us. Moreover, a catalogue of APIs seemed to be beyond our reach.

An attempt to overcome the confusion by restricting ourselves to discussing the requirements for the (future) Java class libraries failed, surprisingly, because the majority felt that the restriction to a particular (!) language was not appropriate.

So the workshop was in danger of being halted, with a number of questions unanswered. What actions should we take in terms of recommendations to the W3C? What perspectives can we (meaningfully) distinguish? And, what (exactly) are our areas of interest? For example, although many of the solutions proposed were object-oriented in spirit, only few were so in the flesh.

Actions
Perspectives
Interests
Nevertheless, we managed to break out of this impasse, by reconsidering what APIs are meant for, the development of Web-aware applications, and we made a start of listing our basic needs.

Basic needs

In the discussion we came up with the following list of basic needs, that is functionality required by application developers:
  1. resolving URLs
  2. authentication of users
  3. communication (and negotiation)
  4. distribution - eg. applets accross sites
  5. security - authentication of network identity
  6. configuration - also the delegation of configuration
  7. billing and payment
  8. application persistence - i.e. states
  9. QOS and QOT demands - e.g. bandwidth
  10. notification and monitoring
An additional need that was mentioned later on is support for multiple (natural) languages, see  [MAITS]. Admittedly, in this list of basic needs, no distinction is made between the various possible perspectives, server-side, client-side, or what have you. The best we can do, as was suggested by Frystik Nielsen, is to gain experience with existing APIs (such as the ones listed in the catalogue and share these with the community.

A catalogue of state of the art APIs

Language support

General

Server-side

Client-side

Conclusions

Conclusions, at this stage, seem to be premature.

Recommendations to W3C

  1. Develop Corba compliant API for LibWWW?
  2. Define formalized object models for the Web?
As concerns (1), the general feeling was that in its current state CORBA does not provide an answer. As an alternative, ILU was mentioned.

Very surprisingly, a vote on (2) resulted in a majority in favor of a more formal approach. However, not in a prescriptive fashion but rather to better understand the nature of the Web and the basic needs of application developers.

Hopefully, this is not the end of the discussion. To the participants, thanks for your contribution. Anton Eliëns

References

Apache
Robert Thau, Design considerations for the Apache Server API, http://www.cs.vu.nl/~eliens/WWW5/papers/extra/Apache.html
ApacheServer
Apache server documentation, http://www.apache.org 1995
Broker
Seshu Adunuthula & Mala Anand, Web Request Broker API, http://www.cs.vu.nl/~eliens/WWW5/papers/Broker.html
CAMEO
Andy Wood, CAMEO: Supporting Observable APIs. http://www.cs.vu.nl/~eliens/WWW5/papers/CAMEO.html
Configure
Robert Thau, API support for Delegating Control over Server Configuration. http://www.cs.vu.nl/~eliens/WWW5/papers/Configure.html
DejaVu
Anton Eliëns, Jacco van Ossenbruggen & Bastiaan Schönhage, The DejaVu framework -- a software architecture for Web http://www.cs.vu.nl/~eliens/WWW5/papers/DejaVu/index.html
DOOWWW
Bill Janssen & Mike Spreitzer, A Distributed-Object-Oriented World Wide Web http://www.cs.vu.nl/~eliens/WWW5/papers/DOOWWW.html
FastCGI
Mark Brown FastCGI: A High-Performance Gateway Interface http://www.cs.vu.nl/~eliens/WWW5/papers/FastCGI.html
HIPPO
Richard Connor HIPPO: High-level Internet Programming with Persistent Objects http://www.cs.vu.nl/~eliens/WWW5/papers/HIPPO.html
Hyperspace
Advanced Interaction Group, Birmingham Hyperspace http://www.cs.bham.ac.uk/~amw/hyperspace/
ISAPI
ISAPI documentation, Microsoft Corporation, in ActiveX Alpha SDK, http://www.msn.com/download/sdk/msactivedk.zip, 1996
Infomaster
Logic Group at Stanford Infomaster http://logic.stanford.edu/ http://infomaster.stanford.edu/
Interactive
Paul Burchard Towards an Interactive Web http://www.cs.princeton.edu/~burchard/www/interactive/embed.html http://www.geom.umn.edu/hypernews/get/interactive/index.html
Jewels
D.L. Parnas Why software jewels are rare IEEE Computer 29(2), 1996, pp.57-60
Jigsaw
Anselm Baird-Smith, Jigsaw, An Object-Oriented Web server http://www.cs.vu.nl/~eliens/WWW5/papers/Jigsaw.html
MAITS
Keld Simonsen Specifications and inplementation of APIs for multilingual telematic services http://www.dkuug.dk/maits/
Meta
Thomas Koch, MetaWeb -- a general purpose interface to shared interactive applications in the World-Wide Web. http://www.cs.vu.nl/~eliens/WWW5/papers/Meta.html
Model
Luca Cardelli, What is the Web's Model of Computation? http://www.cs.vu.nl/~eliens/WWW5/papers/Model.html
NCSA
NCSA server documentation, http://hoohoo.ncsa.uiuc.edu 1995
NSAPI
Netscape server API documentation http://home.netscape.com/newsref/std/server_api.html, 1995 ftp://ftp.netscape.com/server/fasttrack/unix/, 1996
Obliq
Luca Cardelli, Obliq, http://www.research.digital.com/SRC/Obliq/Obliq.html
Tele
Pierre Welner A Web-based API for Teleconferencing ttp://www.cs.vu.nl/~eliens/WWW5/papers/Tele.html
UOD
Joakim Eriksson, Niclas Finne & Sverker Janson, Surfing the market and making sense of the web: Interfacing the web to an open agent-based market infrastructure. http://www.cs.vu.nl/~eliens/WWW5/papers/UOD.html
URA
Leslie L. Daigle & Sandro Mazzucato, Building Specialized Web Services -- Where to Put the API, http://www.cs.vu.nl/~eliens/WWW5/papers/URA.html
V6
Bernard Lang and Fran\147ois Rouaix, The V6 Engine. http://www.cs.vu.nl/~eliens/WWW5/papers/V6/index.html
VAPIS
I.J.Palmer, N.Chilton & R.A.Earnshaw, Web Programming Environments: Towards a Virtual API. http://www.cs.vu.nl/~eliens/WWW5/papers/VAPIS/index.html
VEMMI
Daniel Mavrakis, VEMMI: a new On-line Client/Server Multimedia Protocol for the Internet. http://www.cs.vu.nl/~eliens/WWW5/papers/VEMMI.html
VIM
University of Southhamptoon, The HCM Virtual Multicomputer Project, http://vim.ecs.soton.ac.uk/
WNAPI
WN server documentation, http://hopf.math.nwu.edu, 1995
WVDL
Jon Backy, The WDVL Journal, http://www.stars.com/Spectrum/
W3CActivity
W3C, W3C Activity areas, http://www.w3.org/pub/WWW/Consortium/Prospectus/ActivityList
W3COOP
W3C, WWW and OOP, http://www.w3.org/pub/WWW/OOP/
W3CReference
Henrik Frystyk Nielsen, Libwww API http://www.cs.vu.nl/~eliens/WWW5/papers/W3C.html

eliens@cs.vu.nl