From fielding@kiwi.ICS.UCI.EDU Mon Jun  9 13:30:50 1997
Received: from ics.uci.edu by paris.ics.uci.edu id aa03253; 9 Jun 97 13:30 PDT
Received: from binky.ics.uci.edu by q2.ics.uci.edu id aa13822;
          9 Jun 97 13:30 PDT
Received: from ics.uci.edu by binky.ics.uci.edu id aa20377; 9 Jun 97 13:30 PDT
Received: from paris.ics.uci.edu by binky.ics.uci.edu id aa20373;
          9 Jun 97 13:30 PDT
Received: from paris.ics.uci.edu by paris.ics.uci.edu id aa02929;
          9 Jun 97 13:26 PDT
Received: from kiwi.ics.uci.edu by paris.ics.uci.edu id aa02906;
          9 Jun 97 13:26 PDT
To: libwww-ada95@ics.uci.edu
Subject: About the libwww-ada95@ics.uci.edu mailing list
Date: Mon, 09 Jun 1997 13:25:59 -0700
From: "Roy T. Fielding" <fielding@kiwi.ICS.UCI.EDU>
Message-ID: <9706091326.aa02906@paris.ics.uci.edu>
Reply-To: libwww-ada95@ics.uci.edu
X-Mailing-List: <libwww-ada95@ics.uci.edu> archive/1997/1
X-Loop: libwww-ada95@ics.uci.edu
Precedence: list
Errors-To: libwww-ada95-request@ics.uci.edu
Sender: libwww-ada95-request@ics.uci.edu


Introduction
============

This mailing list has been established for technical discussion about
libwww-ada95, including problem reports, interim fixes, suggestions
for features, and contributions. The mailing list address is 

       libwww-ada95@ics.uci.edu

and administrivia [including (un)subscribe requests] should be sent to 

       libwww-ada95-request@ics.uci.edu

There is also a Hypermail Archive of the mailing list at

       <http://www.ics.uci.edu/pub/websoft/libwww-ada95/hypermail/>


What is libwww-ada95?
=====================

libwww-ada95 is a library of Ada95 packages which provides a simple
and consistent programming interface (client library) to the World Wide Web. 
libwww-ada95 is NOT a CGI library, though some parts of it could be
used within CGI applications.  More information about the library can
be found at:

       <http://www.ics.uci.edu/pub/websoft/libwww-ada95/>
        <ftp://ftp.ics.uci.edu/pub/websoft/libwww-ada95/>

libwww-ada95 is still in development and has not been publically released.

The purpose of this mailing list
================================

This mailing list provides a forum for all developers to communicate
their ideas, problems, suggestions, and contributions with each other
in a timely fashion.  It also provides a mechanism for recording those
discussions so that others can join in development at a later time and
learn from the past.


What is appropriate discussion for this mailing list?
=====================================================

This list is NOT for discussion of general Ada95 or WWW or CGI issues.
It is ONLY for discussion about the libwww-ada95 library and the things
that are needed to implement the library.

The first priority is problem reports!  If anyone finds a bug (or what
they think is a bug), report it to the list so that we can all (or at
least all those affected by the bug) examine and discuss it.  Also,
once a solution (or many solutions) is found, send that to the list as
well so that all the others can stop looking.

The second priority is new contributions (i.e. stuff that you think
should be added to the "official" release).  All contributed source
code must be either Public Domain or distributable under the libwww-ada95
LICENSE.  Copyright is retained by the original author (as is always
true).  Where appropriate, attempts are made to identify the original
author both in the code and the release documentation.

Contributions of documentation are also strongly encouraged -- this
would be a great project for a Technical Writing class.  ;-)

Note that not all contributions will make it into the "official"
release.  Contributed-but-not-released software is available on the
Hypermail Archive (see above).

Also, feel free to send useful information which you DO NOT want to be
included in the "official" release -- just be sure to mark them as such.

If you are working on a project of general usefulness, let everyone else
know about it.  Sharing and exchanging ideas is the best way to build a
quality product, and the time lost talking about it is almost always
regained through the insight of others and the additional insight you
yourself gain by describing an idea such that others can understand it.

