# W3C Reference Library Position Statement

The success of the Web has put very high demands on the efficiency and reliability by which people can exchange information. HTTP has been one of the main vehicles behind the success and has changed significantly in the last six years to keep up with the evolution. W3C is playing an active role in the design and development of HTTP and an important part of this work is to test out new ideas and features in real applications.

The purpose of libwww is to provide an environment for experimenting with extensions and new features - most notably for HTTP but also for many other parts of the Web. The focus of libwww is mostly client side applications like robots and browsers but it can also be used as a basis for server and proxy applications. Libwww is part of the W3C Architecture area and contains reference code for HTTP clients and for other Internet protocols such as FTP, Gopher, News, WAIS, Telnet servers. It has a rudimentary HTML parser which can only do the very basics but please have a look at the Amaya Web client for a full-blown HTML browser/editor application.

## History

Libwww has been part of the World Wide Web almost from the beginning. Tim Berners-Lee designed and implemented the first version back in November 1992 in order to demonstrate the Web model. Many people have picked up the Library and used it in a variety of contexts. Applications such as Lou Montulli's Lynx character based client, Mosaic Web browser by Marc Andreesen and Eric Bena, and the CERN server by Ari Luotonen were all based on later versions of libwww. Later on, applications like the Arena browser by Dave Raggett and Håkon W. have been added to the list.

## Current Status

Libwww is freely available under W3C copyright for use by anyone. The distribution package contains a set of example applications spanning from very simple ones to more advanced ones like a robot, and a text based Web client. It also has a DejaGNU test kit for testing libwww internals and a high-level interface to Tcl.

With version 5.0 of libwww which was released September 10 1996, the status of libwww has changed from generic Web toolkit for writing applications to playground for experimenting with HTTP. The reason for this is that the need for a generic Web API written in basic C has changed and we are now more focused on how to improve HTTP than to provide a generic Web API.

## Recent Accomplishments

Version 5.0 released September 10
  The focus for version 5.0 was to provide a set of higher level, application specific APIs for accessing the Web. The Library contains a significantly improved interface for easy access to the Web through a large set of functions specialized to perform certain Web operations like `PUT`, `POST`, `DELETE`, GET and `HEAD`. Libwww contains a full HTTP/1.1 compliant client implementation including persistent connections, two-way PUT, the host header and many other features.
Web API Presentation at WWW5
  The libwww API was presented at the "Programming the Web - a search for APIs" workshop in connection with the 5th World Wide Web conference in Paris. The libwww position paper presented at the workshop discusses the basic requirements of a generic Web API and the lessons learned from the development of the libwww API. The most important requirement that we see today is that the Web must move towards language independent, formalized APIs. Only by doing this can we ensure that the APIs can keep up with the Web explosion which does not show signs of slowing down. W3C sees the development of generic and open Web APIs as an essential part of building new generations of Web applications and takes an active role in focusing efforts towards this goal.

## What is the Next Step?

With the release of version 5.0, libwww will not be released bi-annually as for previous versions. Instead, libwww will be used for extensive experimentation with new features in HTTP and for gathering data with new protocols like W3Mux. We are also actively looking into how the experiences from building the libwww API fits into the paradigm of mobile code being an important part of the Web model. Especially, we are looking to integration between libwww and ILU and also how we can integrate libwww with other languages such as Tcl and Java. For a specific list of new features, please look at the Library work list for libwww.

Enter your e-mail address to receive e-mail (courtesy of NetMind) when this page is updated: