Re: Creating Objects (was: Re: WWWInline; include non-VRML data?)

Brian Behlendorf (brian@wired.com)
Sat, 22 Oct 1994 16:39:50 -0700 (PDT)


On Tue, 18 Oct 1994, Linas Vepstas wrote:
> Meanwhile, can anybody out there explain how CGI (Common Gateway Interaface)
> works, and/or how WebWorld works and/or how forms work?

Hey, another chance to add commentary to the fray ;)

CGI is basically just a specification for the way a server and
server-side scripts talk to each other. It outlines the 2 dozen
or so environment variables the script can take as input, and what the
script needs to do to get its results fed back to the client making the
request (basically, print it to stdout, prefixing it with a "Content/type
= <mime type of your output>\n\r\n\r".)

WebWorld from what I've seen is pretty simple conceptually (as all good
things are) - they in essence open up a large chunk of real estate and
people can place objects in that space. HTML forms are just powerful
enough to make that a feasible thing.

Oh yeah, and forms: I'm sure you've all seen them, basically the document
author assigns a name to each field or menu or whatever form of input the
user can give, and then when the user submits it the data is sent in
name=value pairs to a CGI script which parses the data and gives some
feedback based on that information. No rocket science really - in many
ways it was a kludge and could have been done more cleanly, but whatever.

HTML forms, like inlined images, were hacks that the NCSA team put in
without any formalization or much discussion, and because they were
somewhat sexy they got used a lot becoming part of the de facto standard
that only now are people trying to set as an IETF standard.

How do we tie this functionality into VRML? Well, if we wanted to go
the same route, I can provide more info on details of implementation.
Basically there are two main HTTP methods used in passing info to scripts.
a GET request looks something like

GET http://www.wired.com/cgi-bin/aglimpse?term=vrml&case=no&errors=3

where all the submitted data is after the ? mark. Kinda ugly if you ask
me... but it does mean you can use one URL to get at this info. Another
method is the POST request, which basically looks the same except the
name=value pairs are submitted on stdin rather than as part of the
request - but you still are using & and = as delimiters (characters are
escaped using %<hex value>.) There is talk about using MIME as a method
of submitting information now, which is conceivably the "right" way to go.
But that requires a change to servers, and it's something that's probably
better left up to the HTTP working group anyways.

I'd strongly put a vote in for supporting some form of feedback mechanism
in VRML, though I'm not sure if we can get it into 1.0. This isn't
something that should be rushed. I would like to see a conversation about
what the VRML equivalent of forms would be - if it involves editing and
submitting the whole document or the "vdiffs", to coin a term, then
we might want to look at other HTTP methods like PUT for this (PUT, along
with CHECKIN and CHECKOUT, were put in when developers were looking at
the WWW as a full RCS-ish editing system too - that's coming back, no
doubt.)

Hope this helped.

Brian