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