Also, if you have a need for some service which is not provided by the
library, let us all know -- someone may be looking for a new project
and is just lacking the initial impetus.

Ah, and finally, never forget to keep your sense of humor.  If people say
something which sounds a bit odd, you can probably attribute it to the
strange customs of our native country and not any intention to offend.
I'm half-Yank (USA) and half-Kiwi (NZ) myself, so I'm allowed to say
twice as many odd things.  Don't forget that others on this mailing list
may be from anywhere on the Internet.


 ....Roy T. Fielding  Department of ICS, University of California, Irvine USA
                      (fielding@ics.uci.edu) (libwww-ada95-request@ics.uci.edu)
                      <http://www.ics.uci.edu/~fielding/>


From fielding@kiwi.ICS.UCI.EDU Tue Jun 10 16:43:07 1997
Received: from ics.uci.edu by paris.ics.uci.edu id aa00428; 10 Jun 97 16:43 PDT
Received: from binky.ics.uci.edu by q2.ics.uci.edu id ai01024;
          10 Jun 97 16:43 PDT
Received: from ics.uci.edu by binky.ics.uci.edu id aa13845; 10 Jun 97 10:22 PDT
Received: from paris.ics.uci.edu by binky.ics.uci.edu id aa13840;
          10 Jun 97 10:22 PDT
Received: from paris.ics.uci.edu by paris.ics.uci.edu id aa13977;
          10 Jun 97 10:20 PDT
Received: from kiwi.ics.uci.edu by paris.ics.uci.edu id aa13947;
          10 Jun 97 10:20 PDT
To: libwww-ada95@kiwi.ICS.UCI.EDU
Subject: summary of netnews for Ada95 stream/socket binding
Date: Tue, 10 Jun 1997 10:20:45 -0700
From: "Roy T. Fielding" <fielding@kiwi.ICS.UCI.EDU>
Message-ID: <9706101020.aa13947@paris.ics.uci.edu>
Reply-To: libwww-ada95@ics.uci.edu
X-Mailing-List: <libwww-ada95@ics.uci.edu> archive/1997/2
X-Loop: libwww-ada95@ics.uci.edu
Precedence: list
Errors-To: libwww-ada95-request@ics.uci.edu
Sender: libwww-ada95-request@ics.uci.edu

I asked about network bindings on comp.lang.ada.  It turns out that
another person asked a similar question the day before I did, so here
is a summary of the responses to both.

