home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / Libraries / DCLAP 6d / dclap6d / Docs / to-build-GopherPup.text < prev    next >
Encoding:
Text File  |  1996-07-05  |  24.4 KB  |  540 lines  |  [TEXT/R*ch]

  1.  
  2.  
  3. How to build a GopherPup
  4.  
  5. Don Gilbert
  6. January 1995
  7. email: gopherpup@bio.indiana.edu
  8.  
  9. GopherPup is an Internet Gopher+ client with extensions to 
  10. (a) display rich text documents, including pictures,  and
  11. (b) allow network hypertext links inside documents it displays
  12.  
  13. This document includes discussion of 
  14. i   the Gopher+ protocol extentions used between GopherPup and 
  15. gopher+ servers
  16. ii  how to create your own gopherpup hyper-rich-text documents
  17. iii Gopher+ server modifications to support GopherPup
  18. iv  suggestions on how to add hypertext to other gopher+ clients
  19. v GopherPup source code and how to build it
  20. vi  Current bugs and problems with GopherPup
  21. vii why not use Mosaic/WWW instead of extending Gopher+ protocol?
  22.  
  23. I. Gopher+ Protocol Extensions for Hypertext
  24. The basic protocol extensions used in GopherPup were outlined in a 
  25. Usenet article in November 1993 <usenet ref>,  available as 
  26. <gopher+link>.   The idea is to include network hypertext capabilities 
  27. in the gopher+ protocol as simply as possible.  For that, I chose to 
  28. use the currently defined gopher-menu and gopher+-menu data types.  
  29. These data types, when included as a block extension +MENU, can be 
  30. associated with any document served by a gopher+ server.   In order to 
  31. place specific link items within a document, another set of block 
  32. extensions is needed, which are associated with each item in a +MENU 
  33. block.  These placing extensions Ive called +MENUSTRING,  +MENURECT, 
  34. +MENUBYTES,  and others may be included as seems important.  
  35.  
  36. Another advantage of this method is that these gopher+menu data can be 
  37. save to local disk files associated with a document, where users can 
  38. access them in the same way as from a remote server.
  39.  
  40. Here is the general scheme of a client-server transaction that 
  41. includes +MENU data.  
  42.  
  43. Client connects to server and queries for a gopher-menu or gopher+-
  44. menu.  Server responds with requested data.  If gopher+-menu data is 
  45. returned, the server will send any +MENU block extensions associated 
  46. with any of its documents.  If gopher-menu is returned, no +MENU data 
  47. is returned, and it is the clients responsibility to ask for more 
  48. information (!) on an item to see if it has any +MENU extensions.
  49.  
  50. The format that the server sends gopher+-menu data including +MENU 
  51. blocks is as follows (the bars indicate tab characters):
  52.  
  53. +-1
  54. +INFO:  0MainDoc1 0/Some/Path/0MainDoc1 my.host.edu 70  +
  55. +ADMIN:
  56.   Admin: blah blah
  57. +VIEWS:
  58.   application/rtf En_US: <12k>
  59.   text/plain En_US <8k>
  60. +MENU:
  61. +INFO:  0LinkDoc1 0/Some/Path/LinkDoc1
  62.   my.host.edu 70  +
  63.   +MENUSTRING: locate at this text in MainDoc1
  64. +INFO:  1LinkMenu1  1/Some/Path/LinkMenu1
  65.   my.host.edu 70  +
  66.   +MENUSTRING: locate at this other text in MainDoc1
  67. +INFO:  7LinkQuery  7Some/Path/LinkQuery
  68.   my.host.edu 70  +
  69.   +MENUSTRING: locate at this even different text in MainDoc1
  70.   +QUERYSTRING:  search gopher index with this string
  71. +INFO:  1LinkMenu2  1/Some/Path/LinkMenu2
  72.   my.host.edu 70  +
  73.   +MENUSTRING: locate somewhere else in MainDoc1
  74.  
  75. +INFO:  0Doc2 0/Some/Path/Doc2  my.host.edu 70  +
  76. +ADMIN:
  77.   Admin: blah blah
  78. +VIEWS:
  79.   application/rtf En_US: <12k>
  80.   text/plain En_US <8k>
  81. +MENU:
  82. +INFO:  0LinkDoc1 0/Some/Path/LinkDoc1
  83.   my.host.edu 70  +
  84.   +MENUSTRING: locate at etc in MainDoc1
  85. +INFO:  1LinkMenu1  1/Some/Path/LinkMenu1
  86.   my.host.edu 70  +
  87.   +MENUSTRING: locate at etc in MainDoc1
  88. +INFO:  0LinkDoc2 0/Some/Path/LinkDoc2
  89.   my.host.edu 70  +
  90. +INFO:  1LinkMenu2  1/Some/Path/LinkMenu2
  91.   my.host.edu 70  +
  92.  
  93. +INFO:  0Doc3 0/Some/Path/Doc3  my.host.edu 70  +
  94. [ et cetera ... ]
  95.  
  96.  
  97. The basic idea here is that any document can have an associated 
  98. gopher+-menu structure.  The current U.Minnesota gopherd server can 
  99. easily include this data by means of its block extensions method.  
  100. Data in the format of a .cache or .cache+ file can be copied to a 
  101. a file to be associated with a document (e.g., MainDoc1.gmenu, 
  102. associated with MainDoc1), or one can create such a .gmenu document by 
  103. hand.  
  104.  
  105. The document maintainer can then edit that file and put in +MENUSTRING 
  106. and related locating extensions.  This will produce a MainDoc1.gmenu 
  107. file looking like this, for instance:
  108.  
  109. +INFO:  0LinkDoc1 0/Some/Path/LinkDoc1  my.host.edu 70  +
  110. +MENUSTRING: locate at this text in MainDoc1
  111. +INFO:  1LinkMenu1  1/Some/Path/LinkMenu1 my.host.edu 70  +
  112. +MENUSTRING: locate at this other text in MainDoc1
  113. +INFO:  7LinkQuery  7Some/Path/LinkQuery  my.host.edu 70  +
  114. +MENUSTRING: locate at this even different text in MainDoc1
  115. +QUERYSTRING:  search gopher index with this string
  116. +INFO:  1LinkMenu2  1/Some/Path/LinkMenu2 my.host.edu 70  +
  117. +MENUSTRING: locate at etc in MainDoc1
  118.  
  119. The gopherd server should have its configuration file modified to 
  120. include the block extension type MENU, with some suitable filename 
  121. suffix (e.g., .gmenu).   On my server, I have a 
  122. /usr/local/etc/gopherd.conf that has this entry:
  123.   blockext: .gmenu MENU
  124.  
  125. Then when gopherd serves out menu information, it will provide it in 
  126. the above format with any MENU blocks right-shifted by one space.
  127.  
  128. The +QUERYSTRING is another extension which can be used in conjunction 
  129. with the +MENU blocks.  Its function is to provide a given string that 
  130. will be used to search a gopher Index database (type 7).  That way, a 
  131. document can easily include hypertext references to data in searchable 
  132. databases.  More about this later.
  133.  
  134.  
  135. When sent to a client, the client can use the same general method of 
  136. parsing the +MENU block as it uses to parse standard gopher-menu and 
  137. gopher+-menu data.    Then it parses the +MENUSTRING and related 
  138. placement extenstions, using that information to place the +INFO link 
  139. at a particular word, phrase or position in the document.   The client 
  140. software can highlight these hotspots in various ways (underline, 
  141. color, or in a character-mode client, perhaps as extra symbols in the 
  142. text like [1]), so the person can see which areas have hypertext 
  143. links.
  144.  
  145.  
  146. II. Making Hypertext documents for serving to GopherPup
  147.  
  148. GopherPup now includes the ability to display documents that are in 
  149. Microsoft standard Rich-Text-Format (RTF).   This format was chosen 
  150. because it is an existing, widely available standard for storing fully 
  151. formatted documents (including font, paragraph and document styling 
  152. and pictures).    It is suitable for exchange of  scientific 
  153. documents, as it handles symbol fonts, super and subscripting, and the 
  154. other formatting characteristics needed in most scientific and 
  155. scholarly documents.   Also importantly, the most commonly used 
  156. wordprocessors on the common computing platforms (Macintosh and MS-
  157. DOS/MS-Windows) will read and write RTF format.  
  158.  
  159. The primary step in creating network hypertext documents is then as 
  160. simple as writing the document in your wordprocessor, and saving it in 
  161. RTF format (see the Save As or similar option in your wordprocessor 
  162. for saving in this format). 
  163.  
  164. The next step is to associate network links with words or images in 
  165. your document.  This current release of GopherPup is sparse in its 
  166. support for associating link data with document parts.  Currently this 
  167. involves (a) creating a separate text file that has  gopher+-menu 
  168. data, (b) inserting +MENUSTRING statements with each +INFO statement.  
  169. Alternately, if you save a hypertext gopher document retrieved thru 
  170. gopherpup, it will create a .go4 gopher+-menu document including the 
  171. +MENUSTRING statements.
  172.  
  173. II.a) The GopherPup .go4 data file.
  174. GopherPup will now look for link data associated with any document it 
  175. opens from your local disk drives.  The standard way to open a local 
  176. disk file in GopherPup is to choose the File/Open command, and use the 
  177. system-specific file chooser to select a document to view.  When you 
  178. make such a selection, e.g., MyThesis.rtf or MyThesis.text, the 
  179. program now will look for an associated file with the suffix .go4, 
  180. e.g., MyThesis.go4.   The program looks in such a file for gopher+-
  181. menu data and if found, will use it to mark hypertext links in the 
  182. selected document. 
  183.  
  184. You can create an initial .go4 data file by saving gopher menu windows 
  185. from GopherPup (use the File/Save menu when a gopher menu window is 
  186. the active window).  Such a file can be edited with a standard text 
  187. editor application.  It consists of lines such as described above that 
  188. are the gopher+-menu data:
  189.  
  190. +INFO:  0LinkDoc1 0/Some/Path/LinkDoc1  my.host.edu 70  +
  191. +INFO:  1LinkMenu1  1/Some/Path/LinkMenu1 my.host.edu 70  +
  192. +INFO:  7LinkQuery  7Some/Path/LinkQuery  my.host.edu 70  +
  193. +INFO:  1LinkMenu2  1/Some/Path/LinkMenu2 my.host.edu 70  +
  194.  
  195. Protocols other than Gopher are supported in this format with the 
  196. addition of +URL: lines.  Currently GopherPup requires a +INFO: line 
  197. for each item, then additional Gopher+ statements will add to and 
  198. modify that.   This is an example:
  199. +INFO:  0ItemTitle  any/path  any.host  0
  200. +URL: http://real.host/real/path/here
  201.  
  202. II.b)  Linking with +MENUSTRING statements
  203.  
  204. Currently only the +MENUSTRING: some word or phrase method of 
  205. linking a gopher item to a document location is supported in 
  206. GopherPup.  You need to edit the gopher+-menu .go4 file you created 
  207. above with a text editor and insert these statements, one following 
  208. each +INFO statement.  The syntax of this statement is
  209. +MENUSTRING: word
  210. +MENUSTRING: a phrase in double-quotes
  211. +MENUSTRING: a phrase in single quotes
  212.  
  213. GopherPup will search a document and mark all matches to a given 
  214. +MENUSTRING as links to the associated +INFO gopher item.   
  215.  
  216. II.c)  Planned MENU locating statements
  217. Future versions of gopherpup should expand on these capabilities.   It 
  218. is also hoped that a later version of gopherpup will included means to 
  219. directly link gopher items to a displayed document, bypassing need to 
  220. use a text editor.  Suggested locating statements are 
  221.  
  222. +MENUSTRING:   "some string"  repeat-value
  223.   used to locate a network link at a string in a text document.   A 
  224. phrase with embedded spaces should be enclosed in quote () or 
  225. double quote () characters.  An optional repeat-value specifies 
  226. which occurence of the string to match, from the top of the text. 
  227. The repeat value is not currently implemented in gopherpup -- all 
  228. instances of the menustring are matched.
  229. +MENUSTRING:  "bob was here"   3
  230.  
  231. +MENULINE:  start-paragraph start-char  stop-paragraph stop-char
  232.   specifies the item's location as a line number and character range 
  233. in a text document.   Start-paragraph indexes a paragraph, from 0 
  234. at top, and 'start-char' indexes a character within that line.  
  235. Likewise Stop-paragraph and stop-char indicate the end of the 
  236. index.   
  237. +MENULINE:  100  500 100  515
  238.  
  239. +MENURECT: left  top  right bottom
  240.   specifies the item's pixel location rectangle on a graphics 
  241. document.
  242. +MENURECT: 300 0 400 100
  243.  
  244. +MENULINERECT: start-paragraph start-char  left  top  right bottom
  245.   This is a combinary of +menuline and +menurect, to index a 
  246. rectangle within a paragraph.  
  247. +MENULINERECT: 100  500  300 0 400 100
  248.  
  249. +MENUBYTES: startbyte  stopbyte
  250.   specifies the item's location as a byte range in a text document.   
  251. If 'stopbyte' is missing, only the 'startbyte' location is indexed 
  252. for the item location.
  253. +MENUBYTES: 100  500
  254.  
  255. +ISMAP:
  256.   Indicates the item is a queryable graphic map, and x-y coordinates 
  257. of mouse clicks will be sent to the item server.
  258.  
  259.  
  260.  
  261. II.d)  NetDoc formats -- Gopher links combined with document data
  262.  
  263. As an alternative to having a separate .go4 data file of link 
  264. statements for each document, GopherPup understands a compount 
  265. document type where the link statements are prepended to the other 
  266. data.  This method allows documents with any kind of data that 
  267. GopherPup can display, including binary formats such as PICT and GIF, 
  268. to contain network links.  They are typed as NetDoc/Text, NetDoc/RTF, 
  269. NetDoc/PICT,  NetDoc/GIF, et cetera.  The format of these NetDoc types 
  270. is to start with the line
  271.  
  272. +MENU:
  273.  
  274. followed by as many Gopher+ link statements as described above as 
  275. needed, then the line 
  276.  
  277. +DATA:
  278.  
  279. is a key that the document data follows to the end of the file.
  280.  
  281. Here is an example NetDoc header
  282.  
  283. +MENU:
  284.  +info: 1GopherPup home 1/IUBio-Software+Data/util/gopher/gopherpup
  285.   ftp.bio.indiana.edu 70  +
  286.  +menustring: ftp.bio.indiana.edu:/util/gopher/gopherpup
  287.  +comment:
  288.  +comment: To read this with a standard wordprocessor, strip out the 
  289. lines down thru
  290.  +comment: the "+DATA:" line, so that the first line starts with "{ \ 
  291. rtf1"
  292.  +comment:
  293.  +info: 1DCLAP home 1/IUBio-Software+Data/util/dclap
  294.   ftp.bio.indiana.edu 70  +
  295.  +menustring: ftp.bio.indiana.edu:/util/dclap
  296.  +info: 1IUBio Archive    ftp.bio.indiana.edu 70  +
  297.  +menustring: "IUBio Biology Archive"
  298.  +info: 7GenBank sequence search  7/.indices/genbank
  299.   ftp.bio.indiana.edu 70  +
  300.  +menustring: "fetch a sequence entry from Genbank"
  301.  +info: 1RTF Info 1/IUBio-Software+Data/util/rtf
  302.   ftp.bio.indiana.edu 70  +
  303.  +menustring:  "Rich Text Format"
  304.  +info: 1RTF (Rich Text Format) utilities 1/RTF ftp.primate.wisc.edu
  305.   70  +
  306.  +menustring:  ftp.primate.wisc.edu:/pub/RTF
  307.  +info: 0Go+hypertext-method  0/IUBio-
  308. Software+Data/util/gopher/go+menu-article.txt
  309.   ftp.bio.indiana.edu 70  +
  310.  +menustring:  "network hypertext links"
  311.  +comment: new gopherpup "mailto" kind 'm'
  312.  +info: mGopherPup bug report GopherPup@Bio.Indiana.Edu localhost
  313.   0
  314.  +menustring: GopherPup@Bio.Indiana.Edu
  315.  +info: 1NCBI Gopher    ncbi.nlm.nih.gov  70
  316.  +menustring: "National Center for Biotechnology Information"
  317.  +info: 1ncbi_tools 1/toolbox/ncbi_tools  ncbi.nlm.nih.gov  70
  318.  +menustring: ncbi.nlm.nih.gov:/toolbox
  319.  +info: 1Gopher help from U.Minnesota (USA) 
  320.   gopher.micro.umn.edu  70  +
  321.  +menustring: gopher.micro.umn.edu
  322.  +comment:
  323. +DATA:
  324. {\rtf1\mac\deff2 {\fonttbl{\f0\fswiss Chicago;}{\f2\froman New 
  325. York;}{\f3\fswiss Geneva;}{\f4\fmodern Monaco;}{\f13\fnil Zapf 
  326. Dingbats;}{\f14\fnil Bookman;}{\f16\fnil Palatino;}{\f18\fnil Zapf 
  327. Chancery;}{\f19\fnil Souvenir;}{\f20\froman Times;}
  328. [... and more rtf data... ]
  329.  
  330. III. Gopher+ server modifications to support GopherPup
  331. All of the current extensions to GopherPup will work with the current 
  332. gopher+ GopherD server from University of Minnesota, I believe.  I use 
  333. one minor extension, but it isnt essential.  At this point, I havent 
  334. tested other gopher+ servers, such as the Macintosh one.  
  335.  
  336. The one extension Ive added to server software for these methods, is 
  337. to allow the combined MENU information and document DATA to be built 
  338. from two separate files, and sent as one chunk to the client.  This 
  339. extention allows one to support both non-hypertext and hypertext 
  340. formats from the same data files.  For instance, one set of documents 
  341. at IUBio server is available in the following formats:  image/pict, 
  342. netdoc/pict, image/gif, netdoc/gif, and text/html.  The two pict forms 
  343. use one data file, and the netdoc form is created by prepending a 
  344. +MENU: block (as in II.d above).  The other three forms are created 
  345. from one gif file and the same menu block (for netdoc/gif) or with an 
  346. HTML wrapper (for text/html).
  347.  
  348. IV. Suggestions for adding hypertext support to other gopher+ clients
  349.  
  350. The protocol extentions that are outlined here, and embodied in the 
  351. GopherPup client, are readily transferable to other gopher+ clients.  
  352. The basic data here is the same gopher+-menu data already parsed by 
  353. these clients.  A gopher+ server should need no modification to send 
  354. MENU data associated with a document, if it follows the U.Minnesota 
  355. model of block extensions.  It is my intension, and suggestion for 
  356. others, to provide at least both plain text and Rich Text Format 
  357. versions of documents for network information servers, since it is 
  358. usually trivial to produce both forms from a wordprocessor.  Thus it 
  359. isnt necessary for other clients to support RTF display (which is the 
  360. hard part here -- it took me rougly one day to add just the hypertext 
  361. portion to my gopher client).  Other clients might also care to 
  362. support other document formats.  This method of MENU extensions can be 
  363. applied to various text and graphics formats.
  364.  
  365. For a client to support MENU hypertext links it basically needs to add 
  366. recognition of the +MENU: block extention, and extension locator 
  367. statements like +MENUSTRING:.  For a graphics mode client, this would 
  368. involve highlighting the located strings in a document on display, and 
  369. responding to user interactions (mouse clicks) with the highlighted 
  370. item by fetching it from the server, basically in the same way as for 
  371. gopher items that are displayed and selected from a menu.
  372.  
  373. For character-mode client, it might be easiest to insert markers into 
  374. a display document to correspond to highlighting in a graphics client.  
  375. If the document text were 
  376.   Please match this word, and then match this second word, 
  377. then formats such as 
  378.   Please match this word{a}, and then match this second word{b}, 
  379. or
  380.   Please match this word[1], and then match this second word[2], 
  381. would display easily, and the client could respond to typing of 
  382. letters or numbers as selection events for the linked items.
  383.  
  384. V. GopherPup source code and how to build it
  385. Source code for GopherPup is freely available for non-commercial 
  386. distribution and use, as are program executables for the major 
  387. platforms available to the author.    It may be modified and enhanced 
  388. for those who wish to.  The source code is available at 
  389. <ftp://iubio.bio.indiana.edu:/util/dclap/src/> with associated source 
  390. code in /util/dclap/from-ncbi/, documents in /util/dclap/docs/, and 
  391. program executables in /util/dclap/apps/.
  392.  
  393. An interesting feature of the GopherPup software is that it is written 
  394. based on a cross-platform development library.  This means that one-
  395. size-fits-all, or at least it tries to.  Additions and changes to the 
  396. program are readily available on the common computing platforms of 
  397. Macintosh, MS Windows and X/Motif Windows.
  398.  
  399. The cross platform development library includes an ANSI-C interface to 
  400. Macintosh, MS-Windows, and X/Motif Windows graphic and system 
  401. environments.  The C library is called NCBI Toolkit, with VIBRANT the 
  402. graphic user interface portion.   These parts are written by 
  403. biocomputing scientists at the National Center for Biotechnology 
  404. Information (NCBI).  The remainder of the framework for GopherPup is a 
  405. C++ object oriented, class application library (DCLAP), which is still 
  406. fairly young.  It is based loosely on the Apple Computer MacApp 
  407. development library (the parent of GopherPup, GopherApp was written to 
  408. MacApp).  
  409.  
  410.  
  411. VI. Current bugs and undeveloped features of GopherPup
  412.  
  413. General:
  414.    RTF and HTML, and in general the rich-text display, need much bug 
  415. chasing.
  416.    HTML Forms are not supported yet (a first hack at it is in 
  417. progress).
  418.    Memory management is improved but still needs much work -- 
  419. documents are not flushed & loaded as sensibly as they should be.  
  420.  
  421. Mac: 
  422.    seems generally stable, but not completely
  423.  
  424. XMotif: 
  425.    somewhat usable, though it still tends to crash.
  426.    no printing.  This lack is fundamental to the XWindow support of 
  427. Vibrant/DCLAP.
  428.  
  429. MS-Windows: 
  430.    freezes fairly frequently still.  When not frozen, all the 
  431. features are there.   The 32 bit version seems much more stable -- 
  432. several of the 16bit version crashes are known due to the small word 
  433. size of that system for memory allocations, etc.  
  434.  
  435. [more bugs are known, just not documented here...]
  436.  
  437. VII. Why not just use Mosaic?
  438.  
  439. Internet Gopher and the network information systems that goes under 
  440. names of WWW, the Web,  HTTP and HTML are both capable of being good 
  441. network information clients, and in very similar manners.  Many of the 
  442. features that were pioneered in gopher are now being added to 
  443. WWW/Mosaic client-servers.  Many of the same problems are now being 
  444. addressed.  My opinion is that Gopher has good features that should 
  445. not be lost sight of due to a desire for hypertext, and a pretty 
  446. (inter)face.
  447.  
  448. The hypertext markup language (HTML) has advantages and disadvantages 
  449. over the method discussed here.  One basic difference is that HTML is 
  450. an in-line markup language, where hypertext links are inserted in the 
  451. document.  The form described here doesnt change documents 
  452. themselves, but adds a secondary data file, or is appended at the 
  453. start of the data.  In some cases this nicer, as it leaves the 
  454. original document in its original form, without confusing the text 
  455. with network link codes.    GopherPup has been developed to allow 
  456. translators to display various document formats, and as well to permit 
  457. adding network links to any of these formats, whether they are simple 
  458. text or some binary image format.
  459.  
  460. The HTML document format as implemented in Mosaic and other WWW 
  461. browsers does not provide enough support for the formatting features 
  462. needed for scientific documents.  Symbol and other fonts, super and 
  463. subscripts, various formatting capabilities that any common 
  464. wordprocessor can display are essential for electronic publication of 
  465. scientific documents.  Also, to get wordprocessing documents into HTML 
  466. format involves various difficulties.  The RTF format chosen for 
  467. GopherPup is better suited to display of scholarly articles, and has 
  468. the great benefit of being readily produced by many or most of the 
  469. commonly used wordprocessing programs.    As well, GopherPup has the 
  470. markup features needed to allow you to very simply add network links 
  471. to any part of a displayed document, by selecting words or portions of 
  472. the display and dragging a network link item to that selection.
  473.  
  474. The RTF support also includes support of embedded pictures, including 
  475. both vector and bitmap forms.  Vector pictures are not supported in 
  476. Mosaic/www, but are very useful for scientific data (frequently 
  477. graphs) both because they are independent of resolution of the 
  478. display/output device, and also because they can be re-edited to 
  479. different sizes or components can be changed easily.  In one example 
  480. of genetic map drawings, I have compared the same maps in formats 
  481. suitable for Mosaic browsers (GIF) and for GopherPup (PICT).  The low-
  482. weight, high-resolution vector map wins hands down any speed contests, 
  483. at about 5 times faster in fetching and displaying the same map, 
  484. making it much more suitable to set up interactive graphic browsing 
  485. services with GopherPup. 
  486.  
  487. The hypertext transport protocol (HTTP) is essentially the same in 
  488. functionality to the Internet Gopher protocol, it just works with 
  489. different codes.  Since gopher servers can also server HTML documents 
  490. if those are preferred, there seems no compelling reason to run an 
  491. HTTP server.  
  492.  
  493. Gopher already has mature support for client-server handling of 
  494. multiple-format documents (Gopher+ VIEWS).  This allows for instance a 
  495. server to provide both a fancy, picture-rich document  and a simple, 
  496. plain text one that can provide the same basic information.  But this 
  497. choice of formats lets gopher serve a wider range of client and 
  498. network transport capabilities.
  499.  
  500. Mosaic and other  so-called web browsers tend to be kitchen-sink 
  501. clients.  They try to speak many network protocols, but are masters 
  502. only of HTTP/HTML.   In part this means that people using these 
  503. browsers get a poor impression of methods other than HTTP/HTML, 
  504. because the browser only poorly support other methods.   This is 
  505. basically why I avoid using the terms web and WWW.   The advocates 
  506. of HTML/HTTP browsers are claiming more than they deliver.   Gopher 
  507. clients tend to concentrate on mastering one protocol, and rely on 
  508. information servers to provide gateways to alternate protocols if 
  509. desired.  
  510.  
  511. The HTML/HTTP developers have long talked about the standard that 
  512. they developed.   It currently looks like it will be very difficult 
  513. for anyone to extend or improve that method, as they have a committee 
  514. in charge of it.   In my estimation, standards are not born over 
  515. night.  Where standard make sense, existing ones should be employed 
  516. before inventing a new one.  Where new methods are needed, they should 
  517. be developed and tested before calling them a standard.  That is why 
  518. Ive (a) concentrated on using existing formats like RTF and PICT that 
  519. are already in wide use for document display, and (b) extended and 
  520. experimented with the flexible Gopher+ protocol to get it to do useful 
  521. things, rather than try to do such with the restricted HTTP/HTML 
  522. protocols.
  523.  
  524. Both Internet Gopher and WWW are still evolving and changing rapidly.  
  525. It may well be that they converge on some set of features that all 
  526. find useful.   GopherPup is one step to providing a complex client 
  527. that supports the important information protocols.  Ive hoped with 
  528. GopherPup extentions to amend the parts of Gopher that many people 
  529. find advantageous in Mosaic,  and perhaps provide in some small ways a 
  530. better network client for some uses.
  531.  
  532. The evolving GopherPup now supports local gophering -- browsing and 
  533. (soon) searching of local data with the same simple methods that apply 
  534. to remote services.  With this addition it will be feasible for 
  535. information providers to offer both network services and CDROM based 
  536. information disks relying on one set of data and client/user-
  537. interface.
  538.  
  539.  
  540.