Workshop report --
WWW5,
6 May 1996
Status: 20/5/96
Program
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:
- APIs should be layered, open-ended, thread-safe,
platform-independent, ...
- Configuration must be part of API.
- APIs must provide support for monitoring, notification
and triggering.
- APIs should be avoided -- instead filter composition
devices should be used.
- APIs should provide for callbacks, plug-ins, ...
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:
- Round 1:
Reference libraries -- configuration and composition
- Round 2: Objects and abstractions
- Round 3: Virtual APIs and Users
- Round 4: Objects and more objects
and two discussion sessions
- Requirements for APIs
- 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.
- There is concept of "global computation" (eg crawlers) but...
- Web is not uniform (except HTTP)
- Speed of light is finite => mobility a necessity
- Single global structure not enough, view as multiple "global computers"
("intrawebs", maybe non
- HTTP, non-Java-VM) each with some guarantees
- model of computation = language independent model for APIs
+ model on which to base language constructs
- turn web into uniform structure or "program the complexity" (yes)?
- existing programming models don't capture locality
- observables like referential integrity and QoS not in trad. models
- Different languages may be appropriate for different
"global computers" e.g. Telescript, Obliq, Java
- Semantics needed to understand computational assumptions and requirements,
answer important security questions, reason about programs
- Issues: Typing (MIME is a mechanism...?), security, reliability,
modularity, resource management
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
- lack of referential integrity
- undetected failures
- no control over Quality of Service
- Observations
- dynamic quality of services
- complex interaction
- Requirements
- uniformity, openness, flexibility,
orthogonality, layered, platform-independent
- Behavior
- reliable, configurable, monitoring, notification,
triggering, thread-safe
- Answers
- object-oriented, components, virtual APIs, callbacks, plug-ins
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
- Define a distributed model of computation
that suits the Web.
- Define canonical (language-independent?)
object models for ... resources, application domains ...
- Perspectives
- servers - extensions
- browsers - clients, viewers, configuration
- agents - e.g. payment
- Interests
- distributed objects
- plug-in components
- formalization of requirements and solutions
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:
- resolving URLs
- authentication of users
- communication (and negotiation)
- distribution - eg. applets accross sites
- security - authentication of network identity
- configuration - also the delegation of configuration
- billing and payment
- application persistence - i.e. states
- QOS and QOT demands - e.g. bandwidth
- 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
- Develop Corba compliant API for LibWWW?
- 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