[I've added some editorial comments in brackets].

=================================================================
From: Ken Raeburn <raeburn@cygnus.com>
Subject: q: pkg for network/UNIX programming; system dependencies
Date: 29 May 1997 23:16:44 -0400
Organization: Cygnus Support, Cambridge MA
Message-ID: <tx1bu5ttzs3.fsf@cygnus.com>

I'm thinking about working on a couple small spare-time UNIX projects in
Ada95 to help familiarize myself with the language.  Most such projects
I'm considering right now make use of networking, both TCP and UDP.

I'm looking for a package to help me deal with UNIX system-defined types,
socket- and network-related types and functionality, domain name service,
etc.  I've looked at the "paradise" package, which seems to have some of
what I want, but the latest version I could find is about 3 years old,
only works on SunOS and HP-UX and with three specific compilers (none of
which is GNAT), and is specifically conditionalized in various places for
those systems and compilers.  If that's the closest thing available, I'll
go with it; I just wanted to know if there's anything else.

[...]

[This is interesting, since Cygnus does Gnu support and thus would
 be a good candidate to take over support for libwww-ada95...Roy]

=================================================================
From: Corey Minyard <minyard@acm.org>
Newsgroups: comp.lang.ada
Subject: Re: q: pkg for network/UNIX programming; system dependencies
Date: Fri, 30 May 1997 14:33:00 GMT
Organization: Wonderforce Research
Message-ID: <m2d8q9do83.fsf@acm.org>

I have a port of the forest-1.4 library (it compiles without error
under GNAT 3.09) with some limited Berkeley socket bindings at
http://www.concentric.net/~Minyard.  I understand that the standard
forest library is not as extensive as paradise, but I have never used
paradise.  The socket stuff I wrote is pretty limited, and I'm not an
Ada95 guru, so if anyone wants to take it and work on it, feel free.

[...]

[I looked at it and it is indeed limited.  I don't like how it is tied
 to forest (a huge and outdated POSIX library)....Roy]

=================================================================
From: "W. Wesley Groleau (Wes)" <wwgrol@pseserv6.fw.hac.com>
Subject: Re: q: pkg for network/UNIX programming; system dependencies
Message-ID: <338F3177.1A04@pseserv6.fw.hac.com>
Organization: Hughes Defense Communications
Date: Fri, 30 May 1997 19:58:47 GMT

> I have a port of the forest-1.4 library (it compiles without error
> under GNAT 3.09) with some limited Berkeley socket bindings at
> http://www.concentric.net/~Minyard.  ......

FLORIST (Florida State upgrade to FOREST) might also help.

[I grabbed FLORIST from <http://www.cs.fsu.edu/~baker/projects.html>
 but it is a huge POSIX binding, with no socket support....Roy]

=================================================================
From: jsa@alexandria (Jon S Anthony)
Subject: Re: q: pkg for network/UNIX programming; system dependencies
Date: 30 May 1997 22:59:34 GMT
Organization: PSI Public Usenet Link
Message-ID: <JSA.97May30185934@alexandria>

Why not use GLADE or ADEPT?  Both of these work with GNAT and give you
full distributed object style capabilities (per the DSA of Ada95).
ADEPT also gives you RMI interaction.

ADEPT: http://www.cs.tamu.edu/research/ADEPT/

GLADE: ftp.gnat.com:pub/gnat

[The Distributed Systems Annex (DSA) is for running parallelized programs
 across multiple systems.  Both of these DSA libraries have a binding to
 an RPC mechanism, but it would take some work to extract just a simple
 binding to sockets from them....Roy]

=================================================================
From: Rolf Ebert <re@waporo.muc.de>
Subject: Re: looking for network streams binding
Date: Sun, 1 Jun 1997 15:52:46 +0200
Message-ID: <m23er2qvkh.fsf@waporo.muc.de>

RTF> I am looking for a freeware library or set of packages for binding
RTF> Ada95 to TCP/IP network streams (or even plain sockets).  I have
RTF> checked the usual archives, to no avail.  The purpose is to provide
RTF> a native interface for Ada95 clients using HTTP requests, with
RTF> message retrieval, parsing, and processing using concurrent
RTF> threads.

I'd like to see something like the above myself.  Same experience,  I
could not find anything.  There are minimal bindings to sockets in
forest-1.4 (kind of POSIX binding), but nothing more.

RTF> It needs to be something I can redistribute (eventually) for free.
RTF> OTOH, I'd be willing to help coordinate a collaborative effort,
RTF> similar to what I have already done for libwww-perl and Apache.

I already thought about that, too.  I really like the way Perl packages
are organized and maintained.  Something similar should be established
for Ada as well.  If you are going to write an Ada version of
libwww-perl, please keep me informed.

In my limited spare time, I prefer to maintain the Emacs Ada mode.
Perhaps you can change my mind.

        Rolf
=================================================================
From: karl@grebyn.com
Subject: Re: looking for network streams binding
Date: Mon, 2 Jun 97 18:13:29 EDT
Message-Id: <9706022213.AA27657@numbers.grebyn.com>
Organization: Grebyn Corporation

There's Paradise and a couple others.  You might even look into the ACE C++
stuff from wustl as a possibility (either as paradigm or binding).  I also
thought there was some Ada CGI stuff around someplace (part of WebAda) -
that might be a worthwhile starting place.  Let me know if you want any of
that stuff and can't find it elsewhere.

[Paradise is ancient.  ACE was done by Doug Schmidt (former UCI dude),
 but it is much too complicated for our purposes.  The Ada CGI stuff
 does exist, but it has no relation to a WWW client library (CGI
 communication is through stdin/stdout)....Roy]

=================================================================

In summary, there is no suitable binding available -- we'll have to
create our own.  However, it looks like there are a few people that
might be willing to help build and test the library.  Once we get the
initial design done and some notion of the scope, I'll see if they'd
like to join the mailing list.

In the mean time, it looks like W3C libwww now has a clean objective-C'ish
binding to streams, so we may be able to use that as a guide.  Docs are
available at <http://www.w3.org/Library/User/Architecture/Streams.html>.

....Roy


From fielding@kiwi.ICS.UCI.EDU Fri Jun 20 20:31:57 1997
Received: from ics.uci.edu by paris.ics.uci.edu id aa11728; 20 Jun 97 20:31 PDT
Received: from binky.ics.uci.edu by q2.ics.uci.edu id aa11384;
          20 Jun 97 20:31 PDT
Received: from ics.uci.edu by binky.ics.uci.edu id aa27818; 20 Jun 97 20:31 PDT
Received: from paris.ics.uci.edu by binky.ics.uci.edu id aa27814;
          20 Jun 97 20:31 PDT
Received: from paris.ics.uci.edu by paris.ics.uci.edu id aa11712;
          20 Jun 97 20:31 PDT
Received: from kiwi.ics.uci.edu by paris.ics.uci.edu id aa11692;
          20 Jun 97 20:31 PDT
To: libwww-ada95@ics.uci.edu
Subject: Re: GNAT and streams interfaces 
In-reply-to: Your message of "Fri, 20 Jun 1997 13:37:39 PDT."
             <6746.866839059@elysees.ics.uci.edu> 
Date: Fri, 20 Jun 1997 20:28:29 -0700
From: "Roy T. Fielding" <fielding@kiwi.ICS.UCI.EDU>
Message-ID: <9706202031.aa11692@paris.ics.uci.edu>
Reply-To: libwww-ada95@ics.uci.edu
X-Mailing-List: <libwww-ada95@ics.uci.edu> archive/1997/3
X-Loop: libwww-ada95@ics.uci.edu
Precedence: list
Errors-To: libwww-ada95-request@ics.uci.edu
Sender: libwww-ada95-request@ics.uci.edu

Unfortunately, this seems to be another case where the same word (streams)
is used in too many different ways.  I've been looking through this
stuff and it appears their are three different uses:

   Ada streams: (a-stream.ads)
     A mechanism for reading and writing Ada objects and data structures
     to/from persistent storage.  This is essentially providing methods
     for linearizing a data structure into a byte stream such that the
     typing information is not lost.  Subclassing Ada.streams
     allows you to write/read the object to/from a C stream.

   C streams: (i-cstrea.ads)
     Basically, what most people call standard IO.  Operations for
     buffered reads/writes to Unix file descriptors.  We could use
     these for writing to a socket, but only after the socket is
     bound to a file descriptor.

   Unix streams:
     A set of kernel mechanisms that support the  development  of
     network services and data communication drivers.  It defines
     interface standards for character  input/output  within  the
     kernel and between the kernel and user level processes.  The
     STREAMS mechanism is composed of  utility  routines,  kernel
     facilities and a set of data structures.

     A stream is  a  full-duplex  data  path  within  the  kernel
     between  a  user  process  and driver routines.  The primary
     components are a stream head, a  driver  and  zero  or  more
     modules  between  the  stream  head and driver.  A stream is
     analogous to a shell pipeline except that data flow and pro-
     cessing are bidirectional.

     In a stream, the stream head is the end of the  stream  that
     provides  the  interface  between the stream and a user pro-
     cess.  The principle functions of the stream head  are  pro-
     cessing  STREAMS-related  system calls, and passing data and
     information between a user process and the stream.

     I am still looking for better docs on Unix streams (the above is
     from `man -s 2 intro`).  See also the man pages for getmsg() and
     putmsg().

What we want is a library interface for handling Unix streams.  I have
downloaded the Ada DSA for GNAT called GLADE which seems to include an
RPC interface to TCP/IP, but from reading the documentation it would
seem to be designed as Unix streams (or at least that is the impression
I get from their description of "channels", which is almost identical to
the W3C library's use of channels).  I'll have to look further into the
code before I can tell what it actually is using.  If we are extremely
lucky (unlikely), we might be able to use a subset of the Garlic library
rather than invent our own.

Anyway, all this stuff (currently GNAT 3.09) is installed under the
"extra" directory in our group account.

.....Roy


From fielding@kiwi.ICS.UCI.EDU Mon Jun 23 11:28:12 1997
Received: from ics.uci.edu by paris.ics.uci.edu id aa27869; 23 Jun 97 11:28 PDT
Received: from binky.ics.uci.edu by q2.ics.uci.edu id aa09481;
          23 Jun 97 11:28 PDT
Received: from ics.uci.edu by binky.ics.uci.edu id aa10009; 23 Jun 97 11:28 PDT
Received: from paris.ics.uci.edu by binky.ics.uci.edu id aa10005;
          23 Jun 97 11:27 PDT
Received: from paris.ics.uci.edu by paris.ics.uci.edu id aa27693;
          23 Jun 97 11:25 PDT
Received: from kiwi.ics.uci.edu by paris.ics.uci.edu id aa27673;
          23 Jun 97 11:24 PDT
To: libwww-ada95@kiwi.ICS.UCI.EDU
Subject: TCP/socket binding in Garlic
Date: Mon, 23 Jun 1997 11:21:09 -0700
From: "Roy T. Fielding" <fielding@kiwi.ICS.UCI.EDU>
Message-ID: <9706231124.aa27673@paris.ics.uci.edu>
Reply-To: libwww-ada95@ics.uci.edu
X-Mailing-List: <libwww-ada95@ics.uci.edu> archive/1997/4
X-Loop: libwww-ada95@ics.uci.edu
Precedence: list
Errors-To: libwww-ada95-request@ics.uci.edu
Sender: libwww-ada95-request@ics.uci.edu

GLADE's protocol library (Garlic) does indeed have a complete thin
socket binding (s-garthi.ads) and thicker binding for the functions
that socket applications need for client and server operation
(s-gartcp.adb).  It will probably take some work to put together a
subset which does not include the distributed services annex, but
at least we have a working example.  The Garlic source is in

   /extra/fielding0/src/glade/1.02/Garlic

.....Roy


From fielding@kiwi.ICS.UCI.EDU Tue Jun 24 12:51:32 1997
Received: from ics.uci.edu by paris.ics.uci.edu id aa17343; 24 Jun 97 12:51 PDT
Received: from binky.ics.uci.edu by q2.ics.uci.edu id aa14818;
          24 Jun 97 12:51 PDT
Received: from ics.uci.edu by binky.ics.uci.edu id aa14393; 24 Jun 97 12:51 PDT
Received: from paris.ics.uci.edu by binky.ics.uci.edu id aa14389;
          24 Jun 97 12:51 PDT
Received: from paris.ics.uci.edu by paris.ics.uci.edu id aa17120;
          24 Jun 97 12:48 PDT
Received: from kiwi.ics.uci.edu by paris.ics.uci.edu id aa17098;
          24 Jun 97 12:48 PDT
To: libwww-ada95@kiwi.ICS.UCI.EDU
Subject: HTTP Tutorial
Date: Tue, 24 Jun 1997 12:43:59 -0700
From: "Roy T. Fielding" <fielding@kiwi.ICS.UCI.EDU>
Message-ID: <9706241248.aa17098@paris.ics.uci.edu>
Reply-To: libwww-ada95@ics.uci.edu
X-Mailing-List: <libwww-ada95@ics.uci.edu> archive/1997/5
X-Loop: libwww-ada95@ics.uci.edu
Precedence: list
Errors-To: libwww-ada95-request@ics.uci.edu
Sender: libwww-ada95-request@ics.uci.edu

This is a gentler intro to HTTP:

    http://www.jmarshall.com/easy/http/

....Roy


