Samiksha Jaiswal (Editor)

Libwww

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Developer(s)
  
Henrik Frystyk Nielsen

Written in
  
C

Development status
  
Inactive

Original author(s)
  
Tim Berners-Lee, Jean-Francois Groff

Initial release
  
1.0, November 1992 (1992-11)

Stable release
  
5.4.1 / 4 December 2006; 10 years ago (2006-12-04)

libwww (Library World Wide Web) is a modular client-side web API for Unix and Windows. It is also the name of the reference implementation of the libwww API.

Contents

It has been used for applications of varying sizes, including web browsers, editors, Internet bots, and batch tools. Pluggable modules provided with libwww add support for HTTP/1.1 with caching, pipelining, POST, Digest Authentication, and deflate.

The purpose of libwww is to serve as a testbed for protocol experiments so that software developers do not have to "reinvent the wheel".

libcurl is considered to be a modern replacement for libwww.

History

In 1991 and 1992, Tim Berners-Lee and a student at CERN named Jean-Francois Groff rewrote various components of the original WorldWideWeb browser for the NeXTstep operating system in portable C code, in order to demonstrate the potential of the World Wide Web. In the beginning libwww was referred to as the Common Library and was not available as a separate product. Before becoming generally available, libwww was integrated in the CERN program library (CERNLIB). In July 1992 the library was ported to DECnet. In the May 1993 World Wide Web Newsletter Berners-Lee announced that the Common Library was now called libwww and was licensed as public domain to encourage the development of web browsers. He initially considered releasing the software under the GNU General Public License, rather than into the public domain, but decided against it due to concerns that large corporations such as IBM would be deterred from using it by the restrictions of the GPL. The rapid early development of the library caused Robert Cailliau problems when integrating it into his MacWWW browser.

From 25 November 1994 (version 2.17) Henrik Frystyk Nielsen was responsible for libwww. On 21 March 1995, with the release of version 3.0, CERN put the full responsibility for libwww on the World Wide Web Consortium (W3C). From 1995 onwards, the Line Mode Browser was no longer released separately, but part of the libwww package.

The W3C created the Arena web browser as a testbed and testing tool for HTML3, CSS, PNG and other features like the libwww, but after beta 3, Arena was replaced by Amaya. On 2 September 2003 the W3C stopped development of the library due a lack of resources, with the expectation that any further development would come from the open source community.

Features

Libwww supports following protocols:

  • file
  • FTP
  • Gopher
  • HTTP 1.1 with a Persistent Cache Manager, pipelining
  • NNTP
  • Telnet
  • WAIS
  • Other features include:

  • TLS and SSL can be used through OpenSSL.
  • gzip compression and decompression through zlib
  • a HTML, RDF, SGML and XML parser and a style sheet manager
  • an integration of a SQL database (using the MySQL) for i.e. web crawlers
  • Libwww supports plug-ins.

    Applications using libwww

    Over 19 applications have used libwww.

  • Agora
  • Arena
  • Amaya
  • Cello
  • CERN httpd server
  • Cygwin
  • Distributed Oceanographic Data Systems with the OPeNDAP
  • GRIF Symposia, a HTML editor
  • Lynx
  • MacWWW
  • Mosaic
  • ROS (Robot Operating System)
  • TkWeb
  • tkWWW
  • WorldWideWeb (later Nexus)
  • Integrated applications in libwww are:

  • Command Line Tool, an application which shows how to use libwww for building simple batch mode tools for accessing the Web.
  • Line Mode Browser, a Spartan web browser.
  • Webbot, a simple application showing how to use libwww for building robots.
  • Mini Server, a small application showing how to implement a server or a proxy using libwww.
  • Criticism

    The developers of libcurl have criticised libwww as being not as portable, not thread-safe and lacking several HTTP authentication types. Neither libcurl nor libwww are lightweight enough for some projects.

    References

    Libwww Wikipedia