home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 2: Applications / Linux Cubed Series 2 - Applications.iso / editors / emacs / xemacs / xemacs-1.006 / xemacs-1 / lib / xemacs-19.13 / lisp / prim / about.el next >
Encoding:
Text File  |  1995-08-29  |  37.4 KB  |  951 lines

  1. ;;; about.el --- the About The Authors page (shameless self promotion).
  2. ;;;
  3.  
  4. ;; Copyright (c) 1995 XEmacs Advocacy Organization.
  5.  
  6. ;; This file is part of XEmacs.
  7.  
  8. ;; XEmacs is free software; you can redistribute it and/or modify it
  9. ;; under the terms of the GNU General Public License as published by
  10. ;; the Free Software Foundation; either version 2, or (at your option)
  11. ;; any later version.
  12.  
  13. ;; XEmacs is distributed in the hope that it will be useful, but
  14. ;; WITHOUT ANY WARRANTY; without even the implied warranty of
  15. ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  16. ;; General Public License for more details.
  17.  
  18. ;; You should have received a copy of the GNU General Public License
  19. ;; along with XEmacs; see the file COPYING.  If not, write to the Free
  20. ;; Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  21.  
  22. ;;; This is kind of a kludge.  We were going to use W3 to do this, but
  23. ;;; it's too slow to load, and HTML gives you too little control over
  24. ;;; the layout (especially indentation and inter-paragraph spacing).
  25. ;;; Maybe the text should have been written in limited HTML anyway,
  26. ;;; and I should have hacked up a simple and fast parser for it, but
  27. ;;; it's done now...
  28. ;;;
  29. ;;; Code: Jamie Zawinski <jwz@netscape.com>
  30. ;;; Text: Ben Wing <wing@netcom.com>, Jamie Zawinski <jwz@netscape.com>
  31. ;;; Hard: Amiga 1000, Progressive Peripherals Frame Grabber.
  32. ;;; Soft: FG 2.0, DigiPaint 3.0, pbmplus (dec 91), xv 3.0.
  33. ;;; Modified for 19.11 by Eduardo Pelegri-Llopart <pelegri@eng.sun.com>
  34. ;;;              and Chuck Thompson <cthomp@cs.uiuc.edu>
  35. ;;; More hacking for 19.12 by Chuck Thompson and Ben Wing.
  36. ;;; 19.13 updating done by Chuck Thompson.
  37.  
  38. (defvar about-xref-map (let ((map (make-sparse-keymap)))
  39.              (define-key map 'button1 'about-xemacs-xref)
  40.              (define-key map 'button2 'about-xemacs-xref)
  41.              (define-key map '(return) 'about-xemacs-xref)
  42.              map))
  43.  
  44. ;; This historically significant variable has been removed from service.
  45. (defvar what-are-we-calling-it-today "XEmacs")
  46.  
  47. (defun about-face (text face)
  48.   (let ((p (point))
  49.     e)
  50.     (insert text)
  51.     (setq e (make-extent p (point)))
  52.     ;;(set-extent-property e 'start-open t)
  53.     (set-extent-face e face)
  54.     e))
  55.  
  56. (defun about-xref (text xref help)
  57.   (let ((e (about-face text 'bold)))
  58.     (set-extent-property e 'keymap about-xref-map)
  59.     (set-extent-property e 'highlight t)
  60.     (set-extent-property e 'xref xref)
  61.     (set-extent-property e 'help-echo help)
  62.     e))
  63.  
  64. ;;;###autoload
  65. (defun about-xemacs ()
  66.   (interactive)
  67.   (delete-other-windows)
  68.   (switch-to-buffer (get-buffer-create "About XEmacs"))
  69.   (buffer-disable-undo (current-buffer))
  70.   (widen)
  71.   (set (make-local-variable 'tab-width) 8)
  72.   (setq buffer-read-only t)
  73.   (view-mode nil 'kill-buffer)        ;; assume the new view-less
  74.   (let* ((buffer-read-only nil)
  75.      (indent-tabs-mode t)
  76.      )
  77.     (erase-buffer)
  78.     (insert "\n")
  79.     (indent-to (startup-center-spaces xemacs-logo))
  80.     (let ((e (make-extent (point) (point))))
  81.       (set-extent-begin-glyph e xemacs-logo))
  82.     (insert "\n\n")
  83.     (indent-to (startup-center-spaces "(formerly known as Lucid Emacs)"))
  84.     (insert "(formerly known as Lucid Emacs)")
  85.     (insert "\n\n")
  86.     (indent-to (startup-center-spaces "version 19.13; September 1995"))
  87.     (about-xref "version 19.13; September 1995" 'news "The latest NEWS of XEmacs")
  88.     (insert "\n\n")
  89.  
  90.     (insert "\n\t")
  91.     (about-face "XEmacs" 'italic)
  92.     (insert " is a powerful, extensible text editor with full GUI
  93.     support, initially based on an early version of GNU Emacs 19 from
  94.     the Free Software Foundation and since kept up to date with recent
  95.     versions of that product.  XEmacs stems from a ")
  96.     (about-xref "collaboration" 'history "An XEmacs History Lesson")
  97.     (insert "\n\tof Lucid, Inc. with Sun Microsystems, Inc. and the University
  98.     of Illinois with additional support having been provided by
  99.     Amdahl Corporation and INS Engineering Corporation.\n\n\t")
  100.  
  101.     (insert "In almost all circumstances, Emacs-Lisp code written for
  102.     GNU Emacs versions 18 and 19 will run under XEmacs without
  103.         requiring any modifications, or at most will require small
  104.     changes to accommodate an improved functional interface.\n\n\t")
  105.  
  106.     (insert "XEmacs provides a great number of ")
  107.     (about-xref "new features" 'features "See a list of the new features.")
  108.     (insert ".  More details
  109.     on XEmacs's functionality, including bundled packages can be
  110.     obtained through the ")
  111.  
  112.     (about-xref "`info`" 'info "Look at the info pages")
  113.     (insert " on-line information system.
  114.  
  115.     The WWW page for XEmacs can be browsed, using any WWW browser, at\n\t\t")
  116.     (about-xref "http://xemacs.cs.uiuc.edu/" 'w3-xemacs "Go to the XEmacs World Wide Web page")
  117.     (insert "\n\n\tNote that w3 (XEmacs's own browser), might need customization
  118.     (due to firewalls) in order to work correctly.\n\n\t")
  119.  
  120.     (insert "XEmacs is the result of the time and effort of many people.
  121.     The developers responsible for the 19.13 release are:
  122.  
  123.          * ") (about-xref "Chuck Thompson" 'cthomp "Find out more about Chuck Thompson") (insert "  <cthomp@cs.uiuc.edu>
  124.          * ") (about-xref "Ben Wing" 'wing "Find out more about Ben Wing") (insert "  <wing@netcom.com>
  125.  
  126.          * ") (about-xref "And many other contributors..." 'others "Read about the legion of XEmacs hackers") (insert "
  127.  
  128.     Jamie Zawinski was Mr. Lucid Emacs from 19.0 through 19.10,
  129.     the last release actually named Lucid Emacs.  Richard Mlynarik
  130.     was crucial to most of those releases.
  131.  
  132.          * ") (about-xref "Jamie Zawinski" 'jwz "Find out more about Jamie Zawinski") (insert "  <jwz@netscape.com>
  133.          * ")  (about-xref "Richard Mlynarik" 'mly "Find out more about Richard Mlynarik")  (insert "  <mly@adoc.xerox.com>")
  134.    (insert "\n\n\tClick ")
  135.    (about-xref "here" 'kill-buffer "Exit the About page")
  136.    (insert " to remove (kill) this buffer.")
  137.    (goto-char (point-min)))
  138.   )
  139.  
  140. (defun about-load-mosaic (&optional who-to-load)
  141.   (save-excursion
  142.     (set-buffer (get-buffer-create "About XEmacs"))
  143.     (toggle-read-only 0)
  144.  
  145.     (let ((rest (if who-to-load (list who-to-load)
  146.           '(cthomp wing stig jwz mly vladimir baw piper bw wmperry)))
  147.       (got-error nil))
  148.       (while rest
  149.     (let* ((who (car rest))
  150.            (who-xpm (expand-file-name
  151.              (concat (symbol-name who)
  152.                  (if (memq (device-class (selected-device))
  153.                        '(color grayscale))
  154.                      ""
  155.                    "m")
  156.                  ".xpm")
  157.              data-directory)))
  158.       (or (file-exists-p who-xpm) (setq who-xpm (concat who-xpm ".Z")))
  159.       (if (eq nil (assoc who (buffer-local-variables)))
  160.           (make-local-variable who))
  161.       (if (and (boundp who)
  162.            (glyphp (symbol-value who)))
  163.           nil
  164.         (message "One moment please...")
  165.         (condition-case c
  166.         (save-restriction
  167.           (set who nil)
  168.           (narrow-to-region (point) (point))
  169.           (insert-file-contents who-xpm)
  170.           (if (looking-at "\037\235") ;may already be decompressed...
  171.               (call-process-region (point-min) (point-max)
  172.                        "zcat" t t nil))
  173.           (set who (make-glyph
  174.                 (prog1 (buffer-string)
  175.                   (delete-region (point-min) (point-max)))))
  176.           )
  177.           (error
  178.            (setq got-error t)
  179.            (message nil)
  180.            (display-error c nil)
  181.            (sit-for 2)))))
  182.     (setq rest (cdr rest)))
  183.       (or got-error (message nil)))
  184.     (toggle-read-only 1)
  185.     ))
  186.  
  187. (defun about-add-mosaic ()
  188.   (goto-char (point-min))
  189.   (about-load-mosaic)
  190.  
  191.   ;; HERE TO PLACE ADDITIONAL MUGSHOTS
  192.  
  193.   (goto-char (point-max))
  194.   (insert "\n   ")
  195.  
  196.   (let ((rest '(cthomp wing stig linebreak jwz mly vladimir linebreak baw piper bw linebreak wmperry))
  197.     (got-error nil))
  198.     (while rest
  199.       (if (eq (car rest) 'linebreak)
  200.       (insert "\n\n  ")
  201.     (let* ((who (car rest))
  202.            (b (get-buffer "About XEmacs"))
  203.            (p (symbol-value-in-buffer who b nil)))
  204.       (or (glyphp p) (setq p nil))
  205.       (and p
  206.            (let ((e (make-extent (point) (point))))
  207.          (set-extent-begin-glyph e p)
  208.          (set-extent-property e 'keymap about-xref-map)
  209.          (set-extent-property e 'xref who)))
  210.       (insert " ")
  211.       (sit-for 0)))
  212.       (setq rest (cdr rest)))
  213.     (insert "\n")
  214.     (goto-char (point-min))
  215.     (or got-error (message nil)))
  216.   )
  217.  
  218. (defun about-xemacs-xref (e)
  219.   (interactive "@e")
  220.   ;; If e is null then we got here by a keypress over an extent.
  221.   (let* ((extent (or (and (null e) (extent-at (point)))
  222.              (event-glyph-extent e)
  223.               (extent-at (event-point e)
  224.                 (event-buffer e)
  225.                 'xref)))
  226.      (xref (extent-property extent 'xref))
  227.      prev-page)
  228.     ;; prev-page is used for the core people's pages since they can be
  229.     ;; reached from two different locations
  230.     (if (equal (buffer-name) "About XEmacs")
  231.     (setq prev-page 'about)
  232.       ;; Kill the sub-buffers when going back to the top, so that we
  233.       ;; don't hold pointers to the bitmaps longer than necessary.
  234.       (if (not (eq xref 'w3-jamie))
  235.       (progn
  236.         (kill-buffer (current-buffer))
  237.         (setq prev-page 'others))))
  238.     (cond
  239.      ((eq xref 'about)
  240.       (about-xemacs))
  241.      ((eq xref 'info)
  242.       (info))
  243.      ((or (eq xref 'w3-xemacs) (eq xref 'w3-jamie))
  244.       (if (boundp 'highlight-headers-follow-url-function)
  245.       (funcall highlight-headers-follow-url-function
  246.            (if (eq xref 'w3-xemacs)
  247.                "http://xemacs.cs.uiuc.edu/"
  248.              "http://www.netscape.com/people/jwz/"))
  249.     (w3-fetch (if (eq xref 'w3-xemacs)
  250.                "http://xemacs.cs.uiuc.edu/"
  251.              "http://www.netscape.com/people/jwz/"))))
  252.      ((eq xref 'kill-buffer)
  253.       (kill-buffer (current-buffer)))
  254.      ((eq xref 'news)
  255.       (view-emacs-news)
  256.       (view-mode nil 'kill-buffer)        ;; assume the new view-less
  257.       (save-excursion
  258.     (goto-char (point-min))
  259.     (let ((buffer-read-only nil))
  260.       (insert "\nClick ")
  261.       (about-xref "here" prev-page "Return to previous page")
  262.       (insert " to go back to the previous page.\n\n")
  263.       (set-buffer-modified-p nil)
  264.       )))
  265.      (t
  266.       (switch-to-buffer (get-buffer-create
  267.              (cond ((eq xref 'jwz) "About Jamie Zawinski")
  268.                    ((eq xref 'cthomp) "About Chuck Thompson")
  269.                    ((eq xref 'wing) "About Ben Wing")
  270.                    ((eq xref 'mly) "About Richard Mlynarik")
  271.                    ((eq xref 'vladimir) "About Vladimir Ivanovic")
  272.                    ((eq xref 'baw) "About Barry Warsaw")
  273.                    ((eq xref 'wmperry) "About William Perry")
  274.                    ((eq xref 'bw) "About Bob Weiner")
  275.                    ((eq xref 'piper) "About Andy Piper")
  276.                    ((eq xref 'stig) "About Jonathan Stigelman")
  277.                    ((eq xref 'others) "About Everyone")
  278.                    ((eq xref 'features) "New XEmacs Features")
  279.                    ((eq xref 'history) "XEmacs History")
  280.                    )))
  281.       (delete-other-windows)
  282.       (buffer-disable-undo (current-buffer))
  283.       (widen)
  284.       (setq buffer-read-only t)
  285.       (view-mode nil 'kill-buffer)        ;; assume the new view-less
  286.       (let ((buffer-read-only nil)
  287.         (case-fold-search nil)
  288.         )
  289.     (if (and (not (eq xref 'others)) (not (eq xref 'history))
  290.          (not (eq xref 'features)))
  291.         (about-load-mosaic xref))
  292.     (erase-buffer)
  293.     (let* ((b (get-buffer "About XEmacs"))
  294.            (p (and b (symbol-value-in-buffer xref b nil))))
  295.       (or (glyphp p) (setq p nil))
  296.       (cond (p
  297.          (insert "\n\t")
  298.          (set-extent-begin-glyph (make-extent (point) (point)) p)
  299.          (insert "\n\t"))
  300.         (t
  301.          (insert "\n\t"))))
  302.     (cond
  303.      ((eq xref 'history)
  304.       (insert "Click ")
  305.       (about-xref "here" prev-page "Return to previous page")
  306.       (insert " to go back to the previous page.\n\n\t")
  307.  
  308.       (about-face "XEmacs" 'bold)
  309.       (insert "\n\n\n\t")
  310.       (about-face "The Lucid, Inc. Point of View" 'italic)
  311.       (insert "
  312.  
  313.     At the time of the inception of Lucid Emacs (the former name
  314.     of XEmacs), Lucid's latest product was Energize, a C/C++
  315.     development environment.  Rather than invent (and force our
  316.     users to learn) a new user interface, we chose to build part
  317.     of our environment on top of the world's best editor, GNU
  318.     Emacs.  (Though our product is commercial, the work we did on
  319.     GNU Emacs is free software, and is useful in its own right.)
  320.  
  321.     We needed a version of Emacs with mouse-sensitive regions,
  322.     multiple fonts, the ability to mark sections of a buffer as
  323.     read-only, the ability to detect which parts of a buffer has
  324.     been modified, and many other features.
  325.  
  326.     For our purposes, the existing version of Epoch was not
  327.     sufficient; it did not allow us to put arbitrary pixmaps/icons
  328.     in buffers, `undo' did not restore changes to regions, regions
  329.     did not overlap and merge their attributes in the way we needed,
  330.     and several other things.
  331.  
  332.     We could have devoted our time to making Epoch do what we needed
  333.     (and, in fact, we spent some time doing that in 1990) but, since
  334.     the FSF planned to include Epoch-like features in their version
  335.     19, we decided that our efforts would be better spent improving
  336.     Emacs 19 instead of Epoch.
  337.  
  338.     Our original hope was that our changes to Emacs would be
  339.     incorporated into the \"official\" v19.  However, scheduling
  340.     conflicts arose, and we found that, given the amount of work
  341.     still remaining to be done, we didn't have the time or manpower
  342.     to do the level of coordination that would be necessary to get
  343.     our changes accepted by the FSF.  Consequently, we released our
  344.     work as a forked branch of Emacs, instead of delaying any
  345.     longer.
  346.  
  347.     Roughly a year after Lucid Emacs 19.0 was released, a beta
  348.     version of the FSF branch of Emacs 19 was released.  The FSF
  349.     version is better in some areas, and worse in others, as
  350.     reflects the differing focus of our development efforts.
  351.  
  352.     We plan to continue developing and supporting Lucid Emacs, and
  353.     merging in bug fixes and new features from the FSF branch as
  354.     appropriate; we do not plan to discard any of the functionality
  355.     that we implemented which RMS has chosen not to include in his
  356.     version.
  357.  
  358.     Certain elements of Lucid Emacs, or derivatives of them, have
  359.     been ported to the FSF version.  We have not been doing work in
  360.     this direction, because we feel that Lucid Emacs has a cleaner
  361.     and more extensible substrate, and that any kind of merger
  362.     between the two branches would be far easier by merging the FSF
  363.     changes into our version than the other way around.
  364.  
  365.     We have been working closely with the Epoch developers to merge
  366.     in the remaining Epoch functionality which Lucid Emacs does not
  367.     yet have.  Epoch and Lucid Emacs will soon be one and the same
  368.     thing.  Work is being done on a compatibility package which will
  369.     allow Epoch 4 code to run in XEmacs with little or no change.")
  370.  
  371.       (insert "\n\n\n\t")
  372.       (about-face "The Sun Microsystems, Inc. Point of View" 'italic)
  373.       (insert "
  374.  
  375.     Emacs 18 has been around for a long, long time.  Version 19 was
  376.     supposed to be the successor to v18 with X support.  It was
  377.     going to be available \"real soon\" for a long time (some
  378.     people remember hearing about v19 as early as 1984!), but it
  379.     never came out.  v19 development was going very, very slowly,
  380.     and from the outside it seemed that it was not moving at all.
  381.     In the meantime other people gave up waiting for v19 and
  382.     decided to build their own X-aware Emacsen.  The most important
  383.     of these was probably Epoch, which came from University of
  384.     Illinois (\"UofI\") and was based on v18.
  385.  
  386.     Around three or four years ago what was then called SunPro (a
  387.     division of Sun Microsystems, Inc.) decided that it wanted an
  388.     integrated editor.  They contracted with UofI to provide a
  389.     number of basic enhancements to the functionality in Epoch.
  390.     UofI initially was planning to deliver this on top of Epoch
  391.     code.
  392.  
  393.     In the meantime (actually some time before they talked with UofI)
  394.     Lucid had decided that it also wanted to provide an integrated
  395.     environment with an integrated editor.  Lucid decided that the
  396.     v19 basis was a better one than v18 and thus decided not to use
  397.     Epoch but instead work with Richard Stallman, the head of the
  398.     Free Software Foundation and principle author of Emacs, on
  399.     getting v19 out.  At some point Stallman and Lucid parted ways.
  400.     Lucid kept working and got a v19 out that they called Lucid
  401.     Emacs 19.
  402.  
  403.     After Lucid's v19 came out it became clear to UofI and SunPro
  404.     that the right thing to do was to push for an integration of
  405.     both Lucid Emacs and Epoch, and to get the deliverables that
  406.     SunPro was asking from UofI on top of this integrated
  407.     platform.  Through the last three or four years, SunPro has
  408.     been actively supporting this product and has been investing a
  409.     comparable amount of effort into it as Lucid has.  Substantial
  410.     portions of the current code have originated under the support
  411.     of SunPro, either directly in SunPro, or in UofI but paid for
  412.     by SunPro.  This code was kept away from Lucid for a while,
  413.     but later was made available to them.  Initially Lucid didn't
  414.     know that SunPro was supporting UofI, but later they were open
  415.     about it.
  416.  
  417.     Around two years ago the SunPro-related code started showing up
  418.     in Lucid Emacs.  This started with the infusion of the Epoch
  419.     redisplay code.
  420.  
  421.     At this moment there is basically no difference in the source
  422.     trees between what is at UofI and at Sun.  All the development
  423.     sites are in sync.
  424.  
  425.     SunPro originally called the integrated product ERA, for
  426.     \"Emacs Rewritten Again\".  SunPro and Lucid eventually came
  427.     to an agreement to find a name for the product that was not
  428.     specific to either company.  An additional constraint that
  429.     Lucid placed on the name was that it must contain the word
  430.     \"Emacs\" in it -- thus \"ERA\" was not acceptable.  The
  431.     tentatively agreed-upon name was \"XEmacs\", and this has
  432.     been the name of the product since version 19.11.)")
  433.  
  434.       (insert "\n\n\n\t")
  435.       (about-face "SunPro is now DevPro (SunSoft Developer Products)\n" 'italic)
  436.       (insert "
  437.     In mid-'94 Sun completed a reorganization where SunPro moved to
  438.     SunSoft.  As a consequence, SunPro is now called SunSoft Developer
  439.     Products, or DevPro for short. ")
  440.  
  441.       (insert "\n\n\n\t")
  442.       (about-face "Lucid goes under\n" 'italic)
  443.       (insert "
  444.     Around mid-'94, Lucid went out of business.  Development on
  445.     XEmacs, however, has continued unabated under the auspices of
  446.     Sun Microsystems and the University of Illinois, with help
  447.     from Amdahl Corporation and INS Engineering Corporation.
  448.     Sun plans to continue to support XEmacs into the future.")
  449.  
  450.       (insert "\n\n\n\t")
  451.       (about-face "The Amdahl Corporation point of view" 'italic)
  452.       (insert "
  453.  
  454.     Amdahl Corporation's Storage Products Group (SPG) uses XEmacs
  455.     as the focal point of a environment for development of the
  456.     microcode used in Amdahl's large-scale disk arrays, or DASD's.
  457.     SPG has joint ventures with Japanese companies, and decided
  458.     in late 1994 to contract out for work on XEmacs in order
  459.     to hasten the development of Mule support (i.e. support for
  460.     Japanese, Chinese, etc.) in XEmacs and as a gesture of goodwill
  461.     towards the XEmacs community for all the work they have done
  462.     on making a powerful, modern, freely available text editor.
  463.     Through this contract, Amdahl provided a large amount of work
  464.     in XEmacs in the form of rewriting the basic text-processing
  465.     mechanisms to allow for Mule support and writing a large
  466.     amount of the support for multiple devices.
  467.     
  468.     Although Amdahl is no longer hiring a full-time contractor,
  469.     they are still funding part-time work on XEmacs and providing
  470.     resources for further XEmacs development.")
  471.  
  472.       (insert "\n\n\n\t")
  473.       (about-face "The INS Engineering point of view" 'italic)
  474.       (insert "
  475.  
  476.         INS Engineering Corporation, based in Tokyo, bought rights
  477.     to sell Energize when Lucid went out of business.  Unhappy
  478.     with the performance of the Japanese support in XEmacs 19.11,
  479.     INS also contributed to the XEmacs development from late 1994
  480.     to early 1995.")
  481.  
  482.       (insert "\n\n\n\t")
  483.       (insert "Click ")
  484.       (about-xref "here" prev-page "Return to previous page")
  485.       (insert " to go back to the previous page.\n\n\t")
  486.       )
  487.      ((eq xref 'jwz)
  488.       (about-face "Jamie Zawinski" 'bold)
  489.       (insert "\t\t\"")
  490.       (about-face "So much to do, so little time." 'italic)
  491.       (insert "\"\n")
  492.       (insert "\n
  493.     Jamie Zawinski was primarily to blame for Lucid Emacs from its
  494.     inception in 1991, to 1994 when Lucid Inc. finally died.  He is
  495.     now to be found at Netscape Communications, hacking on the Unix
  496.     version of Netscape Navigator, and engaging in extensive sleep
  497.     deprivation experiments.
  498.  
  499.     Come visit his glorified .plan file at
  500.  
  501.         ")
  502.       (about-xref "http://www.netscape.com/people/jwz/" 'w3-jamie "Visit Jamie's WWW page")
  503.       (insert "\n\n\tClick ")
  504.       (about-xref "here" prev-page "Return to previous page")
  505.       (insert " to go back to the previous page.\n")
  506.       )
  507.      ((eq xref 'cthomp)
  508.       (about-face "Chuck Thompson" 'bold)
  509.       (insert " <cthomp@cs.uiuc.edu>
  510.  
  511.     Chuck, through being in the wrong place at the right time, has
  512.     gotten stuck with being Jamie's replacement as the primary
  513.     maintainer of XEmacs.  This has caused his hair to begin
  514.     falling out and quadrupled his daily coffee dosage.  Though he
  515.     works at and for the University of Illinois his funding
  516.     actually comes from Sun Microsystems.
  517.  
  518.     He has worked on XEmacs since November 1992, which fact
  519.     occasionally gives him nightmares.  His main contributions
  520.     have been the greatly enhanced redisplay engine, scrollbar
  521.     support, the toolbars, configure support and numerous other
  522.     minor features and fixes.
  523.  
  524.     Rumors that Chuck is aka Black Francis aka Frank Black are
  525.     completely unfounded.")
  526.  
  527.       (insert "\n\n\tClick ")
  528.       (about-xref "here" prev-page "Return to previous page")
  529.       (insert " to go back to the previous page.\n")
  530.       )
  531.      ((eq xref 'wing)
  532.       (about-face "Ben Wing" 'bold)
  533.       (insert " <wing@netcom.com>
  534.  
  535.     I'm not a thug -- I just play one on video.
  536.     My roommate says I'm a San Francisco \"Mission Critter\".\n\n\t")
  537.       (about-face "Gory stuff follows:" 'italic)
  538.       (insert "
  539.  
  540.     In 1992 I left a stuffy East-Coast university, set out into the
  541.     real world, and ended up a co-founder of Pearl Software.  As
  542.     part of this company, I am the principal architect of
  543.     Win-Emacs, a port of Lucid Emacs to Microsoft Windows and
  544.     Windows NT (for more info, e-mail to ")
  545.       (about-face "info@pearlsoft.com" 'italic)
  546.       (insert ").
  547.  
  548.     Since April 1993, I've worked on XEmacs as a contractor
  549.     for various companies, changing hats faster than Ronald Reagan's
  550.         hair color (oops, did I just show my age?).  My main contributions
  551.         to XEmacs include adding the Mule support, rewriting large parts
  552.         of the internals and the gory Xt/Xlib interfacing, implementing
  553.         the external client widget, improving the documentation (especially
  554.         the Emacs Lisp manual), and being a general nuisance ... er,
  555.         brainstormer for many of the new features of XEmacs.")
  556.       (insert "\n\n\tClick ")
  557.       (about-xref "here" prev-page "Return to previous page")
  558.       (insert " to go back to the previous page.\n")
  559.       )
  560.      ((eq xref 'mly)
  561.       (about-face "Richard Mlynarik" 'bold)
  562.       (insert " <mly@adoc.xerox.com>
  563.  
  564.     Cars are Evil.  Ride a bike.")
  565.  
  566.       (insert "\n\n\tClick ")
  567.       (about-xref "here" prev-page "Return to previous page")
  568.       (insert " to go back to the previous page.\n")
  569.       )
  570.      ((eq xref 'vladimir)
  571.       (about-face "Vladimir Ivanovic" 'bold)
  572.       (insert " <vladimir@mri.com>
  573.  
  574.     Technical lead for XEmacs at DevPro (formerly SunPro), a
  575.     division of Sun Microsystems.  He is now with Microtec
  576.     Research, Inc. working on embedded systems development
  577.     tools.")
  578.  
  579.       (insert "\n\n\tClick ")
  580.       (about-xref "here" prev-page "Return to previous page")
  581.       (insert " to go back to the previous page.\n")
  582.       )
  583.  
  584.      ((eq xref 'baw)
  585.       (about-face "Barry Warsaw" 'bold)
  586.       (insert " <bwarsaw@cnri.reston.va.us>
  587.  
  588.     Author of cc-mode for C++, C, and Objective-C editing, and
  589.     Supercite for mail and news citing.  Also various and sundry other
  590.     Emacs utilities, fixes, enhancements and kludgery as whimsy,
  591.     boredom, and ToT dictate (but not necessarily in that order).
  592.  
  593.  
  594.     Daddy
  595.     ⌐ 1994 Warsaw
  596.     ========
  597.     Drive me Daddy, drive me quick
  598.     Push my pedal, shift my stick
  599.     Fill me up with golden gas
  600.     My rubber squeals, I go real fast
  601.  
  602.     Milk me Daddy, milk me now
  603.     Milk me like a big ol' cow
  604.     I've got milk inside my udder
  605.     Churn it up and make some butter")
  606.  
  607.       (insert "\n\n\tClick ")
  608.       (about-xref "here" prev-page "Return to previous page")
  609.       (insert " to go back to the previous page.\n")
  610.       )
  611.  
  612.      ((eq xref 'bw)
  613.       (about-face "Bob Weiner" 'bold)
  614.       (insert " <weiner@mot.com>
  615.  
  616.     Author of the Hyperbole everyday information management
  617.     hypertext system and the OO-Browser multi-language code
  618.     browser.  He also designed the InfoDock integrated tool
  619.     framework for software engineers.  It runs atop XEmacs and is
  620.     available from \"/anonymous@cs.uiuc.edu:pub/xemacs/infodock\".
  621.     His interests include user interfaces, information management,
  622.     CASE tools, communications and enterprise integration.")
  623.  
  624.       (insert "\n\n\tClick ")
  625.       (about-xref "here" prev-page "Return to previous page")
  626.       (insert " to go back to the previous page.\n")
  627.       )
  628.  
  629.      ((eq xref 'piper)
  630.       (about-face "Andy Piper" 'bold)
  631.       (insert " <andyp@parallax.co.uk>
  632.  
  633.     Author of the original \"fake\" XEmacs toolbar, and outl-mouse for
  634.     mouse gesture based outlining.  Accomplished kludge contributor.")
  635.  
  636.       (insert "\n\n\tClick ")
  637.       (about-xref "here" prev-page "Return to previous page")
  638.       (insert " to go back to the previous page.\n")
  639.       )
  640.  
  641.      ((eq xref 'stig)
  642.       (about-face "Jonathan Stigelman" 'bold)
  643.       (insert " <stig@hackvan.com>
  644.  
  645.     Stig is sort of a tool fetishist.  He has a hate/love relationship
  646.     with computers and he hacks on XEmacs because it's a good tool that
  647.     makes computers somewhat less of a nuisance.  Besides XEmacs, Stig
  648.     especially likes his Leatherman, his Makita, and his lockpicks.
  649.     Stig wants a MIG welder and air tools.
  650.  
  651.     Stig likes to perch, hang from the ceiling, and climb on the walls.
  652.     Stig has a cool van.  Stig would like to be able to telecommute
  653.     from, say, the north rim of the Grand Canyon or the midst of Baja.")
  654.  
  655.       (insert "\n\n\tClick ")
  656.       (about-xref "here" prev-page "Return to previous page")
  657.       (insert " to go back to the previous page.\n")
  658.       )
  659.  
  660.      ((eq xref 'wmperry)
  661.       (about-face "William Perry" 'bold)
  662.       (insert " <wmperry@spry.com>
  663.  
  664.      Author of Emacs-w3, the builtin web browser that comes with XEmacs.
  665.  
  666.         He is currently working on adding really cool stylesheets to the
  667.         web, which will stress the new capabilities of XEmacs to the limit.
  668.  
  669.         He only gets paid for working on an HTTP server for Spry, but will
  670.         hack emacs for beer.")
  671.  
  672.       (insert "\n\n\tClick ")
  673.       (about-xref "here" prev-page "Return to previous page")
  674.       (insert " to go back to the previous page.\n")
  675.       )
  676.  
  677.      ((eq xref 'others)
  678.       (insert "Click ")
  679.       (about-xref "here" 'about "Return to previous page")
  680.       (insert " to go back to the previous page\n\n\t")
  681.  
  682.       (about-face "Other Contributors to XEmacs" 'italic)
  683.  
  684.       (insert "
  685.  
  686.     Like most free software, XEmacs is a collaborative effort.
  687.     These are some of the contributors; we have no doubt forgotten
  688.     someone; we apologize!  You can see some of our faces further below.
  689.  
  690.     ") (about-xref "Vladimir Ivanovic" 'vladimir "Find out more about Vladimir Ivanovic") (insert " <vladimir@eng.sun.com>
  691.       Technical lead for XEmacs at DevPro (formerly SunPro), a division
  692.           of Sun Microsystems.
  693.  
  694.     ") (about-xref "Jonathan Stigelman" 'stig "Find out more about Jonathan Stigelman") (insert " <stig@hackvan.com>
  695.           Peripatetic uninominal Emacs hacker.  Stig sometimes operates
  696.       out of a big white van set up for nomadic living and hacking.
  697.       Implemented the faster stay-up Lucid menus and hyper-apropos.
  698.       Contributor of many dispersed improvements in the core Lisp code,
  699.       and back-seat contributor for several of it's major packages.
  700.  
  701.     ") (about-xref "Barry Warsaw" 'baw "Find out more about Barry Warsaw") (insert " <bwarsaw@cnri.reston.va.us>
  702.       Author of cc-mode for C++, C, and Objective-C editing, and
  703.       Supercite for mail and news citing.  Also various and sundry other
  704.       Emacs utilities, fixes, enhancements and kludgery as whimsy,
  705.       boredom, and ToT dictate (but not necessarily in that order).
  706.  
  707.     ") (about-xref "Andy Piper" 'piper "Find out more about Andy Piper") (insert " <andyp@parallax.co.uk>
  708.       Created the prototype for the toolbars.  Has been the first to make
  709.       use of many of the new XEmacs graphics features.
  710.  
  711.     ") (about-xref "Bob Weiner" 'bw "Find out more about Bob Weiner") (insert " <weiner@mot.com>
  712.       Author of the Hyperbole everyday information management
  713.       hypertext system and the OO-Browser multi-language code
  714.       browser.  He also designed the InfoDock integrated tool
  715.       framework for software engineers.  It runs atop XEmacs and is
  716.       available from \"/anonymous@cs.uiuc.edu:pub/xemacs/infodock\".
  717.       His interests include user interfaces, information management,
  718.       CASE tools, communications and enterprise integration.
  719.  
  720.     ") (about-xref "William Perry" 'wmperry "Find out more about Bill Perry") (insert " <wmperry@spry.com>
  721.       Author of W3, a package for browsing the World Wide Web
  722.       which is included in the standard XEmacs distribution.
  723.       Although W3 runs on all versions of Emacs, Bill has been
  724.       quick to take advantage of the unique features of XEmacs
  725.       (such as embedded images and windows).  Thus, the XEmacs
  726.       version of W3 is significantly more powerful than versions
  727.       running in other Emacs variants.
  728.  
  729.     Kyle Jones <kyle@crystal.wonderworks.com>
  730.       Author of VM (View Mail), a mail-reading package that is
  731.       included in the standard XEmacs distribution, and
  732.       contributor of many improvements and bug fixes.  Unlike most
  733.       other mail-reading packages, VM uses the standard Unix-mail
  734.       format for its mailboxes; thus, you can use VM concurrently
  735.       with standard mail readers such as Unix mail and ELM.
  736.  
  737.     Darrell Kindred <Darrell.Kindred@cmu.edu>
  738.       Unofficial maintainer of the xemacs-beta list of extant
  739.       bugs and contributor of an extraordinary number of
  740.       important bug fixes, many of them in areas that neither
  741.       Chuck nor Ben was particularly enthusiastic about
  742.       investigating.
  743.  
  744.     Eduardo Pelegri-Llopart <pelegri@eng.sun.com>
  745.       Author of EOS, a package included in the standard XEmacs
  746.       distribution that integrates XEmacs with the SPARCworks
  747.       development environment from SunPro.  Past lead for XEmacs
  748.       at SunPro; advocated the validity of using Epoch, and later
  749.       Lemacs, at SunPro through several early prototypes.
  750.  
  751.     Matthieu Devin <devin@rs.com>
  752.       Part of the original (pre-19.0) Lucid Emacs development team.
  753.       Matthieu wrote the initial Energize interface, designed the
  754.       toolkit-independent Lucid Widget library, and fixed enough
  755.       redisplay bugs to last a lifetime.  The features in Lucid
  756.       Emacs were largely inspired by Matthieu's initial prototype
  757.       of an Energize interface using Epoch.
  758.  
  759.     Harlan Sexton <hbs@odi.com>
  760.       Part of the original (pre-19.0) Lucid Emacs development team.
  761.       Harlan designed and implemented many of the low level data
  762.       structures which are original to the Lucid version of Emacs,
  763.       including extents and hash tables.
  764.  
  765.     Eric Benson <eb@kaleida.com>
  766.       Part of the original (pre-19.0) Lucid Emacs development team.
  767.       Eric played a big part in the design of many aspects of the
  768.       system, including the new command loop and keymaps, fixed
  769.       numerous bugs, and has been a reliable beta tester ever
  770.       since.
  771.  
  772.     John Rose <john.rose@sun.com>
  773.       Author of many extensions to the `extents' code, including
  774.       the initial implementation of `duplicable' properties.
  775.  
  776.     Hans Muller <hmuller@eng.sun.com>
  777.      Author of the code used to connect XEmacs with ToolTalk,
  778.      and of an early client of the external Emacs widget.
  779.  
  780.     In addition to those just mentioned, the following people have
  781.     spent a great deal of effort providing feedback, testing beta
  782.     versions of XEmacs, providing patches to the source code,
  783.     or doing all of the above.  We couldn't have done it without
  784.     them.
  785.  
  786.       Nagi M. Aboulenein <aboulene@cs.wisc.edu>
  787.       Gennady Agranov <agranov@csa.CS.Technion.Ac.IL>
  788.       Mark Allender <allender@vnet.IBM.COM>
  789.       Butch Anton <butch@taligent.com>
  790.       Tor Arntsen <tor@spacetec.no>
  791.       Mike Battaglia <mbattagl@dsccc.com>
  792.       Neal Becker <neal@ctd.comsat.com>
  793.       Paul Bibilo <peb@delcam.co.uk>
  794.       Jan Borchers <job@ira.uka.de>
  795.       Mark Borges <mdb@cdc.noaa.gov>
  796.       Tim Bradshaw <tfb@edinburgh.ac.uk>
  797.       Rick Braumoeller <rickb@mti.sgi.com>
  798.       Matthew J. Brown <mjb@doc.ic.ac.uk>
  799.       Martin Buchholz <mrb@almaden.ibm.com>
  800.       Alastair Burt <burt@dfki.uni-kl.de>
  801.       Rick Busdiecker <rfb@lehman.com>
  802.       Richard Caley <rjc@cstr.edinburgh.ac.uk>
  803.       Philippe Charton <charton@lmd.ens.fr>
  804.       Peter Cheng <phc@sun.com>
  805.       Jin S. Choi <jin@atype.com>
  806.       Serenella Ciongoli <czs00@ladybug.oes.amdahl.com>
  807.       Richard Cognot <cognot@ensg.u-nancy.fr>
  808.       Andy Cohen <cohen@andy.bu.edu>
  809.       Christopher Davis <ckd@kei.com>
  810.       Michael Diers <mdiers@logware.de>
  811.       William G. Dubuque <wgd@martigny.ai.mit.edu>
  812.       Samuel J. Eaton <samuele@cogs.susx.ac.uk>
  813.       Carl Edman <cedman@Princeton.EDU>
  814.       Eric Eide <eeide@asylum.cs.utah.edu>
  815.       David Fletcher <frodo@tsunami.com>
  816.       Paul Flinders <ptf@delcam.co.uk>
  817.       Jered J Floyd <jered@vorlon.mit.edu>
  818.       Jerry Frain <jerry@sneffels.tivoli.com>
  819.       Benjamin Fried <bf@morgan.com>
  820.       Barry Friedman <friedman@bnr.ca>
  821.       Tim Geisler <Tim.Geisler@informatik.uni-muenchen.de>
  822.       Dave Gillespie <daveg@synaptics.com>
  823.       Christian F. Goetze <c-goetze@akebono.u-aizu.ac.jp>
  824.       James Grinter <jrg@demon.net>
  825.       Ben Gross <bgross@uiuc.edu>
  826.       Dirk Grunwald <grunwald@foobar.cs.Colorado.EDU>
  827.       Dipankar Gupta <dg@hplb.hpl.hp.com>
  828.       Markus Gutschke <gutschk@GOEDEL.UNI-MUENSTER.DE>
  829.       Adam Hammer <hammer@cs.purdue.edu>
  830.       Magnus Hammerin <magnush@epact.se>
  831.       Derek Harding <dharding@lssec.bt.co.uk>
  832.       John Haxby <J.Haxby@isode.com>
  833.       Charles Hines <chuck_hines@VNET.IBM.COM>
  834.       David Hughes <djh@harston.cv.com>
  835.       Andrew Innes <andrewi@harlequin.co.uk>
  836.       Markku Jarvinen <Markku.Jarvinen@simpukka.funet.fi>
  837.       Robin Jeffries <robin.jeffries@sun.com>
  838.       Philip Johnson <johnson@uhics.ics.Hawaii.Edu>
  839.       Doug Keller <dkeller@vnet.ibm.com>
  840.       Gregor Kennedy <gregork@dadd.ti.com>
  841.       Michael Kifer <kifer@cs.sunysb.edu>
  842.       Simon Leinen <simon@lia.di.epfl.ch>
  843.       James LewisMoss <moss@cs.sc.edu>
  844.       Mats Lidell <mats.lidell@contactor.se>
  845.       Matt Liggett <mliggett@seven.ucs.indiana.edu>
  846.       Christian Limpach <Christian.Limpach@nice.ch>
  847.       Robert Lipe <robertl@arnet.com>
  848.       Damon Lipparelli <lipp@aa.net>
  849.       Hamish Macdonald <hamish@bnr.ca>
  850.       Patrick MacRoberts <macro@hpcobr30.cup.hp.com>
  851.       Steve March <smarch@quaver.urbana.mcd.mot.com>
  852.       Simon Marshall <Simon.Marshall@mail.esrin.esa.it>
  853.       Dave Mason <dmason@plg.uwaterloo.ca>
  854.       Jaye Mathisen <mrcpu@cdsnet.net>
  855.       Michael Meissner <meissner@osf.org>
  856.       David M. Meyer <meyer@ns.uoregon.edu>
  857.       John Morey <jmorey@crl.com>
  858.       Rob Mori <rob.mori@sun.com>
  859.       Heiko Muenkel <muenkel@tnt.uni-hannover.de>
  860.       Arup Mukherjee <arup+@cs.cmu.edu>
  861.       Colas Nahaboo <Colas.Nahaboo@sophia.inria.fr>
  862.       Lynn D. Newton <lynn@ives.phx.mcd.mot.com>
  863.       Georg Nikodym <Georg.Nikodym@canada.sun.com>
  864.       Andy Norman <ange@hplb.hpl.hp.com>
  865.       Kim Nyberg <kny@tekla.fi>
  866.       David Ofelt <ofelt@getalife.Stanford.EDU>
  867.       Greg Onufer <Greg.Onufer@eng.sun.com>
  868.       Marc Paquette <Marc.Paquette@Softimage.com>
  869.       Thomas A. Peterson <tap@src.honeywell.com>
  870.       Peter Pezaris <pez@atlantic2.sbi.com>
  871.       Tibor Polgar <tlp00@eng.amdahl.com>
  872.       E. Rehmi Post <rehmi@asylum.sf.ca.us>
  873.       Paul M Reilly <preilly@shr.dec.com>
  874.       Jack Repenning <jackr@sgi.com>
  875.       Daniel Rich <drich@sgi.com>
  876.       Roland Rieke <rol@darmstadt.gmd.de>
  877.       Russell Ritchie <russell@gssec.bt.co.uk>
  878.       Mike Russell <mjruss@rchland.vnet.ibm.com>
  879.       Jan Sandquist <etxquist@iqa.ericsson.se>
  880.       Marty Sasaki <sasaki@netop3.harvard.edu>
  881.       Mike Scheidler <c23mts@kocrsv01.delcoelect.com>
  882.       Darrel Schneider <darrel@slc.com>
  883.       Hayden Schultz <haydens@ll.mit.edu>
  884.       Cotton Seed <cottons@mit.edu>
  885.       John Shen <zfs60@cas.org>
  886.       Jeffrey Sparkes <jsparkes@bnr.ca>
  887.       Michael Sperber <sperber@informatik.uni-tuebingen.de>
  888.       Francois Staes <frans@kiwi.uia.ac.be>
  889.       Rick Tait <rickt@gnu.ai.mit.edu>
  890.       James Thompson <thompson@wg2.waii.com>
  891.       Raymond L. Toy <toy@rtp.ericsson.se>
  892.       John Turner <turner@xdiv.lanl.gov>
  893.       Vladimir Vukicevic <vladimir@intrepid.com>
  894.       Yoav Weiss <yoav@zeus.datasrv.co.il>
  895.       Rod Whitby <rwhitby@asc.corp.mot.com>
  896.       Rich Williams <rdw@hplb.hpl.hp.com>
  897.       Jason Yanowitz <yanowitz@eternity.cs.umass.edu>
  898.       La Monte Yarroll <piggy@hilbert.maths.utas.edu.au>
  899.       Blair Zajac <blair@olympia.gps.caltech.edu>
  900.       Daniel Zivkovic <daniel@canada.sun.com>
  901.       and the makers of Jolt Cola (tm)")
  902.       (goto-char (point-min))
  903.       (while (re-search-forward "^[ \t]*\\([^<>\n]+\\) <[^>\n]+>$"
  904.                     nil t)
  905.         (set-extent-face (make-extent (match-beginning 1) (match-end 1))
  906.                  'bold))
  907.       (goto-char (point-min))
  908.       (while (re-search-forward "^[ \t]*<\\([^>\n]+\\)>$" nil t)
  909.         (set-extent-face (make-extent (match-beginning 1) (match-end 1))
  910.                  'bold))
  911.  
  912.       (goto-char (point-max))
  913.       (insert "\n")
  914.       (about-add-mosaic)
  915.       (goto-char (point-max))
  916.       (insert "\n\n\tClick ")
  917.       (about-xref "here" 'about "Return to previous page")
  918.       (insert " to go back to the previous page.\n")
  919.       )
  920.      ((eq xref 'features)
  921.       (insert "Click ")
  922.       (about-xref "here" 'about "Return to previous page")
  923.       (insert " to go back to the previous page\n\n\t")
  924.  
  925.       (about-face "New Features in XEmacs" 'bold-italic)
  926.  
  927.       (insert "\n
  928.      * A real toolbar.
  929.      * Proper integration with Xt and Motif (including Motif menubars
  930.        and scrollbars).  Motif look-alike menubars and scrollbars
  931.        are provided for those systems without real Motif support.
  932.      * Face support on TTY's (color support coming in 19.14).
  933.      * Horizontal and vertical scrollbars in all windows.
  934.      * Support for variable-width and variable height fonts.
  935.      * Support for display on multiple simultaneous X and/or TTY devices.
  936.      * Support for arbitrary pixmaps in a buffer.
  937.      * Access to the ToolTalk API.
  938.      * Support for using XEmacs frames as Xt widgets.
  939.      * Support for overlapping regions (or extents) and efficient handling
  940.        of a large number of such extents in a single buffer.
  941.      * Powerful, flexible control over the display characteristics
  942.        of most of the visual aspects of XEmacs through the use
  943.        of specifiers, which allow separate values to be specified
  944.        for individual buffers, windows, frames, devices, device classes,
  945.        and device types.
  946.      * A clean interface to the menubar, window-system events, and key
  947.        combinations."))
  948.      ))
  949.       (goto-char (point-min))
  950.       ))))
  951.