362b8150ec3544848c407f57f60730a0728c811e
[chise/xemacs-chise.git.1] / lisp / about.el
1 ;;; about.el --- the About The Authors page (shameless self promotion).
2
3 ;; Copyright (c) 1997 Free Software Foundation, Inc.
4 ;; Copyright (C) 2001 Ben Wing.
5
6 ;; Keywords: extensions
7 ;; Version: 2.5
8 ;; Maintainer: XEmacs Development Team
9
10 ;; This file is part of XEmacs.
11
12 ;; XEmacs is free software; you can redistribute it and/or modify it
13 ;; under the terms of the GNU General Public License as published by
14 ;; the Free Software Foundation; either version 2, or (at your option)
15 ;; any later version.
16
17 ;; XEmacs is distributed in the hope that it will be useful, but
18 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20 ;; General Public License for more details.
21
22 ;; You should have received a copy of the GNU General Public License
23 ;; along with XEmacs; see the file COPYING.  If not, write to the
24 ;; Free Software Foundation, 59 Temple Place - Suite 330,
25 ;; Boston, MA 02111-1307, USA.
26
27 ;;; Synched up with: Not in FSF.
28
29 ;; Original code: Jamie Zawinski <jwz@jwz.org>
30 ;; Text: Ben Wing <ben@xemacs.org>, Jamie Zawinski <jwz@jwz.org>
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@xemacs.org>
35 ;; More hacking for 19.12 by Chuck Thompson and Ben Wing.
36 ;; 19.13 and 19.14 updating done by Chuck Thompson.
37 ;; 19.15 and 20.0 updating done by Steve Baur and Martin Buchholz.
38
39 ;; Completely rewritten for 20.3 by Hrvoje Niksic <hniksic@xemacs.org>.
40 ;; The original had no version numbers; I numbered the rewrite as 2.0.
41 ;; Extensively revamped and most text rewritten by Ben Wing
42 ;; <ben@xemacs.org> for 21.4.
43
44 ;; Many things in this file are to gag.  Ideally, we should just use
45 ;; HTML (or some other extension, e.g. info) for this sort of thing.
46 ;; However, W3 loads too long and is too large to be dumped with
47 ;; XEmacs.
48
49 ;; If you think this is ugly now -- o boy, you should have seen it
50 ;; before.
51
52 (require 'wid-edit)
53
54 ;; People in this list have their individual links from the main page,
55 ;; or from the `Legion' page.  If they have an image, it should be
56 ;; named after the CAR of the list element (baw -> baw.png).
57 ;;
58 ;; If you add to this list, you'll want to update
59 ;; `about-personal-info' and `about-hackers', and add the name to one
60 ;; of the three mutually exclusive lists just below.
61
62 (defface about-headline-face
63   '((((class color) (background dark))
64      (:foreground "red" :bold t))
65     ;; red4 is hardly different from black on windows.
66     (((class color) (background light)
67       (type mswindows))
68      (:foreground "red" :bold t))
69     (((class color) (background light))
70      (:foreground "red4" :bold t))
71     (((class grayscale) (background light))
72      (:foreground "LightGray" :bold t))
73     (((class grayscale) (background dark))
74      (:foreground "DimGray" :bold t))
75     (t (:bold t)))
76   "Face used for color-highlighted headlines in the About page.")
77
78 (defface about-link-face
79   '((((class color) (background dark))
80      (:foreground "blue" :underline t))
81     ;; blue4 is hardly different from black on windows.
82     (((class color) (background light) (type mswindows))
83      (:foreground "blue3" :underline t))
84     (((class color) (background light))
85      (:foreground "blue4" :underline t))
86     (((class grayscale) (background light))
87      (:foreground "DimGray" :bold t :italic t :underline t))
88     (((class grayscale) (background dark))
89      (:foreground "LightGray" :bold t :italic t :underline t))
90     (t (:underline t)))
91   "Face used for links in the About page.")
92
93 (defvar xemacs-hackers
94   '(
95     ;; to sort the stuff below, use M-x sort-regexp-fields RET
96     ;; ^.*$ RET (\([a-z]*\) RET
97     (adrian   "Adrian Aichner"    "adrian@xemacs.org")
98     (aj       "Andreas Jaeger"    "aj@xemacs.org")
99     (ajc      "Andrew Cosgriff"   "ajc@xemacs.org")
100     (alastair "Alastair Houghton" "alastair@xemacs.org")
101     (baw      "Barry Warsaw"      "bwarsaw@xemacs.org")
102     (ben      "Ben Wing"          "ben@xemacs.org")
103     (bw       "Bob Weiner"        "weiner@xemacs.org")
104     (cgw      "Charles Waldman"   "cgw@xemacs.org")
105     (chr      "Christian Nybø"    "chr@xemacs.org")
106     (craig    "Craig Lanning"     "craig@xemacs.org")
107     (cthomp   "Chuck Thompson"    "cthomp@xemacs.org")
108     (daiki    "Daiki Ueno"        "daiki@xemacs.org")
109     (dan      "Dan Holmsand"      "dan@xemacs.org")
110     (darrylo  "Darryl Okahata"    "darrylo@xemacs.org")
111     (devin    "Matthieu Devin"    "devin@xemacs.org")
112     (dkindred "Darrell Kindred"   "dkindred@xemacs.org")
113     (dmoore   "David Moore"       "dmoore@xemacs.org")
114     (dv       "Didier Verna"      "didier@xemacs.org")
115     (eb       "Eric Benson"       "eb@xemacs.org")
116     (fabrice  "Fabrice Popineau"  "fabrice@xemacs.org")
117     (golubev  "I N Golubev"       "golubev@xemacs.org")
118     (gunnar   "Gunnar Evermann"   "gunnar@xemacs.org")
119     (hbs      "Harlan Sexton"     "hbs@xemacs.org")
120     (hisashi  "Hisashi Miyashita" "hisashi@xemacs.org")
121     (hmuller  "Hans Muller"       "hmuller@xemacs.org")
122     (hniksic  "Hrvoje Niksic"     "hniksic@xemacs.org")
123     (hobley   "David hobley"      "hobley@xemacs.org")
124     (jan      "Jan Vroonhof"      "jan@xemacs.org")
125     (jareth   "Jareth Hein"       "jareth@xemacs.org")
126     (jason    "Jason R. Mastaler" "jason@xemacs.org")
127     (jens     "Jens Lautenbacher" "jens@xemacs.org")
128     (jmiller  "Jeff Miller"       "jmiller@xemacs.org")
129     (jonathan "Jonathan Harris"   "jonathan@xemacs.org")
130     (juhp     "Jens-Ulrik Holger Petersen" "petersen@xemacs.org")
131     (jwz      "Jamie Zawinski"    "jwz@xemacs.org")
132     (kazz     "IENAGA Kazuyuki"   "ienaga@xemacs.org")
133     (kirill   "Kirill Katsnelson" "kirill@xemacs.org")
134     (kyle     "Kyle Jones"        "kyle@xemacs.org")
135     (larsi    "Lars Magne Ingebrigtsen" "larsi@xemacs.org")
136     (marcpa   "Marc Paquette"     "marcpa@xemacs.org")
137     (martin   "Martin Buchholz"   "martin@xemacs.org")
138     (mcook    "Michael R. Cook"   "mcook@xemacs.org")
139     (mly      "Richard Mlynarik"  "mly@xemacs.org")
140     (morioka  "MORIOKA Tomohiko"  "morioka@xemacs.org")
141     (mta      "Mike Alexander"    "mta@xemacs.org")
142     (ograf    "Oliver Graf"       "ograf@xemacs.org")
143     (olivier  "Olivier Galibert"  "olivier@xemacs.org")
144     (oscar    "Oscar Figueiredo"  "oscar@xemacs.org")
145     (pelegri  "Eduardo Pelegri-Llopart" "pelegri@xemacs.org")
146     (pez      "Peter Pezaris"     "pez@xemacs.org")
147     (piper    "Andy Piper"        "andy@xemacs.org")
148     (pittman  "Daniel Pittman"    "pittman@xemacs.org")
149     (rickc    "Rick Campbell"     "rickc@xemacs.org")
150     (rose     "John Rose"         "rose@xemacs.org")
151     (rossini  "Anthony Rossini"   "rossini@xemacs.org")
152     (slb      "Steve Baur"        "steve@xemacs.org")
153     (sperber  "Michael Sperber"   "sperber@xemacs.org")
154     (stig     "Jonathan Stigelman" "stig@xemacs.org")
155     (stigb    "Stig Bjorlykke"    "stigb@xemacs.org")
156     (thiessel "Marcus Thiessel"   "marcus@xemacs.org")
157     (tomonori "Tomonori Ikeyama"  "tomonori@xemacs.org")
158     (tuck     "Matt Tucker"       "tuck@xemacs.org")
159     (turnbull "Stephen Turnbull"  "turnbull@xemacs.org")
160     (vin      "Vin Shelton"       "acs@xemacs.org")
161     (vladimir "Vladimir Ivanovic" "vladimir@xemacs.org")
162     (wmperry  "William Perry"     "wmperry@xemacs.org")
163     (yoshiki  "Yoshiki Hayashi"   "yoshiki@xemacs.org")
164     (youngs   "Steve Youngs"      "youngs@xemacs.org")
165     )
166   "Alist of XEmacs hackers.")
167
168 (defvar about-current-release-maintainers
169   ;; this list should not necessarily be in sorted order.
170   '(turnbull adrian ben hniksic jason martin piper sperber youngs))
171
172 (defvar about-other-current-hackers
173   ;; to sort this list or the one below, use:
174   ;; M-x sort-regexp-fields RET [a-z]+ RET \(.*\) RET
175   '(aj alastair cgw craig daiki dan dv fabrice golubev gunnar hisashi
176        jan jareth jmiller jonathan kazz kirill larsi morioka mta ograf
177        olivier oscar pittman tomonori tuck vin wmperry yoshiki))
178
179 (defvar about-once-and-future-hackers
180   '(ajc baw bw chr cthomp darrylo devin dkindred dmoore eb hbs hmuller
181         hobley jens juhp jwz kyle marcpa mcook mly ograf pelegri pez
182         rickc rose rossini slb stig stigb thiessel vladimir))
183
184 ;; The CAR of alist elements is a valid argument to `about-url-link'.
185 ;; It is preferred to a simple string, because it makes maintenance
186 ;; easier.  Please add new URLs to this list.
187 (defvar about-url-alist
188     ;; to sort the stuff below, use M-x sort-regexp-fields RET
189     ;; ^.*$ RET (\([a-z]*\) RET
190   '((ajc        . "http://www-personal.monash.edu.au/~ajc/")
191     (baw        . "http://www.python.org/~bwarsaw/")
192     (ben        . "http://www.666.com/ben/")
193     (ben-xemacs . "http://www.xemacs.org/Architecting-XEmacs/index.html")
194     (beopen     . "http://www.beopen.com/")
195     (cc-mode    . "http://cc-mode.sourceforge.net/")
196     (chr        . "http://www.xemacs.org/faq/")
197     (daiki      . "http://deisui.bug.org/diary/servlet/view")
198     (dkindred   . "http://www.cs.cmu.edu/People/dkindred/me.html")
199     (dmoore     . "http://oj.egbt.org/dmoore/")
200     (dv         . "http://www.lrde.epita.fr/~didier/")
201     (jason      . "http://www.mastaler.com/")
202     (juhp       . "http://www.kurims.kyoto-u.ac.jp/~petersen/")
203     (jwz        . "http://www.jwz.org/")
204     (kazz       . "http://www.imasy.or.jp/~kazz/")
205     (kyle       . "http://www.wonderworks.com/kyle/")
206     (larsi      . "http://quimby.gnus.org/lmi/")
207     (marcpa     . "http://www.positron911.com/products/power.htm")
208     (ograf      . "http://www.fga.de/~ograf/")
209     (pez        . "http://cbs.sportsline.com/")
210     (piper      . "http://www.xemacs.freeserve.co.uk/")
211     (stigb      . "http://www.tihlde.hist.no/~stigb/")
212     (vin        . "http://www.upa.org/")
213     (vladimir   . "http://www.leonora.org/~vladimir/")
214     (wget       . "http://www.wget.org/")
215     (wget-ftp   . "ftp://gnjilux.cc.fer.hr/pub/unix/util/wget/")
216     (xemacs     . "http://www.xemacs.org/"))
217   "Some of the more important URLs.")
218
219 (defvar about-left-margin 3)
220
221 ;; Insert a URL link to the buffer.
222 (defun about-url-link (what &optional echo)
223   (or (stringp what)
224       (setq what (cdr (assq what about-url-alist))))
225   (assert what)
226   (widget-create 'url-link
227                  :button-prefix ""
228                  :button-suffix ""
229                  :help-echo echo
230                  what))
231
232 ;; Insert a mailto: link to the buffer.
233 (defun about-mailto-link (address)
234   (widget-create 'url-link :help-echo (concat "Send mail to " address)
235                  :button-prefix ""
236                  :button-suffix ""
237                  :tag address
238                  (concat "mailto:" address)))
239
240 ;; Attach a face to a string, in order to be inserted into the buffer.
241 ;; Make sure that the extent is duplicable, but unique.  Returns the
242 ;; string.
243 (defun about-with-face (string face)
244   (let ((ext (make-extent 0 (length string) string)))
245     (set-extent-property ext 'duplicable t)
246     (set-extent-property ext 'unique t)
247     (set-extent-property ext 'start-open t)
248     (set-extent-property ext 'end-open t)
249     (set-extent-face ext face))
250   string)
251
252 ;; Switch to buffer NAME.  If it doesn't exist, make it and switch to it.
253 (defun about-get-buffer (name)
254   (cond ((get-buffer name)
255          (switch-to-buffer name)
256          (delete-other-windows)
257          (goto-char (point-min))
258          name)
259         (t
260          (switch-to-buffer name)
261          (delete-other-windows)
262          (buffer-disable-undo)
263          ;; #### This is a temporary fix until wid-edit gets fixed right.
264          ;; We don't do everything that widget-button-click does -- i.e.
265          ;; we don't change the link color on button down -- but that's
266          ;; not important.
267          (add-local-hook
268           'mouse-track-click-hook
269           #'(lambda (event count)
270               (cond
271                ((widget-event-point event)
272                 (let* ((pos (widget-event-point event))
273                        (button (get-char-property pos 'button)))
274                   (when button
275                     (widget-apply-action button event)
276                     t))))))
277          (set-specifier left-margin-width about-left-margin (current-buffer))
278          (set (make-local-variable 'widget-button-face) 'about-link-face)
279          nil)))
280
281 ;; Set up the stuff needed by widget.  Allowed types are `bury' and
282 ;; `kill'.
283 (defun about-finish-buffer (&optional type)
284   (or type (setq type 'bury))
285   (widget-insert "\n")
286   (if (eq type 'bury)
287       (widget-create 'link :help-echo "Bury buffer"
288                      :action (lambda (&rest ignore)
289                                (bury-buffer))
290                      "Remove")
291     (widget-create 'link :help-echo "Kill buffer"
292                    :action (lambda (&rest ignore)
293                              (kill-buffer (current-buffer)))
294                    "Kill"))
295   (widget-insert " this buffer and return to previous.\n")
296   (use-local-map (make-sparse-keymap))
297   (set-keymap-parent (current-local-map) widget-keymap)
298   (if (eq type 'bury)
299       (progn
300         (local-set-key "q" 'bury-buffer)
301         (local-set-key "l" 'bury-buffer))
302     (let ((dispose (lambda () (interactive) (kill-buffer (current-buffer)))))
303       (local-set-key "q" dispose)
304       (local-set-key "l" dispose)))
305   (local-set-key " " 'scroll-up)
306   (local-set-key [backspace] 'scroll-down)
307   (local-set-key "\177" 'scroll-down)
308   (widget-setup)
309   (goto-char (point-min))
310   (toggle-read-only 1)
311   (set-buffer-modified-p nil))
312
313 ;; Make the appropriate number of spaces.
314 (defun about-center (string-or-glyph)
315   (let ((n (- (startup-center-spaces string-or-glyph) about-left-margin)))
316     (make-string (if (natnump n) n 0) ?\ )))
317
318 ;; Main entry page.
319
320 ;;;###autoload
321 (defun about-xemacs ()
322   "Describe the True Editor and its minions."
323   (interactive)
324   (unless (about-get-buffer "*About XEmacs*")
325     (widget-insert (about-center xemacs-logo))
326     (widget-create 'default
327                    :format "%t"
328                    :tag-glyph xemacs-logo)
329     (widget-insert "\n")
330     (let* ((emacs-short-version (format "%d.%d"
331                                         emacs-major-version
332                                         emacs-minor-version))
333            (emacs-about-version (format "version %s; April 2001"
334                                         emacs-short-version)))
335       (widget-insert (about-center emacs-about-version))
336       (widget-create 'link :help-echo "What's new in XEmacs"
337                      :action 'about-news
338                      emacs-about-version))
339
340     (widget-insert
341      "\n\n"
342      (about-with-face "XEmacs" 'bold-italic)
343      " is a powerful, highly customizable open source text editor and
344 application development system, with full GUI support.  It is protected
345 under the GNU Public License and related to other versions of Emacs, in
346 particular GNU Emacs.  Its emphasis is on modern graphical user
347 interface support and an open software development model, similar to
348 Linux.  XEmacs has an active development community numbering in the
349 hundreds (and thousands of active beta testers on top of this), and runs
350 on all versions of MS Windows, on Linux, and on nearly every other
351 version of Unix in existence.  ")
352     (widget-create 'link :help-echo "An XEmacs history lesson"
353                    :action 'about-collaboration
354                    :button-prefix ""
355                    :button-suffix ""
356                    "Support for XEmacs")
357     (widget-insert
358      " has been supplied by
359 Sun Microsystems, University of Illinois, Lucid, ETL/Electrotechnical
360 Laboratory, Amdahl Corporation, BeOpen, and others, as well as the
361 unpaid time of a great number of individual developers.
362
363 XEmacs has many ")
364     (widget-create 'link :help-echo "See a list of XEmacs advantages over GNU Emacs"
365                    :action 'about-advantages
366                    :button-prefix ""
367                    :button-suffix ""
368                    "advantages")
369     (widget-insert " over GNU Emacs.  In addition, XEmacs 21.4
370 provides many ")
371     (widget-create 'link :help-echo "See a list of new features in XEmacs 21.4"
372                    :action 'about-news
373                    :button-prefix ""
374                    :button-suffix ""
375                    "new features")
376     (widget-insert " not found in previous versions of XEmacs.
377 More details on XEmacs's functionality, including bundled packages, can
378 be obtained through the ")
379     (widget-create 'info-link
380                    :help-echo "Browse the info system"
381                    :button-prefix ""
382                    :button-suffix ""
383                    :tag "info"
384                    "(dir)")
385
386     (widget-insert
387      " on-line information system.\n
388 The XEmacs web page can be browsed, using any WWW browser at\n
389 \t\t    ")
390     (about-url-link 'xemacs "Visit XEmacs WWW page")
391     (widget-insert "\n
392 Note that W3 (XEmacs's own browser), might need customization (due to
393 firewalls) in order to work correctly.
394
395 XEmacs is the result of the time and effort of many people.  The
396 developers responsible for this release are:\n\n")
397
398     (flet ((setup-person (who)
399             (widget-insert "\t* ")
400             (let* ((entry (assq who xemacs-hackers))
401                    (name (cadr entry))
402                    (address (caddr entry)))
403               (widget-create 'link
404                              :help-echo (concat "Find out more about " name)
405                              :button-prefix ""
406                              :button-suffix ""
407                              :action 'about-maintainer
408                              :tag name
409                              :value who)
410               (widget-insert (format "  <%s>\n" address)))))
411       ;; Setup persons responsible for this release.
412       (mapc 'setup-person about-current-release-maintainers)
413       (widget-insert "\n\t* ")
414       (widget-create 'link :help-echo "A legion of XEmacs hackers"
415                      :action 'about-hackers
416                      :button-prefix ""
417                      :button-suffix ""
418                      "The full list of contributors...")
419       (widget-insert "\n
420 Steve Baur was the primary maintainer for 19.15 through 21.0.\n\n")
421       (setup-person 'slb)
422       (widget-insert "
423 Chuck Thompson and Ben Wing were the maintainers for 19.11 through 19.14
424 and heavy code contributors for 19.8 through 19.10.\n\n")
425       (setup-person 'cthomp)
426       (setup-person 'ben)
427       (widget-insert "
428 Jamie Zawinski was the maintainer for 19.0 through 19.10 (the entire
429 history of Lucid Emacs).\n\n")
430       (setup-person 'jwz))
431     (about-finish-buffer)
432     ;; it looks horrible with the cursor on the first line, since it's
433     ;; so big.
434     (goto-line 2)))
435
436 ;; View news
437 (defun about-news (&rest ignore)
438   (view-emacs-news)
439   (message "%s" (substitute-command-keys
440                  "Press \\[kill-buffer] to exit this buffer")))
441
442 (defun about-collaboration (&rest ignore)
443   (unless (about-get-buffer "*About Collaboration*")
444     (let ((title "Why Another Version of Emacs"))
445       (widget-insert
446        "\n"
447        (about-center title)
448        (about-with-face title 'bold)))
449     (widget-insert
450      "\n\n"
451      (about-with-face "The Lucid, Inc. Point of View"
452                       'italic)
453      " (quite outdated)\n
454 At the time of the inception of Lucid Emacs (the former name of
455 XEmacs), Lucid's latest product was Energize, a C/C++ development
456 environment.  Rather than invent (and force our users to learn) a new
457 user interface, we chose to build part of our environment on top of
458 the world's best editor, GNU Emacs.  (Though our product is
459 commercial, the work we did on GNU Emacs is free software, and is
460 useful in its own right.)
461
462 We needed a version of Emacs with mouse-sensitive regions, multiple
463 fonts, the ability to mark sections of a buffer as read-only, the
464 ability to detect which parts of a buffer have been modified, and many
465 other features.
466
467 For our purposes, the existing version of Epoch was not sufficient; it
468 did not allow us to put arbitrary pixmaps/icons in buffers, `undo' did
469 not restore changes to regions, regions did not overlap and merge
470 their attributes in the way we needed, and several other things.
471
472 We could have devoted our time to making Epoch do what we needed (and,
473 in fact, we spent some time doing that in 1990) but, since the FSF
474 planned to include Epoch-like features in their version 19, we decided
475 that our efforts would be better spent improving Emacs 19 instead of
476 Epoch.
477
478 Our original hope was that our changes to Emacs would be incorporated
479 into the \"official\" v19.  However, scheduling conflicts arose, and
480 we found that, given the amount of work still remaining to be done, we
481 didn't have the time or manpower to do the level of coordination that
482 would be necessary to get our changes accepted by the FSF.
483 Consequently, we released our work as a forked branch of Emacs,
484 instead of delaying any longer.
485
486 Roughly a year after Lucid Emacs 19.0 was released, a beta version of
487 the FSF branch of Emacs 19 was released.  The FSF version is better in
488 some areas, and worse in others, as reflects the differing focus of
489 our development efforts.
490
491 We plan to continue developing and supporting Lucid Emacs, and merging
492 in bug fixes and new features from the FSF branch as appropriate; we
493 do not plan to discard any of the functionality that we implemented
494 which RMS has chosen not to include in his version.
495
496 Certain elements of Lucid Emacs, or derivatives of them, have been
497 ported to the FSF version.  We have not been doing work in this
498 direction, because we feel that Lucid Emacs has a cleaner and more
499 extensible substrate, and that any kind of merger between the two
500 branches would be far easier by merging the FSF changes into our
501 version than the other way around.
502
503 We have been working closely with the Epoch developers to merge in the
504 remaining Epoch functionality which Lucid Emacs does not yet have.
505 Epoch and Lucid Emacs will soon be one and the same thing.  Work is
506 being done on a compatibility package which will allow Epoch 4 code to
507 run in XEmacs with little or no change.\n\n"
508      (about-with-face "The Sun Microsystems, Inc. Point of View"
509                       'italic)
510      "\n
511 Emacs 18 has been around for a long, long time.  Version 19 was
512 supposed to be the successor to v18 with X support.  It was going to
513 be available \"real soon\" for a long time (some people remember
514 hearing about v19 as early as 1984!), but it never came out.  v19
515 development was going very, very slowly, and from the outside it
516 seemed that it was not moving at all.  In the meantime other people
517 gave up waiting for v19 and decided to build their own X-aware
518 Emacsen.  The most important of these was probably Epoch, which came
519 from the University of Illinois (\"UofI\") and was based on v18.
520
521 Around 1990, the Developer Products group within Sun Microsystems
522 Inc., decided that it wanted an integrated editor.  (This group is now
523 known as DevPro.  It used to be known as SunPro - the name was changed
524 in mid-1994.)  They contracted with the University of Illinois to
525 provide a number of basic enhancements to the functionality in Epoch.
526 UofI initially was planning to deliver this on top of Epoch code.
527
528 In the meantime, (actually some time before they talked with UofI)
529 Lucid had decided that it also wanted to provide an integrated
530 environment with an integrated editor.  Lucid decided that the Version
531 19 base was a better one than Version 18 and thus decided not to use
532 Epoch but instead to work with Richard Stallman, the head of the Free
533 Software Foundation and principal author of Emacs, on getting v19 out.
534 At some point Stallman and Lucid parted ways.  Lucid kept working and
535 got a v19 out that they called Lucid Emacs 19.
536
537 After Lucid's v19 came out it became clear to us (the UofI and Sun)
538 that the right thing to do was to push for an integration of both
539 Lucid Emacs and Epoch, and to get the deliverables that Sun was asking
540 from the University of Illinois on top of this integrated platform.
541 Until 1994, Sun and Lucid both actively supported XEmacs as part of
542 their product suite and invested a comparable amount of effort into
543 it.  Substantial portions of the current code have originated under
544 the support of Sun, either directly within Sun, or at UofI but paid
545 for by Sun.  This code was kept away from Lucid for a while, but later
546 was made available to them.  Initially Lucid didn't know that Sun was
547 supporting UofI, but later Sun was open about it.
548
549 Around 1992 DevPro-originated code started showing up in Lucid Emacs,
550 starting with the infusion of the Epoch redisplay code.  The separate
551 code bases at Lucid, Sun, and the University of Illinois were merged,
552 allowing a single XEmacs to evolve from that point on.
553
554 Sun originally called the integrated product ERA, for \"Emacs
555 Rewritten Again\".  SunPro and Lucid eventually came to an agreement
556 to find a name for the product that was not specific to either
557 company.  An additional constraint that Lucid placed on the name was
558 that it must contain the word \"Emacs\" in it -- thus \"ERA\" was not
559 acceptable.  The tentatively agreed-upon name was \"XEmacs\", and this
560 has been the name of the program since version 19.11.)
561
562 As of 1997, Sun is shipping XEmacs as part of its Developer Products
563 integrated programming environment \"Sun WorkShop\".  Sun is
564 continuing to support XEmacs development, with focus on
565 internationalization and quality improvement.\n\n"
566      (about-with-face "Lucid goes under" 'italic)
567      "\n
568 Around mid-'94, Lucid went out of business.  Lucid founder Richard
569 Gabriel's book \"Patterns of Software\", which is highly recommended
570 reading in any case, documents the demise of Lucid and suggests
571 lessons to be learned for the whole software development community.
572
573 Development on XEmacs, however, has continued unabated under the
574 auspices of Sun Microsystems and the University of Illinois, with help
575 from Amdahl Corporation and INS Engineering Corporation.  Sun plans to
576 continue to support XEmacs into the future.\n\n"
577      (about-with-face "The Amdahl Corporation point of view"
578                       'italic)
579      "\n
580 Amdahl Corporation's Storage Products Group (SPG) uses XEmacs as the
581 focal point of a environment for development of the microcode used in
582 Amdahl's large-scale disk arrays, or DASD's.  SPG has joint ventures
583 with Japanese companies, and decided in late 1994 to contract out for
584 work on XEmacs in order to hasten the development of Mule support
585 \(i.e. support for Japanese, Chinese, etc.) in XEmacs and as a gesture
586 of goodwill towards the XEmacs community for all the work they have
587 done on making a powerful, modern, freely available text editor.
588 Through this contract, Amdahl provided a large amount of work in
589 XEmacs in the form of rewriting the basic text-processing mechanisms
590 to allow for Mule support and writing a large amount of the support
591 for multiple devices.
592
593 Although Amdahl is no longer hiring a full-time contractor, they are
594 still funding part-time work on XEmacs and providing resources for
595 further XEmacs development.\n\n"
596      (about-with-face "The INS Engineering point of view"
597                       'italic)
598      "\n
599 INS Engineering Corporation, based in Tokyo, bought rights to sell
600 Energize when Lucid went out of business.  Unhappy with the
601 performance of the Japanese support in XEmacs 19.11, INS also
602 contributed to the XEmacs development from late 1994 to early
603 1995.\n")
604     (about-finish-buffer)))
605
606 (defun about-advantages (&rest ignore)
607   (unless (about-get-buffer "*About Advantages*")
608     (let ((title "XEmacs Advantages over GNU Emacs"))
609       (widget-insert
610        "\n"
611        (about-center title)
612        (about-with-face title 'bold)))
613     (widget-insert
614      "\n
615 * Much better GUI support:
616
617   -- a real toolbar
618   -- more comprehensive and better-designed menubars
619   -- horizontal and vertical scrollbars in all windows
620   -- proper dialog boxes
621   -- tabs for selecting buffers
622   -- support for variable-width and variable height fonts
623   -- support for arbitrary pixmaps and widgets in a buffer
624   -- face support on TTY's, including color
625
626 * An installable package system, with a huge number of packages available
627   that have been tested and are known to work with the latest version
628   of XEmacs.
629
630 * Comprehensive support for the GTK toolkit.
631
632 * An open development community, with contributions welcome and no need
633   to sign over your copyright to any organization. (Please send
634   contributions to xemacs-patches@xemacs.org.  See http://www.xemacs.org
635   for more information on XEmacs mailing lists, and other info.)
636
637 * Support for display on multiple simultaneous X and/or TTY devices.
638
639 * Powerful, flexible control over the display characteristics of most
640   of the visual aspects of XEmacs through the use of specifiers, which
641   allow separate values to be specified for individual buffers,
642   windows, frames, devices, device classes, and device types.
643
644 * A clean, modern, abstracted Lisp interface to the menubar, toolbar,
645   window-system events, key combinations, extents (regions in a buffer
646   with specific properties), and all other display aspects.
647
648 * Proper integration with Xt and Motif (including Motif menubars and
649   scrollbars).  Motif look-alike menubars and scrollbars are provided
650   for those systems without real Motif support.
651
652 * Many improvements to the multilingual support, such as the ability to
653   enter text for complex languages using the XIM mechanism and
654   localization of menubar text for the Japanese locale.
655 \n\n")
656     (about-finish-buffer)))
657
658 (defvar about-glyphs nil
659   "Cached glyphs")
660
661 ;; Return a maintainer's glyph
662 (defun about-maintainer-glyph (who)
663   (let ((glyph (cdr (assq who about-glyphs))))
664     (unless glyph
665       (let ((file (expand-file-name
666                    (concat (symbol-name who)
667                            (if (memq (device-class)
668                                      '(color grayscale))
669                                "" "m")
670                            ".png")
671                    (locate-data-directory "photos")))
672             (data nil))
673         (setq glyph
674               (cond ((stringp data)
675                      (make-glyph
676                       (if (featurep 'png)
677                           `([png :data ,data]
678                             [string :data "[Image]"])
679                         `([string :data "[Image]"]))))
680                     ((eq data 'error)
681                      (make-glyph [string :data "[Error]"]))
682                     (file
683                      (make-glyph
684                       (if (featurep 'png)
685                           `([png :file ,file]
686                             [string :data "[Image]"])
687                         `([string :data "[Image]"]))))
688                     (t
689                      (make-glyph [nothing]))))
690         (set-glyph-property glyph 'baseline 100)
691         ;; Cache the glyph
692         (push (cons who glyph) about-glyphs)))
693     glyph))
694
695 ;; Insert personal info about a maintainer.  See also
696 ;; `about-hacker-contribution'.  Note that the info in
697 ;; `about-hacker-contribution' is automatically displayed in the
698 ;; person's own page, so there is no need to duplicate it.
699 (defun about-personal-info (entry)
700   (ecase (car entry)
701     ;; you can sort the stuff below with something like
702     ;;(sort-regexp-fields nil
703     ;; " *(\\([^()]\\|([^()]*)\\|(\\([^()]\\|([^()]*)\\)*)\\)*)\n"
704     ;; " *(\\([a-z]*\\)"
705     ;; (region-beginning) (region-end))
706     (adrian
707      (widget-insert
708       "\
709 Sorry, no personal information available about me yet.\n"))
710     (aj
711      (widget-insert "\
712 I'm a software developer working for the SuSE Labs of the Linux
713 distributor SuSE.  My main task is to improve the GNU C library.")
714      (widget-insert ".\n"))
715     (ajc
716      (widget-insert "\
717 When not helping maintain the XEmacs website, Andrew is a Network
718 Software Engineer(tm) for Monash University in Australia, maintaining
719 webservers and doing random other things.  As well as spending spare
720 time being an Eager Young Space Cadet and fiddling with XEmacs/Gnus
721 et. al., he spends his time pursuing, among other things, a Life.
722 Some of this currently involves doing an A-Z (by country) of
723 restaurants with friends, and has, in the past, involved dyeing his
724 hair various colours (see ")
725      (about-url-link 'ajc "Visit Andrew's home page")
726      (widget-insert ".\n"))
727     (alastair
728      (widget-insert
729       "\
730 Sorry, no personal information available about me yet.\n"))
731     (baw
732      (widget-insert "\
733 Daddy
734 \(C) 1994 Warsaw
735 ===============
736 Drive me Daddy, drive me quick
737 Push my pedal, shift my stick
738 Fill me up with golden gas
739 My rubber squeals, I go real fast
740
741 Milk me Daddy, milk me now
742 Milk me like a big ol' cow
743 I've got milk inside my udder
744 Churn it up and make some butter\n\nSee also:\n\n\t")
745      (about-url-link 'baw "Visit Barry's home page")
746      (widget-insert "\n"))
747     (ben
748      (widget-insert
749       "\
750 Since September 1992, I've worked on XEmacs as a contractor for
751 various companies and more recently as an unpaid volunteer.
752
753 Alas, life has not been good to me recently.  This former San
754 Francisco \"Mission Critter\" developed insidious hand and neck
755 problems after a brief stint working on a Java-based VRML toolkit for
756 the now defunct Dimension X, and I was forced to quit working.  I was
757 exiled first to \"Stroller Valley\" and later all the way to Tucson,
758 Arizona, and for two years was almost completely disabled due to pain.
759 More recently I have fought my way back with loads and loads of
760 narcotic painkillers, and currently I'm an art student at the
761 University of Arizona.\n\n")
762      (widget-insert "Architecting XEmacs: ")
763      (about-url-link 'ben-xemacs "Find the miracles in store for XEmacs")
764      (widget-insert "\nBen's home page:     ")
765      (about-url-link 'ben "Visit Ben's page")
766      (widget-insert "\n"))
767     (bw
768      (widget-insert "\
769 His interests include user interfaces, information management, CASE
770 tools, communications and enterprise integration.\n"))
771     (cgw
772      (widget-insert
773       "\
774 Sorry, no personal information available about me yet.\n"))
775     (chr
776      (widget-insert "\
777 Christian is a student at the Norwegian School of Economics and
778 Business Administration in Bergen, Norway.  He used to work for an
779 internet startup called New Media Science, doing scripting and
780 violation of HTML DTD's.  After graduation, spring 1999, he'll be
781 looking for a job involving lisp programming, French and Russian.\n"))
782     (craig
783      (widget-insert
784       "\
785 Sorry, no personal information available about me yet.\n"))
786     (cthomp
787      (widget-insert "\
788 Chuck, through being in the wrong place at the right time, got stuck
789 with being Jamie's replacement as the primary maintainer of XEmacs.
790 This caused his hair to begin falling out and quadrupled his daily
791 coffee dosage.  Though he works at and for the University of Illinois
792 his funding for XEmacs work actually came from Sun Microsystems.
793
794 He has worked on XEmacs since November 1992, which fact occasionally
795 gives him nightmares.  As of October 1995, he no longer works
796 full-time on XEmacs, though he does continue as an active maintainer.
797 His main contributions have been the greatly enhanced redisplay
798 engine, scrollbar support, the toolbars, configure support and
799 numerous other features and fixes.
800
801 Rumors that Chuck is aka Black Francis aka Frank Black are completely
802 unfounded.\n"))
803     (daiki
804      (about-url-link 'daiki "Visit Daiki's page"))
805     (dan
806      (widget-insert
807       "\
808 Sorry, no personal information available about me yet.\n"))
809     (darrylo
810      (widget-insert
811       "\
812 Perennial Emacs hacker since 1986 or so, when he first started on GNU
813 Emacs 17.something.  Over the years, he's developed \"OEmacs\", the first
814 version of GNU Emacs 19 for MSDOS, and \"bigperl\", a 32-bit version of
815 Perl4 for MSDOS.  In recent years, reality has intruded and he no longer
816 has much time for playing with cool programs.  What little time he has
817 now goes to XEmacs hacking, where he's worked on speeding up dired under
818 MS Windows, and to feeding his two cats.\n"))
819     (devin
820      (widget-insert
821       "\
822 Sorry, no personal information available about me yet.\n"))
823     (dkindred
824      (widget-insert "\
825 Darrell is currently a doctoral student in computer science at
826 Carnegie Mellon University, but he's trying hard to kick that
827 habit.
828
829 See ")
830      (about-url-link 'dkindred "Visit Darrell's WWW page")
831      (widget-insert ".\n"))
832     (dmoore
833      (widget-insert "\
834 David is a student in the Computer Systems Laboratory at UCSD.  When
835 he manages to have free time, he usually spends it on 200 mile bicycle
836 rides, learning German or showing people the best mail & news
837 environment he's found in 10 years.  (That'd be XEmacs, Gnus and bbdb,
838 of course.)  He can be found at `druidmuck.egbt.org 4201' at various
839 hours of the day.
840
841 He has a page at ")
842      (about-url-link 'dmoore "Visit David's home page")
843      (widget-insert ".\n"))
844     (dv
845      (widget-insert "\
846 I graduated at ENST (an engineering school in Paris) and have a Ph.D.
847 in computer science. I'm currently a teacher at EPITA (another
848 engineering school, still in Paris) and a researcher at LRDE (EPITA's
849 research and development laboratory). Our research topics include
850 generic programming and distributed virtual reality.
851
852 Apart from XEmacs, I'm also involved in other free software projects,
853 including Gnus, BBDB, and the GNU \"autotools\". I also wrote some
854 LaTeX packages (ugh :-).
855
856 All of this, actually, is only 60% true. Two days per week, I'm also a
857 semi-professional Jazz guitar player (and singer), which means that it
858 is not the way I earn my crust, but things may very well reverse in
859 the future ...\n\n")
860      (widget-insert "Visit Didier's home page: ")
861      (about-url-link 'dv "Visit Didier's home page")
862      (widget-insert "\n"))
863     (eb
864      (widget-insert
865       "\
866 Sorry, no personal information available about me yet.\n"))
867     (fabrice
868      (widget-insert
869       "\
870 Sorry, no personal information available about me yet.\n"))
871     (golubev
872      (widget-insert
873       "\
874 Sorry, no personal information available about me yet.\n"))
875     (gunnar
876      (widget-insert
877       "\
878 Sorry, no personal information available about me yet.\n"))
879     (hbs
880      (widget-insert
881       "\
882 Sorry, no personal information available about me yet.\n"))
883     (hisashi
884      (widget-insert
885       "\
886 Sorry, no personal information available about me yet.\n"))
887     (hmuller
888      (widget-insert
889       "\
890 Sorry, no personal information available about me yet.\n"))
891     (hniksic
892      (widget-insert "\
893 Hrvoje is a student at the Faculty of Electrical Engineering and
894 Computing in Zagreb, Croatia, working part-time at system administration
895 at SRCE.  His hobby is hacking free software, particularly XEmacs and
896 GNU Wget, the latter being his very own creation.
897
898 For info on Wget, see ")
899      (about-url-link 'wget "Visit the Wget web page")
900      (widget-insert " or\n")
901      (about-url-link 'wget-ftp "Visit the Wget ftp page")
902      (widget-insert ".\n"))
903     (hobley
904      (widget-insert "\
905 I used to do real work, but now I am a Project Manager for one of the
906 Telco's in Australia. In my spare time I like to get back to basics and
907 muck around with things. As a result I started the NT port. Hopefully I
908 will get to finish it sometime sooner rather than later. I do vaguely
909 remember University where it seems like I had more spare time that I can
910 believe now. Oh well, such is life.\n"))
911     (jan
912      (widget-insert "\
913 Jan Vroonhof has been using XEmacs since he needed to write .tex files
914 for his work as a physics and maths student at the Univerisity of Leiden.
915 His XEmacs hacking started when XEmacs kept freezing up under a his
916 window manager. He submitted a fix and has been hooked every since.
917
918 XEmacs has followed him first to Switzerland where he did a maths
919 doctorate at the ETH in Zurich, working on a conjecture by Migdal on
920 the behavior of vertex corrections in Electron-Phonon theory.  Finally
921 sharing a house with his loved one, he now lives in Oxford (UK)
922 working on the Jeode Java Virtual Machine, which like XEmacs is
923 portable, implements a language, includes a non-trivial bit of
924 graphics and a garbage collector, but is multithreaded to boot!
925 Unfortunately his XEmacs time is directly limited by the amount of
926 traffic on the M40.\n"))
927     (jareth
928      (widget-insert "\
929 Jareth Hein is a mountain boy who abandoned his home state of Colorado
930 for the perpetual state of chaos known as Tokyo in a failed attempt to
931 become a cel-animator, and a more successful one to become a
932 computer-game programmer. As he happens to be bilingual (guess which
933 two?) he's been doing quite a bit of MULE hacking.  He's also getting
934 his hands dirty in the graphics areas as well.\n"))
935     (jason
936      (widget-insert "\
937 Jason resides in Northern New Mexico where he works as a Systems
938 Scientist(tm) in the Los Alamos National Laboratory's Advanced
939 Computing Group.
940
941 See: ")
942       (about-url-link 'jason "Visit Jason's homepage")
943       (widget-insert ".\n"))
944     (jens
945      (widget-insert "\
946 I'm currently working at the University of Karlsruhe, Germany on
947 getting my diploma thesis on Supersymmetry (uuh, that's physics) done.
948 After that (and all the remaining exams) I'm looking forward to make a
949 living out of my hobbies -- computers (and graphics). But because I
950 have no deadline for the exams and XEmacs betas are released at a high
951 rate this may take some time...\n"))
952     (jmiller
953      (widget-insert "\
954 Jeff grew up in Indiana and is a country boy at heart.  He currently
955 lives in, of all places, Millersville Maryland.  He spends a lot of
956 his free time tinkering with Linux and hacking on XEmacs and loves it
957 when he finds new cool features in either.  When he's not doing that,
958 he enjoys downhill skiing, puzzles, and sci-fi.  Jeff is also really
959 interested in classical Roman history and enjoys making trips to
960 Italy, where he was born, and seeing the sights")
961      (widget-insert ".\n"))
962     (jonathan
963      (widget-insert "\
964 I work for Symbian Ltd in London, England, looking after low-level
965 kernel, peripheral and toolchain stuff for the EPOC OS.
966
967 I've been using XEmacs since 1994, but didn't start hacking on it
968 until late 1997 when I started working at Symbian, a Windows-only
969 company, and felt lost without my favourite editing environment.\n"))
970     (juhp
971      (widget-insert "\
972 I started using XEmacs-20 as my work-environment in June 1997.  I
973 became a beta developer shortly after that (\"it seems like a good
974 idea at the time...\" :-), so far contributing mainly bug fixes,
975 \"find-func.el\" and improvements to \"help.el\".
976
977 My current dreams for XEmacs: Move to using guile as the Lisp engine
978 and gtk as the default X toolkit.
979
980 I have been a postdoctoral researcher at the Research Institute for
981 Mathematical Sciences, Kyoto University, since August 1994, doing
982 research in mathematical physics (representation theory of quantum
983 groups).  Though now I seem to be heading for other things.
984
985 My homepage is ")
986      (about-url-link 'juhp "Visit Jens' homepage")
987      (widget-insert ".\n"))
988     (jwz
989      (widget-insert
990       "\t"
991       (about-with-face "\"So much to do, so little time.\"" 'italic)
992       "\n
993 Jamie Zawinski was primarily to blame for Lucid Emacs from its
994 inception in 1991, to 1994 when Lucid Inc. finally died.  He is now to
995 be found at Netscape Communications, hacking on Netscape Navigator (he
996 did the first Unix version and the mail and news reader).  Thankfully
997 his extensive sleep deprivation experiments conducted during 1994 and
998 1995 are now a thing of the past, but his predilection for dark,
999 Gothic music remains unabated.
1000
1001 Come visit his glorified .plan file at\n\n")
1002      (about-url-link 'jwz "Visit Jamie's home page")
1003      (widget-insert "\n"))
1004     (kazz
1005      (widget-insert "\
1006 Kazz is the XEmacs lead on BSD (especially FreeBSD).
1007 His main workspace is, probably, the latest stable version of
1008 FreeBSD and it makes him comfortable and not.
1009 His *mission* is to make XEmacs runs on FreeBSD without
1010 any problem.
1011
1012 In real life, he is working on a PDM product based on CORBA,
1013 and doing consultation, design and implemention.
1014 He loves to play soccer, yes football!
1015 See also:")
1016      (about-url-link 'kazz "Visit Kazz's home page")
1017      (widget-insert ".\n"))
1018     (kirill
1019      (widget-insert
1020       "\
1021 Sorry, no personal information available about me yet.\n"))
1022     (kyle
1023      (widget-insert "\
1024 See\n")
1025      (about-url-link 'kyle "Visit Kyle's Home page")
1026      (widget-insert ".\n"))
1027     (larsi
1028      (widget-insert "\
1029 Lars's day job is as the head of the IT department of a Norwegian
1030 Internet stock broker.  He claims no responsibility for the Dot
1031 Com Bomb, but he snickers a lot.
1032
1033 See ")
1034      (about-url-link 'larsi "Visit the Larsissistic pages")
1035      (widget-insert ".\n"))
1036     (marcpa
1037      (widget-insert "\
1038 I work for Positron Industries Inc., Public Safety Division.
1039 I'm part of the team producing POWER 911, a 911 emergency response
1040 system written in Modula3:\n")
1041      (about-url-link 'marcpa "Visit POWER 911")
1042      (widget-insert "\
1043 \n\nPreviously, I worked at Softimage Inc., now a Microsoft company
1044 \(eeekkk!), as a UNIX system administrator.  This is where I've been
1045 converted to NT.
1046
1047 In a previous life, I was a programmer/sysadmin at CRIM (Centre de
1048 Recherche Informatique de Montreal) for the speech recognition group.\n"))
1049     (martin
1050      (widget-insert "\
1051 Martin was the XEmacs guy at DevPro, a part of Sun Microsystems.
1052 Martin used to do XEmacs as a `hobby' while at IBM, and was crazy
1053 enough to try to make a living doing it at Sun.
1054
1055 Martin starting using Emacs originally not to edit files, but to get
1056 the benefit of shell mode. He actually used to run nothing but a shell
1057 buffer, and use `xterm -e vi' to edit files.  But then he saw the
1058 light.  He dreams of rewriting shell mode from scratch.  Stderr should
1059 show up in red!!
1060
1061 Martin is no longer doing XEmacs for a living, and is Just Another
1062 Volunteer.\n"))
1063     (mcook
1064      (widget-insert
1065       "\
1066 Sorry, no personal information available about me yet.\n"))
1067     (mly
1068      (widget-insert "Cars are evil.  Ride a bike.\n"))
1069     (morioka
1070      (widget-insert "\
1071 I am a doctoral student at School of Information Science of JAIST
1072 \(Japan Advanced Institute of Science and Technology, Hokuriku).  I'm
1073 interested in Natural Language, Affordance and writing systems.\n"))
1074     (mta
1075      (widget-insert
1076       "\
1077 I am a software developer who worked for the University of Michigan
1078 for many years where I was one of the principal architects of the
1079 Michigan Terminal System.  For the last several years I've been
1080 working for Arbortext, a publisher of XML publishing and content
1081 management software.\n"))
1082     (ograf
1083      (widget-insert "\
1084 I'm a student of computer sciences at the University of Koblenz. My
1085 major is computational linguistics (human language generation and
1086 analysis).
1087
1088 I make my living as a managing director of a small but fine company
1089 which I started two years ago with one of my friends. We provide
1090 business network solutions based on linux servers and various other
1091 networking products.
1092
1093 Most of my spare time I spent on the development of the XEmacs
1094 Drag'n'Drop API, a enhanced version of Tk called TkStep (better looks,
1095 also Drag'n'Drop, and more), and various other hacks: ISDN-tools,
1096 cd players, python, etc...
1097
1098 To see some of these have a look at ")
1099      (about-url-link 'ograf "one of my homepages")
1100      (widget-insert ".\n"))
1101     (olivier
1102      (widget-insert
1103       "\
1104 Sorry, no personal information available about me yet.\n"))
1105     (oscar
1106      (widget-insert
1107       "\
1108 Sorry, no personal information available about me yet.\n"))
1109     (pelegri
1110      (widget-insert
1111       "\
1112 Sorry, no personal information available about me yet.\n"))
1113     (pez
1114      (widget-insert "\
1115 Peter currently serves as Senior Vice President, Product Development
1116 for CBS SportsLine.  See ")
1117      (about-url-link 'pez "CBS SportsLine")
1118      (widget-insert ".\n"))
1119     (piper
1120      (widget-insert "\
1121 My home page is here:\n")
1122      (about-url-link 'piper "Visit andy's home page")
1123      (widget-insert "\n
1124 Andy has recently rejoined the XEmacs team to help port XEmacs to
1125 MS Windows operating systems.\n"))
1126     (pittman
1127      (widget-insert
1128       "\
1129 Sorry, no personal information available about me yet.\n"))
1130     (rickc
1131      (widget-insert "\
1132 The hacker formerly known as Rick Busdiecker develops and maintains
1133 libraries for financial applications at Lehman Brothers during
1134 daylight hours.  In the evenings he maintains three children, and
1135 when he ought to be sleeping he co-maintains ILISP, builds XEmacs
1136 betas, and tinkers with various personal hacking projects.\n"))
1137     (rose
1138      (widget-insert
1139       "\
1140 Sorry, no personal information available about me yet.\n"))
1141     (rossini
1142      (widget-insert "\
1143 Author of the first XEmacs FAQ, as well as minor priest in the
1144 movement to get every statistician in the world to use XEmacs for
1145 statistical programming and data analysis.  Current development lead
1146 for ESS (Emacs Speaks Statistics), a mode and inferior mode for
1147 statistical programming and data analysis for SAS, S, S-PLUS, R,
1148 XLispStat; configurable for nearly any other statistical
1149 language/package one might want.  In spare time, acts as a
1150 Ph.D. (bio)statistician for money and amusement.  Current position:
1151 Assistant Professor of Statistics at the University of South Carolina.\n"))
1152     (slb
1153      (widget-insert "\
1154 Peaches Baur, 1986-1999.
1155 Rest in peace")
1156      (widget-insert ".\n"))
1157     (sperber
1158      (widget-insert "\
1159 When Mike isn't busy putting together patches for free software he has
1160 just installed or changing his hairstyle, he does research in modern
1161 programming languages and their implementation, and hopes that one day
1162 XEmacs will speak Scheme.\n"))
1163     (stig
1164      (widget-insert "\
1165 Peripatetic uninominal Emacs hacker.  Stig sometimes operates out of a
1166 big white van set up for nomadic living and hacking.  Stig is sort of
1167 a tool fetishist.  He has a hate/love relationship with computers and
1168 he hacks on XEmacs because it's a good tool that makes computers
1169 somewhat less of a nuisance.  Besides XEmacs, Stig especially likes
1170 his Leatherman, his Makita, and his lockpicks.  Stig wants a MIG
1171 welder and air tools.
1172
1173 Stig likes to perch, hang from the ceiling, and climb on the walls.
1174 Stig has a cool van.  Stig would like to be able to telecommute from,
1175 say, the north rim of the Grand Canyon or the midst of Baja.\n"))
1176     (stigb
1177      (widget-insert "\
1178 Currently studying computer science in Trondheim, Norway.  Full time
1179 Linux user and proud of it.  XEmacs hacker light.
1180
1181 See:\t")
1182      (about-url-link 'stigb "Visit Stig's home page"))
1183     (thiessel
1184      (widget-insert "\
1185 Worked at University of Kaiserslautern where he took part in the
1186 development and design of a CAD framework for analog integrated
1187 circuits with special emphasis on distributed software concepts. He
1188 has now joined HP as technical consultant.
1189
1190                       All of the buildings,
1191                       all of the cars
1192                       were once just a dream
1193                       in somebody's head.\n
1194                                      P. Gabriel\n"))
1195     (tomonori
1196      (widget-insert
1197       "\
1198 Sorry, no personal information available about me yet.\n"))
1199     (tuck
1200      (widget-insert
1201       "\
1202 Sorry, no personal information available about me yet.\n"))
1203     (turnbull
1204      (widget-insert "\
1205 Stephen lives with his Japanese wife and children in Tsukuba, Japan,
1206 where he is a professor of economics at the University of Tsukuba.\n"))
1207     (vin
1208      (widget-insert "\
1209 I own and operate my own consulting firm, EtherSoft.  Shhh, don't
1210 tell anyone, but it's named after an Ultimate team I used to play
1211 with in Austin, Texas - the Ether Bunnies.  I'm getting too old
1212 to play competitive Ultimate any more, so now I've gotten roped
1213 into serving on the board of directors of the Ultimate Players
1214 Association.  See ")
1215      (about-url-link 'vin "Visit the UPA homepage")
1216      (widget-insert ".\n"))
1217     (vladimir
1218      (widget-insert "\
1219 Former technical lead for XEmacs at Sun.  He is now with a startup
1220 marketing embedded Java databases.  See ")
1221      (about-url-link 'vladimir "Visit Vladimir's home page")
1222      (widget-insert ".\n"))
1223     (wmperry
1224      (widget-insert "\
1225 Currently working at Aventail, Corp. on SOCKS v5 servers.\n"))
1226     (yoshiki
1227      (widget-insert
1228       "\
1229 Sorry, no personal information available about me yet.\n"))
1230     (youngs
1231      (widget-insert
1232       "\
1233 Sorry, no personal information available about me yet.\n"))
1234     ))
1235
1236 ;; Insert info about a maintainer's contribution to XEmacs.  See also
1237 ;; `about-personal-info'.
1238 (defun about-hacker-contribution (entry)
1239   (ecase (car entry)
1240     ;; to sort the entries below, use M-x sort-regexp-fields RET
1241     ;; then this regexp: ([^(]*([^"]*"[^"]*"[^)]*))
1242     ;; then this regexp: (\([a-z]*\)
1243     (adrian
1244      (widget-insert
1245       "\
1246 Adrian has done invaluable work rewriting and maintaining the XEmacs
1247 web pages at www.xemacs.org.  During his tenureship, he has
1248 established a consistent look and feel, placed the web pages under
1249 CVS, set up maintenance procedures, written scripts to handle
1250 automatic updating, validation and mirroring, and done innumerable
1251 other tasks.  He has also helped with many other administrative tasks,
1252 such as the thankless work of dealing with the providers of resources
1253 to XEmacs at SourceForge and tux.org.\n"))
1254     (aj
1255      (widget-insert "\
1256 Former `Package Patch Tender', beta tester and GNU libc developer.\n"))
1257     (ajc
1258      (widget-insert "\
1259 Former XEmacs web site maintainer.\n"))
1260     (alastair
1261      (widget-insert
1262       "\
1263 Rewrote the selection code, adding many new features such as better
1264 support for arbitrary selection types (especially under MS Windows,
1265 where the full power of the clipboard system is available under
1266 XEmacs).\n"))
1267     (baw
1268      (widget-insert "\
1269 Author of CC Mode for C, C++, Objective-C and Java editing, and
1270 Supercite for mail and news citing.  Also various and sundry other
1271 Emacs utilities, fixes, enhancements and kludgery as whimsy, boredom,
1272 and ToT dictate (but not necessarily in that order).  See also\n")
1273      (about-url-link 'cc-mode "Visit the CC Mode distribution")
1274      (widget-insert ".\n"))
1275     (ben
1276      (widget-insert
1277       "\
1278 I am the largest code contributor to XEmacs, and the architect of many
1279 of the features that distinguish XEmacs from GNU Emacs and other Emacs
1280 versions.  My main contributions to XEmacs include rewriting large
1281 parts of the internals and the gory Xt/Xlib interfacing, adding the
1282 Mule \(international) support, improving the MS Windows support,
1283 adding many GUI features to XEmacs, architecting the
1284 device-abstraction and specifier code, writing most of the XEmacs
1285 Internals Manual and the XEmacs-specific parts of the XEmacs Lisp
1286 Reference Manual, synching a great deal of code with GNU Emacs, and
1287 being a general nuisance ... er, brainstormer for many of the new
1288 features of XEmacs.\n"))
1289     (bw
1290      (widget-insert "\
1291 Author of the Hyperbole everyday information management hypertext
1292 system and the OO-Browser multi-language code browser.  He also
1293 designed the BeOpen InfoDock integrated development environment
1294 for software engineers.  It runs atop XEmacs and is available from
1295 his firm, BeOpen, which offers distributions, custom development,
1296 support, and training packages for corporate users of XEmacs, GNU
1297 Emacs and InfoDock.  See ")
1298      (about-url-link 'beopen "Visit BeOpen WWW page")
1299      (widget-insert ".\n"))
1300     (cgw
1301      (widget-insert
1302       "\
1303 Author of an earlier version of the MS Windows setup program for XEmacs.\n"))
1304     (chr
1305      (widget-insert "\
1306 Maintainer of the XEmacs FAQ and proud author of `zap-up-to-char'.\n"))
1307     (craig
1308      (widget-insert
1309       "\
1310 Sorry, no information about my XEmacs contributions yet.\n"))
1311     (cthomp
1312      (widget-insert
1313       "\
1314 Maintainer of XEmacs from mid-1994 through 1996.  Author of the
1315 redisplay engine and some of the device-abstraction, TTY and glyph
1316 code.  Creator of the xemacs.org domain.\n"))
1317     (daiki
1318      (widget-insert
1319       "\
1320 Sorry, no information about my XEmacs contributions yet.\n"))
1321     (dan
1322      (widget-insert
1323       "\
1324 Sorry, no information about my XEmacs contributions yet.\n"))
1325     (darrylo
1326      (widget-insert
1327       "\
1328 Sorry, no information about my XEmacs contributions yet.\n"))
1329     (devin
1330      (widget-insert "\
1331 Part of the original (pre-19.0) Lucid Emacs development team.
1332 Matthieu wrote the initial Energize interface, designed the
1333 toolkit-independent Lucid Widget library, and fixed enough redisplay
1334 bugs to last a lifetime.  The features in Lucid Emacs were largely
1335 inspired by Matthieu's initial prototype of an Energize interface
1336 using Epoch.\n"))
1337     (dkindred
1338      (widget-insert "\
1339 Darrell tends to come out of the woodwork a couple of weeks
1340 before a new release with a flurry of fixes for bugs that 
1341 annoy him.  He hopes he's spared you from a core dump or two.\n"))
1342     (dmoore
1343      (widget-insert "\
1344 David has contributed greatly to the quest to speed up XEmacs.\n"))
1345     (dv
1346      (widget-insert "\
1347 I joined the development of XEmacs in 1996, and have been one of the
1348 core maintainers since 1998. Although I'm mostly interested in the
1349 GUI, ergonomics, redisplay and autoconf issues, it's probably simpler
1350 to describe what I'm *not* involved in: I've never touched the Lisp
1351 implementation, and I probably never will...
1352
1353 I'm the author of the multicast support, I wrote and maintain some
1354 external Emacs Lisp packages (including mchat) and I'm also
1355 responsible for some of the core Lisp code (including the rectangle
1356 library which I rewrote for both XEmacs and GNU Emacs).\n"))
1357     (eb
1358      (widget-insert "\
1359 Also part of the original Lucid Emacs development team.  Eric played a
1360 big part in the design of many aspects of the system, including the
1361 new command loop and keymaps, fixed numerous bugs, and has been a
1362 reliable beta tester ever since.\n"))
1363     (fabrice
1364      (widget-insert
1365       "\
1366 Sorry, no information about my XEmacs contributions yet.\n"))
1367     (golubev
1368      (widget-insert
1369       "\
1370 Sorry, no information about my XEmacs contributions yet.\n"))
1371     (gunnar
1372      (widget-insert
1373       "\
1374 Sorry, no information about my XEmacs contributions yet.\n"))   
1375     (hbs
1376      (widget-insert "\
1377 Part of the original (pre-19.0) Lucid Emacs development team.  Harlan
1378 designed and implemented many of the low level data structures which
1379 are original to the Lucid version of Emacs, including extents and hash
1380 tables.\n"))
1381     (hisashi
1382      (widget-insert
1383       "\
1384 Sorry, no information about my XEmacs contributions yet.\n"))
1385     (hmuller
1386      (widget-insert "\
1387 Author of the code used to connect XEmacs with ToolTalk, and of an
1388 early client of the external Emacs widget.\n"))
1389     (hniksic
1390      (widget-insert
1391       "\
1392 Hrvoje's contribution to XEmacs consists of a multitude of hours spent
1393 adding new features and bugs, and fixing old ones.  He dreams of
1394 writing a home page.\n"))
1395     (hobley
1396      (widget-insert
1397       "\
1398 Creator of the earliest version of the MS Windows port of XEmacs.\n"))
1399     (jan
1400      (widget-insert "\
1401 Apart from hunting down redisplay bugs Jan has worked on such
1402 things as improvements to the package system, implementing lazy-shot,
1403 a short stint at tracking patches and currently acts as a guardian
1404 of the XEmacs custom subsystem and gnuserv.\n"))
1405     (jareth
1406      (widget-insert "\
1407 Owner of cvs.xemacs.org, the machine that holds the XEmacs CVS
1408 repository, and author of some of the graphics code in XEmacs.\n"))
1409     (jason
1410      (widget-insert "\
1411 Beta tester, manager of the various XEmacs mailing lists and binary
1412 kit manager.  Also, originator and maintainer of the gnus.org domain.\n"))
1413     (jens
1414      (widget-insert "\
1415 Jens did the artwork for graphics added to XEmacs 20.2 and 19.15.\n"))
1416     (jmiller
1417      (widget-insert "\
1418 Beta tester and last hacker of calendar.\n"))
1419     (jonathan
1420      (widget-insert "\
1421 I started the native port of XEmacs to MS Windows. Author of the
1422 Windows frame, redisplay, face and event loop support.\n"))
1423     (juhp
1424      (widget-insert "\
1425 Author of \"find-func.el\" and improvements to \"help.el\".\n"))
1426     (jwz
1427      (widget-insert
1428       "\
1429 Creator and maintainer of Lucid Emacs (the predecessor of XEmacs),
1430 from 1991 through mid-1994.\n"))
1431     (kazz
1432      (widget-insert "\
1433 IENAGA Kazuyuki is the XEmacs technical lead on BSD, particularly
1434 FreeBSD.\n"))
1435     (kirill
1436      (widget-insert
1437       "\
1438 Abstracted the subprocess code and wrote much of the MS Windows
1439 support in XEmacs, including the subprocess interface, dialog boxes,
1440 printing support, and much of the event loop.\n"))
1441     (kyle
1442      (widget-insert "\
1443 Author of VM, a mail-reading package that is included in the standard
1444 XEmacs distribution, and contributor of many improvements and bug
1445 fixes.  Unlike RMAIL and MH-E, VM uses the standard UNIX mailbox
1446 format for its folders; thus, you can use VM concurrently with other
1447 UNIX mail readers such as Berkeley Mail and ELM.
1448
1449 Also rewrote the object allocation system in XEmacs to support full
1450 32-bit pointers and 31-bit integers.\n"))
1451     (larsi
1452      (widget-insert "\
1453 Author of Gnus the Usenet news and Mail reading package in the
1454 standard XEmacs distribution, and contributor of various enhancements
1455 and portability fixes.\n"))
1456     (marcpa
1457      (widget-insert
1458       "\
1459 Sorry, no information about my XEmacs contributions yet.\n"))
1460     (martin
1461      (widget-insert
1462       "\
1463 Beta release manager and author of many stability fixes and speed
1464 improvements in XEmacs.\n"))
1465     (mcook
1466      (widget-insert "\
1467 Author of the \"shy groups\" and minimal matching regular expression
1468 extensions.\n"))
1469     (mly
1470      (widget-insert "\
1471 Early code contributor to Lucid Emacs.  Synched up Lucid Emacs with
1472 the first actual release of GNU Emacs 19, and architected and wrote
1473 the first version of XEmacs's object allocation system.\n"))
1474     (morioka
1475      (widget-insert "\
1476 I am the author of tm-view (general MIME Viewer for GNU Emacs) and
1477 major author and maintainer of tm (Tools for MIME; general MIME
1478 package for GNU Emacs).  In addition, I am working to unify MULE API
1479 for Emacs and XEmacs.  In XEmacs, I have ported many mule features.\n"))
1480     (mta
1481      (widget-insert
1482       "\
1483 Contributed minor improvements to the Windows support, especially
1484 related to subprocess communication and portable dumping as well as
1485 a bit of general bug fixing.\n"))
1486     (ograf
1487      (widget-insert "\
1488 Author of the XEmacs Drag'n'Drop API.\n"))
1489     (olivier
1490      (widget-insert
1491       "\
1492 Author of the portable dumper.\n"))
1493     (oscar
1494      (widget-insert
1495       "\
1496 Author of the LDAP support in XEmacs.\n"))
1497     (pelegri
1498      (widget-insert "\
1499 Author of EOS, a package included in the standard XEmacs distribution
1500 that integrates XEmacs with the SPARCworks development environment
1501 from Sun.  Past lead for XEmacs at Sun; advocated the validity of
1502 using Epoch, and later Lemacs, at Sun through several early
1503 prototypes.\n"))
1504     (pez
1505      (widget-insert "\
1506 Author of SQL Mode, edit-toolbar, mailtool-mode, and various other
1507 small packages with varying degrees of usefulness.\n"))
1508     (piper
1509      (widget-insert "\
1510 Author of the Cygwin port of XEmacs including unexec, the widget,
1511 gutter and buffer-tab support, glyphs under MS-Windows, toolbars under
1512 MS-Windows, the original \"fake\" XEmacs toolbar, outl-mouse for mouse
1513 gesture based outlining, and the original CDE drag-n-drop
1514 support.\n"))
1515     (pittman
1516      (widget-insert
1517       "\
1518 Sorry, no information about my XEmacs contributions yet.\n"))
1519     (rickc
1520      (widget-insert "\
1521 Maintainer of ILISP.\n"))
1522     (rose
1523      (widget-insert "\
1524 Author of many extensions to the `extents' code, including the initial
1525 implementation of `duplicable' properties.\n"))
1526     (rossini
1527      (widget-insert "\
1528 Author of the first XEmacs FAQ.\n"))
1529     (slb
1530      (widget-insert
1531       "\
1532 Maintainer of XEmacs from 1996 through 1998.  Author of the package
1533 system.\n"))
1534     (sperber
1535      (widget-insert "\
1536 Mike ported EFS to XEmacs 20 and integrated EFS into XEmacs.  He's
1537 also responsible for the ports of facemenu.el and enriched.el, the
1538 code to handle path-frobbing at startup for the XEmacs core and the
1539 package system, the init file migration from .emacs to
1540 .xemacs/init.el, and the CVS Great Trunk Move.\n"))
1541     (stig
1542      (widget-insert "\
1543 Implemented the faster stay-up Lucid menus and hyper-apropos.
1544 Contributor of many dispersed improvements in the core Lisp code, and
1545 back-seat contributor for several of its major packages.\n"))
1546     (stigb
1547      (widget-insert "\
1548 Maintainer of the RPM package.\n"))
1549     (thiessel
1550      (widget-insert "\
1551 Does beta testing and helps take care of the XEmacs web site.\n"))
1552     (tomonori
1553      (widget-insert
1554       "\
1555 Sorry, no information about my XEmacs contributions yet.\n"))
1556     (tuck
1557      (widget-insert
1558       "\
1559 Sorry, no information about my XEmacs contributions yet.\n"))
1560     (turnbull
1561      (widget-insert
1562       "\
1563 Responsible for getting the current release of XEmacs out the
1564 door.\n"))
1565     (vin
1566      (widget-insert "\
1567 Vin helps maintain the older, more mature (read: moldy) versions of
1568 XEmacs.  Vin maintains the XEmacs patch pages in order to bring a more
1569 stable XEmacs.  (Actually, he does it 'cause it's fun and he's been
1570 using emacs for a long, long time.)  Vin also contributed the detached
1571 minibuffer code as well as a few minor enhancements to the menubar
1572 options.\n"))
1573     (vladimir
1574      (widget-insert "\
1575 Former technical lead for XEmacs at Sun.\n"))
1576     (wmperry
1577      (widget-insert "\
1578 Author of the GTK support in XEmacs, Emacs-w3 (the builtin web browser
1579 that comes with XEmacs), and various additions to the C code (e.g. the
1580 database support, the PNG support, some of the GIF/JPEG support, the
1581 strikethru face attribute support).\n"))
1582     (yoshiki
1583      (widget-insert
1584       "\
1585 Sorry, no information about my XEmacs contributions yet.\n"))
1586     (youngs
1587      (widget-insert
1588       "\
1589 Maintainer and release manager of the packages.\n"))
1590     ))
1591
1592 ;; Setup the buffer for a maintainer.
1593 (defun about-maintainer (widget &optional event)
1594   (let* ((entry (assq (widget-value widget) xemacs-hackers))
1595          (who (car entry))
1596          (name (cadr entry))
1597          (address (caddr entry))
1598          (bufname (format "*About %s*" name)))
1599     (unless (about-get-buffer bufname)
1600       ;; Display the glyph and name
1601       (widget-insert "\n")
1602       (widget-create 'default :format "%t"
1603                      :tag-glyph (about-maintainer-glyph who))
1604       (widget-insert
1605        "\n\n" (about-with-face (format "%s" name) 'bold)
1606        " <")
1607       (about-mailto-link address)
1608       (widget-insert ">\n\n")
1609       ;; Display the actual info
1610       (about-personal-info entry)
1611       (widget-insert "\n")
1612       (widget-insert
1613        (about-with-face "Contributions to XEmacs:\n\n" 'about-headline-face))
1614       (about-hacker-contribution entry)
1615       (widget-insert "\n")
1616       (about-finish-buffer 'kill)
1617       (forward-line 2))))
1618
1619 (defsubst about-tabs (str)
1620   (let ((x (length str)))
1621     (cond ((>= x 24) " ")
1622           ((>= x 16) "\t")
1623           ((>= x 8) "\t\t")
1624           (t "\t\t\t"))))
1625
1626 (defun about-show-linked-info (who)
1627   (let* ((entry (assq who xemacs-hackers))
1628          (name (cadr entry))
1629          (address (caddr entry)))
1630     (widget-create 'link :help-echo (concat "Find out more about " name)
1631                    :action 'about-maintainer
1632                    :button-prefix ""
1633                    :button-suffix ""
1634                    :tag name
1635                    :value who)
1636     (widget-insert (about-tabs name)
1637                    "<")
1638     (about-mailto-link address)
1639     (widget-insert ">\n")
1640     (about-hacker-contribution entry)
1641     (widget-insert "\n")))
1642
1643 (defun about-hackers (&rest ignore)
1644   (unless (about-get-buffer "*About Contributors*")
1645     (let ((title "A Legion of Contributors to XEmacs"))
1646       (widget-insert
1647        (about-center title)
1648        (about-with-face title 'bold)))
1649     (widget-insert
1650      "\n
1651 Like most free software, XEmacs is a collaborative effort.  These are
1652 some of the contributors.  We have no doubt forgotten someone; we
1653 apologize!  You can see some of our faces under the links.\n\n"
1654      (about-with-face "Primary maintainers for this release:"
1655                       'about-headline-face)
1656      "\n\n")
1657     (mapc 'about-show-linked-info about-current-release-maintainers)
1658     (widget-insert
1659      "\n"
1660      (about-with-face "Other notable current hackers:"
1661                       'about-headline-face)
1662      "\n\n")
1663     (mapc 'about-show-linked-info about-other-current-hackers)
1664     (widget-insert
1665      "\n"
1666      (about-with-face "Other notable once and future hackers:"
1667                       'about-headline-face)
1668      "\n\n")
1669     (mapc 'about-show-linked-info about-once-and-future-hackers)
1670     (flet ((print-short (name addr &optional shortinfo)
1671              (widget-insert (concat (about-with-face name 'italic)
1672                                     (about-tabs name)
1673                                     "<"))
1674              (about-mailto-link addr)
1675              (widget-insert
1676               (concat ">\n"
1677                       (if shortinfo (concat shortinfo "\n") "")))))
1678       (widget-insert
1679        "\n\
1680 In addition to those just mentioned, the following people have spent a
1681 great deal of effort providing feedback, testing beta versions of
1682 XEmacs, providing patches to the source code, or doing all of the
1683 above.  We couldn't have done it without them.\n\n")
1684       (print-short "Nagi M. Aboulenein" "aboulene@ponder.csci.unt.edu")
1685       (print-short "Per Abrahamsen" "abraham@dina.kvl.dk")
1686       (print-short "Gary Adams" "gra@zeppo.East.Sun.COM")
1687       (print-short "Gennady Agranov" "agranov@csa.CS.Technion.Ac.IL")
1688       (print-short "Mark Allender" "allender@vnet.IBM.COM")
1689       (print-short "Stephen R. Anderson" "sra@bloch.ling.yale.edu")
1690       (print-short "Butch Anton" "butch@zaphod.uchicago.edu")
1691       (print-short "Fred Appelman" "Fred.Appelman@cv.ruu.nl")
1692       (print-short "Erik \"The Pope\" Arneson" "lazarus@mind.net")
1693       (print-short "Tor Arntsen" "tor@spacetec.no")
1694       (print-short "Marc Aurel" "4-tea-2@bong.saar.de")
1695       (print-short "Larry Auton" "lda@control.att.com")
1696       (print-short "Larry Ayers" "layers@marktwain.net")
1697       (print-short "Oswald P. Backus IV" "backus@altagroup.com")
1698       (print-short "Mike Battaglia" "mbattagl@dsccc.com")
1699       (print-short "Neal Becker" "neal@ctd.comsat.com")
1700       (print-short "Paul Bibilo" "peb@delcam.com")
1701       (print-short "Leonard Blanks" "ltb@haruspex.demon.co.uk")
1702       (print-short "Jan Borchers" "job@tk.uni-linz.ac.at")
1703       (print-short "Mark Borges" "mdb@cdc.noaa.gov")
1704       (print-short "David P. Boswell" "daveb@tau.space.thiokol.com")
1705       (print-short "Tim Bradshaw" "tfb@edinburgh.ac.uk")
1706       (print-short "Rick Braumoeller" "rickb@mti.sgi.com")
1707       (print-short "Matthew J. Brown" "mjb@doc.ic.ac.uk")
1708       (print-short "Alastair Burt" "burt@dfki.uni-kl.de")
1709       (print-short "David Bush" "david.bush@adn.alcatel.com")
1710       (print-short "Richard Caley" "rjc@cstr.edinburgh.ac.uk")
1711       (print-short "Stephen Carney" "carney@gvc.dec.com")
1712       (print-short "Lorenzo M. Catucci" "lorenzo@argon.roma2.infn.it")
1713       (print-short "Philippe Charton" "charton@lmd.ens.fr")
1714       (print-short "Peter Cheng" "peter.cheng@sun.com")
1715       (print-short "Jin S. Choi" "jin@atype.com")
1716       (print-short "Tomasz J. Cholewo" "tjchol01@mecca.spd.louisville.edu")
1717       (print-short "Serenella Ciongoli" "czs00@ladybug.oes.amdahl.com")
1718       (print-short "Glynn Clements" "glynn@sensei.co.uk")
1719       (print-short "Richard Cognot" "cognot@ensg.u-nancy.fr")
1720       (print-short "Andy Cohen" "cohen@andy.bu.edu")
1721       (print-short "Richard Coleman" "coleman@math.gatech.edu")
1722       (print-short "Mauro Condarelli" "MC5686@mclink.it")
1723       (print-short "Nick J. Crabtree" "nickc@scopic.com")
1724       (print-short "Christopher Davis" "ckd@kei.com")
1725       (print-short "Soren Dayton" "csdayton@cs.uchicago.edu")
1726       (print-short "Chris Dean" "ctdean@cogit.com")
1727       (print-short "Michael Diers" "mdiers@logware.de")
1728       (print-short "William G. Dubuque" "wgd@martigny.ai.mit.edu")
1729       (print-short "Steve Dunham" "dunham@dunham.tcimet.net")
1730       (print-short "Samuel J. Eaton" "samuele@cogs.susx.ac.uk")
1731       (print-short "Carl Edman" "cedman@Princeton.EDU")
1732       (print-short "Dave Edmondson" "davided@sco.com")
1733       (print-short "Jonathan Edwards" "edwards@intranet.com")
1734       (print-short "Eric Eide" "eeide@asylum.cs.utah.edu")
1735       (print-short "EKR" "ekr@terisa.com")
1736       (print-short "David Fletcher" "frodo@tsunami.com")
1737       (print-short "Paul Flinders" "ptf@delcam.co.uk")
1738       (print-short "Jered J Floyd" "jered@mit.edu")
1739       (print-short "Gary D. Foster" "Gary.Foster@Corp.Sun.COM")
1740       (print-short "Jerry Frain" "jerry@sneffels.tivoli.com")
1741       (print-short "Holger Franz" "hfranz@physik.rwth-aachen.de")
1742       (print-short "Benjamin Fried" "bf@morgan.com")
1743       (print-short "Barry Friedman" "friedman@nortel.ca")
1744       (print-short "Noah Friedman" "friedman@splode.com")
1745       (print-short "Kazuyoshi Furutaka" "furutaka@Flux.tokai.jaeri.go.jp")
1746       (print-short "Lew Gaiter III" "lew@StarFire.com")
1747       (print-short "Itay Gat" "itay@cs.huji.ac.il")
1748       (print-short "Tim Geisler" "Tim.Geisler@informatik.uni-muenchen.de")
1749       (print-short "Dave Gillespie" "daveg@synaptics.com")
1750       (print-short "Christian F. Goetze" "cg@bigbook.com")
1751       (print-short "Yusuf Goolamabbas" "yusufg@iss.nus.sg")
1752       (print-short "Wolfgang Grieskamp" "wg@cs.tu-berlin.de")
1753       (print-short "John Griffith" "griffith@sfs.nphil.uni-tuebingen.de")
1754       (print-short "James Grinter" "jrg@demon.net")
1755       (print-short "Ben Gross" "bgross@uiuc.edu")
1756       (print-short "Dirk Grunwald" "grunwald@foobar.cs.Colorado.EDU")
1757       (print-short "Michael Guenther" "michaelg@igor.stuttgart.netsurf.de")
1758       (print-short "Dipankar Gupta" "dg@hplb.hpl.hp.com")
1759       (print-short "Markus Gutschke" "gutschk@GOEDEL.UNI-MUENSTER.DE")
1760       (print-short "Kai Haberzettl" "khaberz@synnet.de")
1761       (print-short "Adam Hammer" "hammer@cs.purdue.edu")
1762       (print-short "Magnus Hammerin" "magnush@epact.se")
1763       (print-short "ChangGil Han" "cghan@phys401.phys.pusan.ac.kr")
1764       (print-short "Derek Harding" "dharding@lssec.bt.co.uk")
1765       (print-short "Michael Harnois" "mharnois@sbt.net")
1766       (print-short "John Haxby" "J.Haxby@isode.com")
1767       (print-short "Karl M. Hegbloom" "karlheg@inetarena.com")
1768       (print-short "Benedikt Heinen" "beh@icemark.thenet.ch")
1769       (print-short "Stephan Herrmann" "sh@first.gmd.de")
1770       (print-short "August Hill" "awhill@inlink.com")
1771       (print-short "Mike Hill" "mikehill@hgeng.com")
1772       (print-short "Charles Hines" "chuck_hines@VNET.IBM.COM")
1773       (print-short "Shane Holder" "holder@rsn.hp.com")
1774       (print-short "Chris Holt" "xris@migraine.stanford.edu")
1775       (print-short "Tetsuya HOYANO" "hoyano@ari.bekkoame.or.jp")
1776       (print-short "David Hughes" "djh@harston.cv.com")
1777       (print-short "Tudor Hulubei" "tudor@cs.unh.edu")
1778       (print-short "Tatsuya Ichikawa" "ichikawa@hv.epson.co.jp")
1779       (print-short "Andrew Innes" "andrewi@harlequin.co.uk")
1780       (print-short "Markku Jarvinen" "Markku.Jarvinen@simpukka.funet.fi")
1781       (print-short "Robin Jeffries" "robin.jeffries@sun.com")
1782       (print-short "Philip Johnson" "johnson@uhics.ics.Hawaii.Edu")
1783       (print-short "J. Kean Johnston" "jkj@paradigm-sa.com")
1784       (print-short "John W. Jones" "jj@asu.edu")
1785       (print-short "Andreas Kaempf" "andreas@sccon.com")
1786       (print-short "Yoshiaki Kasahara" "kasahara@nc.kyushu-u.ac.jp")
1787       (print-short "Amir Katz" "amir@ndsoft.com")
1788       (print-short "Doug Keller" "dkeller@vnet.ibm.com")
1789       (print-short "Hunter Kelly" "retnuh@corona")
1790       (print-short "Gregor Kennedy" "gregork@dadd.ti.com")
1791       (print-short "Michael Kifer" "kifer@cs.sunysb.edu")
1792       (print-short "Yasuhiko Kiuchi" "kiuchi@dsp.ksp.fujixerox.co.jp")
1793       (print-short "Greg Klanderman" "greg.klanderman@alum.mit.edu")
1794       (print-short "Valdis Kletnieks" "Valdis.Kletnieks@vt.edu")
1795       (print-short "Norbert Koch" "n.koch@delta-ii.de")
1796       (print-short "Rob Kooper" "kooper@cc.gatech.edu")
1797       (print-short "Peter Skov Knudsen" "knu@dde.dk")
1798       (print-short "Jens Krinke" "krinke@ips.cs.tu-bs.de")
1799       (print-short "Maximilien Lincourt" "max@toonboom.com")
1800       (print-short "Mats Larsson" "Mats.Larsson@uab.ericsson.se")
1801       (print-short "Simon Leinen" "simon@instrumatic.ch")
1802       (print-short "Carsten Leonhardt" "leo@arioch.oche.de")
1803       (print-short "James LewisMoss" "moss@cs.sc.edu")
1804       (print-short "Mats Lidell" "mats.lidell@contactor.se")
1805       (print-short "Matt Liggett" "mliggett@seven.ucs.indiana.edu")
1806       (print-short "Christian Limpach" "Christian.Limpach@nice.ch")
1807       (print-short "Maximilien Lincourt" "max@toonboom.com")
1808       (print-short "Markus Linnala" "maage@b14b.tupsu.ton.tut.fi")
1809       (print-short "Robert Lipe" "robertl@arnet.com")
1810       (print-short "Derrell Lipman" "derrell@vis-av.com")
1811       (print-short "Damon Lipparelli" "lipp@aa.net")
1812       (print-short "Hamish Macdonald" "hamish@bnr.ca")
1813       (print-short "Ian MacKinnon" "imackinnon@telia.co.uk")
1814       (print-short "Patrick MacRoberts" "macro@hpcobr30.cup.hp.com")
1815       (print-short "Tonny Madsen" "Tonny.Madsen@netman.dk")
1816       (print-short "Ketil Z Malde" "ketil@ii.uib.no")
1817       (print-short "Steve March" "smarch@quaver.urbana.mcd.mot.com")
1818       (print-short "Ricardo Marek" "ricky@ornet.co.il")
1819       (print-short "Pekka Marjola" "pema@iki.fi")
1820       (print-short "Simon Marshall" "simon@gnu.ai.mit.edu")
1821       (print-short "Dave Mason" "dmason@plg.uwaterloo.ca")
1822       (print-short "Jaye Mathisen" "mrcpu@cdsnet.net")
1823       (print-short "Jason McLaren" "mclaren@math.mcgill.ca")
1824       (print-short "Michael McNamara" "mac@silicon-sorcery.com")
1825       (print-short "Michael Meissner" "meissner@osf.org")
1826       (print-short "David M. Meyer" "meyer@ns.uoregon.edu")
1827       (print-short "John Mignault" "jbm@panix.com")
1828       (print-short "Brad Miller" "bmiller@cs.umn.edu")
1829       (print-short "John Morey" "jmorey@crl.com")
1830       (print-short "Rob Mori" "rob.mori@sun.com")
1831       (print-short "Heiko Muenkel" "muenkel@tnt.uni-hannover.de")
1832       (print-short "Arup Mukherjee" "arup+@cs.cmu.edu")
1833       (print-short "Colas Nahaboo" "Colas.Nahaboo@sophia.inria.fr")
1834       (print-short "Lynn D. Newton" "lynn@ives.phx.mcd.mot.com")
1835       (print-short "Casey Nielson" "knielson@joule.elee.calpoly.edu")
1836       (print-short "Georg Nikodym" "Georg.Nikodym@canada.sun.com")
1837       (print-short "Andy Norman" "ange@hplb.hpl.hp.com")
1838       (print-short "Joe Nuspl" "nuspl@sequent.com")
1839       (print-short "Kim Nyberg" "kny@tekla.fi")
1840       (print-short "Kevin Oberman" "oberman@es.net")
1841       (print-short "David Ofelt" "ofelt@getalife.Stanford.EDU")
1842       (print-short "Alexandre Oliva" "oliva@dcc.unicamp.br")
1843       (print-short "Tore Olsen" "toreo@colargol.idb.hist.no")
1844       (print-short "Greg Onufer" "Greg.Onufer@eng.sun.com")
1845       (print-short "Achim Oppelt" "aoppelt@theorie3.physik.uni-erlangen.de")
1846       (print-short "Rebecca Ore" "rebecca.ore@op.net")
1847       (print-short "Sudeep Kumar Palat" "palat@idt.unit.no")
1848       (print-short "Joel Peterson" "tarzan@aosi.com")
1849       (print-short "Thomas A. Peterson" "tap@src.honeywell.com")
1850       (print-short "Tibor Polgar" "tibor@alteon.com")
1851       (print-short "Frederic Poncin" "fp@info.ucl.ac.be")
1852       (print-short "E. Rehmi Post" "rehmi@asylum.sf.ca.us")
1853       (print-short "Martin Pottendorfer" "Martin.Pottendorfer@aut.alcatel.at")
1854       (print-short "Colin Rafferty" "colin@xemacs.org")
1855       (print-short "Rick Rankin" "Rick_Rankin-P15254@email.mot.com")
1856       (print-short "Paul M Reilly" "pmr@pajato.com")
1857       (print-short "Jack Repenning" "jackr@sgi.com")
1858       (print-short "Daniel Rich" "drich@cisco.com")
1859       (print-short "Roland Rieke" "rol@darmstadt.gmd.de")
1860       (print-short "Art Rijos" "art.rijos@SNET.com")
1861       (print-short "Russell Ritchie" "ritchier@britannia-life.co.uk")
1862       (print-short "Roland" "rol@darmstadt.gmd.de")
1863       (print-short "Mike Russell" "mjruss@rchland.vnet.ibm.com")
1864       (print-short "Hajime Saitou" "hajime@jsk.t.u-tokyo.ac.jp")
1865       (print-short "Jan Sandquist" "etxquist@iqa.ericsson.se")
1866       (print-short "Marty Sasaki" "sasaki@spdcc.com")
1867       (print-short "SATO Daisuke" "densuke@ga2.so-net.or.jp")
1868       (print-short "Kenji Sato" "ken@ny.kdd.com")
1869       (print-short "Mike Scheidler" "c23mts@eng.delcoelect.com")
1870       (print-short "Daniel Schepler" "daniel@shep13.wustl.edu")
1871       (print-short "Holger Schauer" "schauer@coling.uni-freiburg.de")
1872       (print-short "Darrel Schneider" "darrel@slc.com")
1873       (print-short "Hayden Schultz" "haydens@ll.mit.edu")
1874       (print-short "Cotton Seed" "cottons@cybercom.net")
1875       (print-short "Axel Seibert" "seiberta@informatik.tu-muenchen.de")
1876       (print-short "Odd-Magne Sekkingstad" "oddms@ii.uib.no")
1877       (print-short "Gregory Neil Shapiro" "gshapiro@sendmail.org")
1878       (print-short "Justin Sheehy" "justin@linus.mitre.org")
1879       (print-short "John Shen" "zfs60@cas.org")
1880       (print-short "Murata Shuuichirou" "mrt@mickey.ai.kyutech.ac.jp")
1881       (print-short "Matt Simmons" "simmonmt@acm.org")
1882       (print-short "Dinesh Somasekhar" "somasekh@ecn.purdue.edu")
1883       (print-short "Jeffrey Sparkes" "jsparkes@bnr.ca")
1884       (print-short "Manoj Srivastava" "srivasta@pilgrim.umass.edu")
1885       (print-short "Francois Staes" "frans@kiwi.uia.ac.be")
1886       (print-short "Anders Stenman" "stenman@isy.liu.se")
1887       (print-short "Jason Stewart" "jasons@cs.unm.edu")
1888       (print-short "Rick Tait" "rickt@gnu.ai.mit.edu")
1889       (print-short "TANAKA Hayashi" "tanakah@mxa.mesh.ne.jp")
1890       (print-short "Samuel Tardieu" "sam@inf.enst.fr")
1891       (print-short "James Thompson" "thompson@wg2.waii.com")
1892       (print-short "Nobu Toge" "toge@accad1.kek.jp")
1893       (print-short "Raymond L. Toy" "toy@rtp.ericsson.se")
1894       (print-short "Remek Trzaska" "remek@npac.syr.edu")
1895       (print-short "TSUTOMU Nakamura" "tsutomu@rs.kyoto.omronsoft.co.jp")
1896       (print-short "Stefanie Teufel" "s.teufel@ndh.net")
1897       (print-short "Gary Thomas" "g.thomas@opengroup.org")
1898       (print-short "John Turner" "turner@xdiv.lanl.gov")
1899       (print-short "UENO Fumihiro" "7m2vej@ritp.ye.IHI.CO.JP")
1900       (print-short "Aki Vehtari" "Aki.Vehtari@hut.fi")
1901       (print-short "Juan E. Villacis" "jvillaci@cs.indiana.edu")
1902       (print-short "Vladimir Vukicevic" "vladimir@intrepid.com")
1903       (print-short "David Walte" "djw18@cornell.edu")
1904       (print-short "Peter Ware" "ware@cis.ohio-state.edu")
1905       (print-short "Christoph Wedler" "wedler@fmi.uni-passau.de")
1906       (print-short "Yoav Weiss" "yoav@zeus.datasrv.co.il")
1907       (print-short "Peter B. West" "p.west@uq.net.au")
1908       (print-short "Rod Whitby" "rwhitby@asc.corp.mot.com")
1909       (print-short "Rich Williams" "rdw@hplb.hpl.hp.com")
1910       (print-short "Raymond Wiker" "raymond@orion.no")
1911       (print-short "Peter Windle" "peterw@SDL.UG.EDS.COM")
1912       (print-short "David C Worenklein" "dcw@gcm.com")
1913       (print-short "Takeshi Yamada" "yamada@sylvie.kecl.ntt.jp")
1914       (print-short "Katsumi Yamaoka" "yamaoka@ga.sony.co.jp")
1915       (print-short "Jason Yanowitz" "yanowitz@eternity.cs.umass.edu")
1916       (print-short "La Monte Yarroll" "piggy@hilbert.maths.utas.edu.au")
1917       (print-short "Blair Zajac" "blair@olympia.gps.caltech.edu")
1918       (print-short "Volker Zell" "vzell@de.oracle.com")
1919       (print-short "Daniel Zivkovic" "daniel@canada.sun.com")
1920       (print-short "Karel Zuiderveld" "Karel.Zuiderveld@cv.ruu.nl")
1921       (widget-insert "\n"))
1922     (about-finish-buffer)))
1923
1924 ;;; about.el ends here