428
+ − 1 -*- mode:outline -*-
+ − 2
+ − 3 * Introduction
+ − 4 ==============
+ − 5
743
+ − 6 You are running a potentially unstable version of XEmacs. Please do
+ − 7 not report problems with Beta XEmacs to comp.emacs.xemacs. Report
1250
+ − 8 them to <xemacs-beta@xemacs.org>, preferably with
+ − 9 'M-x report-xemacs-bug RET'.
428
+ − 10
743
+ − 11 ** Mailing Lists
+ − 12 ================
+ − 13
+ − 14 *** XEmacs Beta Mailing List
+ − 15 ----------------------------
428
+ − 16
743
+ − 17 If you are not subscribed to the XEmacs beta list you should be.
+ − 18 Currently all discussion of development issues, including bug reports
+ − 19 and coding discussion, takes place on the XEmacs Beta mailing list.
+ − 20 Only patches and administrative actions regarding patches are sent
+ − 21 elsewhere (to the XEmacs Patches list).
+ − 22
1044
+ − 23 *** XEmacs Patches Mailing List
+ − 24 -------------------------------
428
+ − 25
743
+ − 26 XEmacs Patches records proposed changes to XEmacs, and their
1044
+ − 27 disposition. It is open subscription, and all patches that are
+ − 28 seriously proposed for inclusion in XEmacs should be posted here. You
743
+ − 29 can follow progress of your patch by subscribing to the mailing list
+ − 30 or in the archives.
+ − 31
1044
+ − 32 Besides patches, only actions by members of the XEmacs Review Board
+ − 33 should be posted to this list. All discussion should be redirected to
+ − 34 XEmacs Beta or XEmacs Design.
+ − 35
+ − 36 *** XEmacs Design Mailing List
+ − 37 ------------------------------
+ − 38
+ − 39 XEmacs Design is for design discussions such as adding major features
+ − 40 or whole modules, or reimplementation of existing functions, to XEmacs.
+ − 41
+ − 42 *** List Administrivia
+ − 43 ----------------------
428
+ − 44
743
+ − 45 In the descriptions below, the word LIST (all uppercase) is a
1044
+ − 46 variable. Substitute "beta", "design", or "patches" as appropriate
+ − 47 (to get "xemacs-beta" as the mailbox for the XEmacs Beta mailing list,
1301
+ − 48 or <http://www.xemacs.org/Lists/#xemacs-beta> for its URL).
428
+ − 49
743
+ − 50 The XEmacs mailing lists are managed by the Mailman mailing list
+ − 51 package, and the usual Mailman commands work. Do not send mailing
1301
+ − 52 list requests to the main address (<xemacs-LIST@xemacs.org>), always
+ − 53 send them to <xemacs-LIST-request@xemacs.org>. If you have problems
743
+ − 54 with the list itself, they should be brought to the attention of the
+ − 55 XEmacs Mailing List manager <list-manager@xemacs.org> (the same
+ − 56 mailbox, "list-manager", for all lists). All public mailing lists
+ − 57 have searchable archives. The URL is
+ − 58
+ − 59 http://list-archive.xemacs.org/xemacs-LIST
428
+ − 60
1044
+ − 61 Note that the xemacs-LIST-admin address is used internally by the
+ − 62 Mailman software; it is NOT a synonym for xemacs-LIST-request.
+ − 63
743
+ − 64 *** Managing your subscription via the Web
+ − 65 ------------------------------------------
+ − 66
+ − 67 Subscription, unsubscription, and options (such as digests and
+ − 68 temporarily suspending delivery) can be accomplished via the web
1301
+ − 69 interface at <http://www.xemacs.org/Lists/#xemacs-LIST>.
428
+ − 70
743
+ − 71 *** Subscribing by e-mail
+ − 72 -------------------------
+ − 73
1301
+ − 74 Send an email message to <xemacs-LIST-request@xemacs.org> with
743
+ − 75 `subscribe' (without the quotes) as the BODY of the message.
428
+ − 76
743
+ − 77 *** Unsubscribing by e-mail
+ − 78 ---------------------------
+ − 79
1301
+ − 80 Send an email message to <xemacs-LIST-request@xemacs.org> with
743
+ − 81 `unsubscribe' (without the quotes) as the BODY of the message.
428
+ − 82
+ − 83 ** Beta Release Schedule
+ − 84 ========================
+ − 85
1250
+ − 86 We would like to achieve a weekly or fortnightly release cycle (you
+ − 87 know the Open Source model: release early, release often), and in a
+ − 88 perfect world that would indeed be the case. There are at least three
+ − 89 things that often get in the way of that goal: 1) The Release Manager
+ − 90 has a life outside of XEmacs (hard to believe, I know, but true),
+ − 91 2) we like to make releases that will build (at least on the Release
+ − 92 Manager's box), and 3) Murphy likes to throw a spanner in the works
+ − 93 right when you least expect it (Murphy's Law: Whatever can go wrong,
+ − 94 will go wrong).
+ − 95
+ − 96 If you'd like to keep right up to date and ride the bleeding edge, use
+ − 97 CVS (see <http://www.xemacs.org/Develop/cvsaccess.html>). If you
+ − 98 can't use CVS for some reason and must use FTP, please let us know.
+ − 99 it will make it more likely that we release betas more often.
+ − 100
428
+ − 101
+ − 102 ** Reporting Problems
+ − 103 =====================
+ − 104
+ − 105 The best way to get problems fixed in XEmacs is to submit good problem
1250
+ − 106 reports, 'M-x report-xemacs-bug RET' will help you do this (assuming
+ − 107 you have a usable XEmacs). Since this is beta software, problems are
+ − 108 certain to exist. Please read through all of part II of the XEmacs
+ − 109 FAQ for an overview of problem reporting. Other items which are most
+ − 110 important are:
428
+ − 111
+ − 112 1. Do not submit C stack backtraces without line numbers. Since it
+ − 113 is possible to compile optimized with debug information with GCC
+ − 114 it is never a good idea to compile XEmacs without the -g flag.
+ − 115 XEmacs runs on a variety of platforms, and often it is not
+ − 116 possible to recreate problems which afflict a specific platform.
+ − 117 The line numbers in the C stack backtrace help isolate where the
+ − 118 problem is actually occurring.
+ − 119
+ − 120 2. Attempt to recreate the problem starting with an invocation of
1255
+ − 121 XEmacs with `xemacs -no-autoloads'. Quite often, problems are
+ − 122 due to package interdependencies, and the like. An actual bug
+ − 123 in XEmacs should be reproducible in a default configuration
+ − 124 without loading any special packages (or the one or two specific
+ − 125 packages that cause the bug to appear). If you have trouble
+ − 126 getting anything to work at all with the above invocation, use
+ − 127 `xemacs -vanilla' instead. If you need to load your user init
+ − 128 file or the site file to get the problem to occur, then it has
+ − 129 something to do with them, and you should try to isolate the
+ − 130 issue in those files.
428
+ − 131
+ − 132 3. A picture can be worth a thousand words. When reporting an
+ − 133 unusual display, it is generally best to capture the problem in a
+ − 134 screen dump and include that with the problem report. The easiest
+ − 135 way to get a screen dump is to use the xv program and its grab
+ − 136 function. Save the image as a GIF to keep bandwidth requirements
+ − 137 down without loss of information. MIME is the preferred method
+ − 138 for making the image attachments.
+ − 139
+ − 140 ** Getting the Source
+ − 141 =====================
+ − 142
+ − 143 In addition to the normal tar distribution, XEmacs source is now
743
+ − 144 available via CVS. Please see
+ − 145
+ − 146 http://www.xemacs.org/Develop/cvsaccess.html
428
+ − 147
+ − 148 * Compiling Beta XEmacs
+ − 149 =======================
+ − 150
+ − 151 ** Building an XEmacs from patches
+ − 152 ==================================
+ − 153
1250
+ − 154 All beta releases of XEmacs are included with patches from the previous
+ − 155 version in an attempt to keep bandwidth requirements down. Patches
+ − 156 should be applied with the GNU patch program in something like the
+ − 157 following. Let's say you're upgrading XEmacs 21.5-beta9 to XEmacs
+ − 158 21.5-beta10 and you have a full unmodified XEmacs 21.5-beta9 source
+ − 159 tree to work with. Change to the top level directory and issue the
428
+ − 160 shell command:
+ − 161
1250
+ − 162 $ gunzip -c /tmp/xemacs-21.5.9-21.5.10.patch.gz | patch -p1
428
+ − 163
+ − 164 After patching, check to see that no patches were missed by doing
+ − 165 $ find . -name \*.rej -print
+ − 166
+ − 167 Any rejections should be treated as serious problems to be resolved
+ − 168 before building XEmacs.
+ − 169
+ − 170 After seeing that there were no rejections, issue the commands
+ − 171
+ − 172 $ ./config.status --recheck
1250
+ − 173 $ make beta > ./beta.err 2>&1
+ − 174 $ make check > ./xemacs-make-check.err 2>&1
428
+ − 175
1250
+ − 176 Redirect the output from make to those files because you'll use them
+ − 177 later when you send off a build report with 'M-x build-report RET'
428
+ − 178
+ − 179 ** Building XEmacs from a full distribution
1024
+ − 180 ===========================================
428
+ − 181
+ − 182 Locate a convenient place where you have at least 100MB of free space
+ − 183 and issue the command
+ − 184
1250
+ − 185 $ gunzip -c /tmp/xemacs-21.5.10.tar.gz | tar xvf -
428
+ − 186
1250
+ − 187 (or simply `tar zxvf /tmp/xemacs-21.5.10.tar.gz' if you use GNU tar).
428
+ − 188
+ − 189 cd to the top level directory and issue an appropriate configure
+ − 190 command. One maintainer uses the following at the time of this
+ − 191 writing:
+ − 192
+ − 193 ./configure \
1250
+ − 194 --extra-verbose \
+ − 195 --site-prefixes=/usr/local/pgsql:/usr/local/BerkeleyDB.4.1 \
+ − 196 --dynamic=yes --with-gtk=no --with-gnome=no --with-toolbars \
+ − 197 --with-wmcommand --with-athena=next --with-menubars=lucid \
+ − 198 --with-scrollbars=athena --with-dialogs=athena --with-widgets=athena \
+ − 199 --with-gif --with-sound=native,noesd --with-site-lisp=no \
+ − 200 --with-site-modules --pdump --with-mule --with-xfs --debug \
+ − 201 --error-checking=all --memory-usage-stats --use-kkcc \
+ − 202 --with-clash-detection
428
+ − 203
1250
+ − 204 Part of the configure output is a summary that looks something
+ − 205 like the following. (this summary is also available as the file
+ − 206 'Installation' in the top directory of your build tree, and via
+ − 207 the command 'M-x describe-installation RET').
428
+ − 208
1250
+ − 209 uname -a: Linux eicq 2.4.20 #1 Wed Dec 18 02:14:29 EST 2002 i586 unknown
428
+ − 210
1250
+ − 211 ./configure '--extra-verbose' '--site-prefixes=/usr/local/pgsql:/usr/local/BerkeleyDB.4.1' '--dynamic=yes' '--with-gtk=no' '--with-gnome=no' '--with-toolbars' '--with-wmcommand' '--with-athena=next' '--with-menubars=lucid' '--with-scrollbars=athena' '--with-dialogs=athena' '--with-widgets=athena' '--with-gif' '--with-sound=native,noesd' '--with-site-lisp=no' '--with-site-modules' '--pdump' '--with-mule' '--with-xfs' '--debug' '--error-checking=all' '--memory-usage-stats' '--use-kkcc' '--with-clash-detection'
+ − 212
+ − 213
+ − 214 XEmacs 21.5-b10 "burdock" (+CVS-20030131) configured for `i586-pc-linux'.
428
+ − 215
+ − 216
1250
+ − 217 Compilation / Installation:
+ − 218 Source code location: /usr/local/src/xemacs
+ − 219 Installation prefix: /usr/local
+ − 220 Additional prefixes: /usr/local/pgsql /usr/local/BerkeleyDB.4.1
+ − 221 Operating system description file: `s/linux.h'
+ − 222 Machine description file: `m/intel386.h'
+ − 223 Compiler: gcc -Wall -Wno-switch -Winline -Wmissing-prototypes -Wsign-compare -Wundef -Wstrict-prototypes -Wshadow -Wmissing-declarations -O1 -ggdb3 -Wall -Wchar-subscripts -Wunused -Wundef -Wshadow -Wsign-compare -Wmissing-declarations -march=k6
+ − 224 Relocating allocator for buffers: no
+ − 225 GNU version of malloc: yes
+ − 226 - Using Doug Lea's new malloc from the GNU C Library.
428
+ − 227
1250
+ − 228 Window System:
+ − 229 Compiling in support for the X window system:
+ − 230 - X Windows headers location: /usr/X11/include
+ − 231 - X Windows libraries location: /usr/X11/lib
+ − 232 - Handling WM_COMMAND properly.
+ − 233 Compiling in support for the Athena widget set:
+ − 234 - Athena headers location: X11/neXtaw
+ − 235 - Athena library to link: neXtaw
+ − 236 Using Lucid menubars.
+ − 237 Using Athena scrollbars.
+ − 238 Using Athena dialog boxes.
+ − 239 Using Athena native widgets.
+ − 240
+ − 241 TTY:
428
+ − 242 Compiling in support for ncurses.
+ − 243 Compiling in support for GPM (General Purpose Mouse).
1250
+ − 244
+ − 245 Images:
+ − 246 Compiling in support for GIF images (builtin).
+ − 247 Compiling in support for XPM images.
+ − 248 Compiling in support for PNG images.
+ − 249 Compiling in support for JPEG images.
+ − 250 Compiling in support for TIFF images.
+ − 251 Compiling in support for X-Face message headers.
+ − 252
+ − 253 Sound:
+ − 254 Compiling in support for sound (native).
+ − 255
+ − 256 Databases:
+ − 257 Compiling in support for Berkeley database.
+ − 258 Compiling in support for PostgreSQL.
+ − 259 - Using PostgreSQL header file: libpq-fe.h
+ − 260 - Using PostgreSQL V7 bindings.
+ − 261
+ − 262 Internationalization:
+ − 263 Compiling in support for Mule (multi-lingual Emacs).
+ − 264 Compiling in support for XIM (X11R5+ I18N input method).
+ − 265 - Using raw Xlib to provide XIM support.
+ − 266 - Using XFontSet to provide bilingual menubar.
+ − 267
+ − 268 Mail:
+ − 269 Compiling in support for "dot-locking" mail spool file locking method.
+ − 270
+ − 271 Other Features:
+ − 272 Inhibiting IPv6 canonicalization at startup.
+ − 273 Compiling in support for dynamic shared object modules.
+ − 274 Using the new GC algorithms.
+ − 275 Using the new portable dumper.
+ − 276 Compiling in support for extra debugging code.
428
+ − 277 WARNING: ---------------------------------------------------------
+ − 278 WARNING: Compiling in support for runtime error checking.
+ − 279 WARNING: XEmacs will run noticeably more slowly as a result.
+ − 280 WARNING: Error checking is on by default for XEmacs beta releases.
+ − 281 WARNING: ---------------------------------------------------------
+ − 282
+ − 283
+ − 284
1250
+ − 285 Then...
+ − 286
+ − 287 $ make > ./beta.err 2>&1
+ − 288 $ make check > ./xemacs-make-check.err 2>&1
+ − 289
+ − 290 ...and you should have a working XEmacs.
428
+ − 291
+ − 292 After you have verified that you have a functional editor, fire up
+ − 293 your favorite mail program and send a build report to
1250
+ − 294 <xemacs-buildreports@xemacs.org>.
649
+ − 295
1250
+ − 296 Preferably this is best done from XEmacs, following these simple steps:
649
+ − 297
+ − 298 M-x customize-group RET build-report RET
+ − 299 M-x build-report RET
+ − 300
+ − 301 See also
1253
+ − 302 <http://www.xemacs.org/Releases/Public-21.2/tester.html#reporting>
649
+ − 303
+ − 304 If you create the report manually by other means, here is what the
+ − 305 build report should include:
428
+ − 306
+ − 307 1. Your hardware configuration (OS version, etc.)
+ − 308
+ − 309 2. Version numbers of software in use (X11 version, system library
+ − 310 versions if appropriate, graphics library versions if appropriate).
+ − 311 If you're on a system like Linux, include all the version numbers
+ − 312 you can because chances are it makes a difference.
+ − 313
+ − 314 3. The options given to configure
+ − 315
+ − 316 4. The configuration report illustrated above
+ − 317
+ − 318 For convenience all of the above items are placed in a file called
+ − 319 `Installation' in the top level build directory. They are also
+ − 320 available by performing M-x describe-installation inside XEmacs.
+ − 321
+ − 322 5. Any other unusual items you feel should be brought to the attention
+ − 323 of the developers.
+ − 324
743
+ − 325
1024
+ − 326 * Packages
+ − 327 ==========
+ − 328
+ − 329 [Note: these instructions have been partly updated, but not carefully
+ − 330 reviewed in some time. Caveat tester.]
+ − 331
+ − 332 Starting with XEmacs 21.1, much of the functionality of XEmacs has
+ − 333 been unbundled into "the packages." For more information about the
+ − 334 package system, see the Info nodes on Packages (in the XEmacs User
+ − 335 Manual) and on Packaging (in the Lisp Reference).
+ − 336
+ − 337 When bootstrapping XEmacs, you may need to manually install some
+ − 338 packages (at least xemacs-base and efs). These packages are available
1250
+ − 339 by FTP at <ftp://ftp.xemacs.org/pub/xemacs/packages/>.
1024
+ − 340
+ − 341 ** Binary package installation
+ − 342 ==============================
+ − 343
+ − 344 Prerequisite: XEmacs 21.0-b1.
+ − 345
+ − 346 Binary packages are complete entities that can be untarred at the top
+ − 347 level of an XEmacs package hierarchy and work at runtime. To install files
+ − 348 in this directory, run the command `M-x package-admin-add-binary-package'
+ − 349 and fill in appropriate values to the prompts.
+ − 350
+ − 351 ** Manual procedures for package management
+ − 352 ===========================================
+ − 353
+ − 354 Prerequisite: XEmacs 21.0
+ − 355
+ − 356 When adding and deleting files from a lisp directory the
+ − 357 auto-autoloads.el (global symbols) and custom-load.el (Customization
+ − 358 groups) must be kept in synch. Assuming one is manipulating a
+ − 359 directory called `lisp-utils', the command to rebuild the
+ − 360 auto-autoloads.el file is:
+ − 361
1250
+ − 362 xemacs -vanilla -batch \
+ − 363 -eval \("setq autoload-package-name \"lisp-utils\""\) \
+ − 364 -f batch-update-directory lisp-utils
1024
+ − 365
+ − 366 The command to rebuild the custom-load.el file is:
+ − 367
1250
+ − 368 xemacs -vanilla -batch -f Custom-make-dependencies lisp-utils
1024
+ − 369
1250
+ − 370 To byte-compile both of these files the command is:
1024
+ − 371
+ − 372 xemacs -vanilla -batch -f batch-byte-compile \
+ − 373 lisp-utils/auto-autoloads.el lisp-utils/custom-load.el
+ − 374
1250
+ − 375 Of course, being a beta tester, you'd be aware that it is much easier
+ − 376 to manage your XEmacs packages with PUI.
+ − 377
1024
+ − 378 ** Building XEmacs and XEmacs packages from scratch
+ − 379 ===================================================
+ − 380
1250
+ − 381 To build everything completely from scratch isn't hard, just time
+ − 382 consuming.
1024
+ − 383
1250
+ − 384 *** Step 1 - grab the sources (core and packages)
1024
+ − 385
1250
+ − 386 $ cvs -d :pserver:cvs@cvs.xemacs.org:/pack/xemacscvs login
+ − 387 [password: "cvs" (sans quotes)]
1024
+ − 388
1301
+ − 389 $ cvs -d :pserver:cvs@cvs.xemacs.org:/pack/xemacscvs co -d xemacs-21.5 xemacs
1024
+ − 390
1250
+ − 391 $ cvs -d :pserver:cvs@cvs.xemacs.org:/pack/xemacscvs co packages
+ − 392
+ − 393 *** Step 2 - build XEmacs
1024
+ − 394
1250
+ − 395 $ cd xemacs-21.5
+ − 396 $ ./configure [options...]
+ − 397 $ make > ./beta.err 2>&1
+ − 398 $ make check > ./xemacs-make-check.err 2>&1
1024
+ − 399
1250
+ − 400 And optionally:
1024
+ − 401
1250
+ − 402 $ make install > ./xemacs-make-install.err 2>&1
+ − 403
+ − 404 *** Step 3 - build and install the packages
1024
+ − 405
1250
+ − 406 $ cd packages
+ − 407 $ cp Local.rules.template Local.rules
1024
+ − 408
1250
+ − 409 Then edit Local.rules to suit your needs/environment
+ − 410 see: (Info-goto-node "(xemacs)Local.rules file") for details about
+ − 411 this file.
1024
+ − 412
1250
+ − 413 And then:
1024
+ − 414
1250
+ − 415 $ make install
1024
+ − 416
+ − 417 * Improving XEmacs
743
+ − 418 =================
+ − 419
428
+ − 420 ** Creating patches for submission
+ − 421 ==================================
+ − 422
1044
+ − 423 All patches to XEmacs that are seriously proposed for inclusion (eg,
+ − 424 bug fixes) should be mailed to <xemacs-patches@xemacs.org>. Each
+ − 425 patch will be reviewed by the patches review board, and will be
743
+ − 426 acknowledged and added to the distribution, or rejected with an
+ − 427 explanation. Progress of the patch is tracked on the XEmacs Patches
1044
+ − 428 mailing list, which is open subscription. (If a patch is simply
+ − 429 intended to facilitate discussion, "I mean something that works like
1250
+ − 430 this but this is really rough", a Cc to XEmacs Patches is optional,
1044
+ − 431 but doesn't hurt.)
428
+ − 432
+ − 433 Patches to XEmacs Lisp packages should be sent to the maintainer of
+ − 434 the package. If the maintainer is listed as `XEmacs Development Team'
+ − 435 patches should be sent to <xemacs-patches@xemacs.org>.
+ − 436
+ − 437 Emailed patches should preferably be sent in MIME format and quoted
+ − 438 printable encoding (if necessary).
+ − 439
743
+ − 440 The simplest way to create well-formed patches is to use CVS and
+ − 441 Didier Verna's Patcher library (available as patcher.el in the
+ − 442 xemacs-devel package). Patcher is new and requires some setup, but
+ − 443 most of the core developers are now using it for their own patches.
+ − 444 Patcher also can be configured to create patches for several projects,
+ − 445 and recognize the project from the directory it is invoked in. This
+ − 446 makes it a useful general tool (as long as XEmacs-style patches are
+ − 447 accepted at your other projects, which is likely since they conform to
+ − 448 the GNU standards).
+ − 449
+ − 450 When making patches by hand, please use the `-u' option, or if your
+ − 451 diff doesn't support it, `-c'. Using ordinary (context-free) diffs
+ − 452 are notoriously prone to error, since line numbers tend to change when
428
+ − 453 others make changes to the same source file.
+ − 454
+ − 455 An example of the `diff' usage:
+ − 456
+ − 457 $ diff -u OLDFILE NEWFILE
+ − 458
+ − 459 -or-
+ − 460
+ − 461 $ diff -c OLDFILE NEWFILE
+ − 462
+ − 463 Also, it is helpful if you create the patch in the top level of the
+ − 464 XEmacs source directory:
+ − 465
+ − 466 $ cp -p lwlib/xlwmenu.c lwlib/xlwmenu.c.orig
+ − 467 hack, hack, hack....
+ − 468 $ diff -u lwlib/xlwmenu.c.orig lwlib/xlwmenu.c
+ − 469
+ − 470 Also note that if you cut & paste from an xterm to an XEmacs mail buffer
+ − 471 you will probably lose due to tab expansion. The best thing to do is
+ − 472 to use an XEmacs shell buffer to run the diff commands, or ...
+ − 473 M-x cd to the appropriate directory, and issue the command `C-u M-!' from
+ − 474 within XEmacs.
+ − 475
+ − 476 Patches should be as single-minded as possible. Mammoth patches can
+ − 477 be very difficult to place into the right slot. They are much easier
+ − 478 to deal with when broken down into functional or conceptual chunks.
+ − 479 The patches submitted by Kyle Jones and Hrvoje Niksic are stellar
1250
+ − 480 examples of how to "Do The Right Thing".
428
+ − 481
743
+ − 482 Each patch should be accompanied by an update to the appropriate
+ − 483 ChangeLog file. Guidelines for writing ChangeLog entries is governed
+ − 484 by the GNU coding standards. Please see
1250
+ − 485 <http://www.gnu.org/prep/standards_toc.html> [Change Logs section]
743
+ − 486 for details.
+ − 487
+ − 488 Do not submit context diffs (either -c or -u) of ChangeLogs. Because
+ − 489 of the "stack" nature of ChangeLogs (new entries are always pushed on
+ − 490 the top), context diffs will fail to apply more often than they
+ − 491 succeed. Simply cutting and pasting the entry from an Emacs buffer to
+ − 492 the mail buffer (beware of tab expansion!) is probably easiest. The
+ − 493 Patcher library also will set up your ChangeLogs for you, and copy
1250
+ − 494 them to the mail. Context-less unified diffs (-U 0) are also
+ − 495 acceptable.
428
+ − 496
743
+ − 497 *** Patch discussion etiquette
+ − 498 -------------------------------
428
+ − 499
743
+ − 500 If you intend a patch for _application_ to the sources as is, _always_
+ − 501 post it to xemacs-patches, even if there are minor points you would
+ − 502 like to have discussed by others. Not doing so will resulting in
+ − 503 patches getting "lost". If you expect that the patch will not be
+ − 504 acceptable, but are using it to stimulate discussion, then don't post
1250
+ − 505 to xemacs-patches. Intermediate cases are up to your judgment;
743
+ − 506 unless you're sure you'll follow up with a "real" patch, better to err
+ − 507 on the side of posting to xemacs-patches.
+ − 508
+ − 509 Discussion of the _content_ of the patch (ie responses to reviewer
+ − 510 comments beyond "that's right, ok, I'll do it your way") should _always_
1044
+ − 511 be posted to xemacs-beta or to xemacs-design. If you're not sure
+ − 512 which is more appropriate, send it to xemacs-beta. That is the most
+ − 513 widely read channel.
428
+ − 514
743
+ − 515 If discussion results in a bright idea and you come up with a new
+ − 516 patch, normally you should post it to both mailing lists. The people
+ − 517 discussing on XEmacs Beta will want to know the outcome of the thread,
+ − 518 and you need to submit to XEmacs Patches as the "list of record."
428
+ − 519
743
+ − 520 If the old patch has been applied to CVS, then just submit the new one
+ − 521 as usual. If it has not been applied, then it is best to submit a new
+ − 522 patch against CVS. If possible do this as a reply to the original
+ − 523 patch post, or something following it in the thread. (The point is to
+ − 524 get the original patch post's Message-ID in your References header.)
1044
+ − 525 In this case, also use the keyword SUPERSEDES in the Subject header to
743
+ − 526 indicate that the old patch is no longer valid, and that this one
+ − 527 replaces it.
+ − 528
+ − 529 These rules will result in a fair number of cross posts, but we don't
+ − 530 yet have a better way to handle that.
+ − 531
+ − 532 Note: Developers should never post to xemacs-patches unless there is a
+ − 533 patch in the post. We plan to enforce this with an automatic filter.
428
+ − 534
743
+ − 535 The exceptions are administrative. If you have commit authorization,
+ − 536 then post a short COMMIT notice to xemacs-patches when you commit to
+ − 537 CVS. Members of the Review Board will also post short notices of
+ − 538 administrative action (APPROVE, VETO, QUERY, etc) to xemacs-patches.
+ − 539
1024
+ − 540 ** Large contributions
+ − 541 ======================
743
+ − 542
1024
+ − 543 Perhaps you have a whole new mode, or a major synchronization with
+ − 544 upstream for a neglected package, or a synchronization with GNU Emacs
+ − 545 you would like to contribute. We welcome such contributions, but they
+ − 546 are likely to be relatively controversial, generate more comments and
+ − 547 requests for revision, and take longer to integrate. Please be
+ − 548 patient with the process.
428
+ − 549
1024
+ − 550 *** Updates to existing packages
+ − 551 --------------------------------
743
+ − 552
1024
+ − 553 If a package has gotten a bit out of date, or even started to bitrot,
+ − 554 we welcome patches to synchronize it with upstream/GNU Emacs versions.
+ − 555 Most packages end up varying somewhat from their GNU origins. See
+ − 556 "Syncing with GNU Emacs" for hints. Note that if you do a reasonably
+ − 557 large amount of syncing with GNU Emacs, you should log this in the
+ − 558 file itself as well as in the ChangeLog.
428
+ − 559
1024
+ − 560 If the package is important to you, please consider becoming the
+ − 561 maintainer. (See "New packages", below.)
428
+ − 562
1024
+ − 563 *** New packages
+ − 564 ----------------
428
+ − 565
1024
+ − 566 If you have a new mode or other large addition that does not require
+ − 567 changes to the core, please consider submitting it as a package, and
+ − 568 becoming the maintainer. You get direct commit privileges to the
+ − 569 repository for your package, "approval" privileges for your own
+ − 570 patches as well as third party patches to your package, and some
+ − 571 degree of veto power over patches you don't like. In return, you are
+ − 572 expected to maintain friendly liaison with the upstream developer (if
+ − 573 you aren't the upstream developer), keep watch on the XEmacs Patches
+ − 574 list for relevant patches, and be available by email to other
+ − 575 developers for discussion of changes that impact your package. It's
+ − 576 also a pretty standard route to the "core" development group, where we
+ − 577 have plenty of extra work waiting for volunteers.
428
+ − 578
1024
+ − 579 You don't have to become the maintainer, but it virtually ensures
+ − 580 rapid acceptance of the package.
428
+ − 581
1024
+ − 582 For help in creating new packages, see the (rather sparse) discussions
+ − 583 in the XEmacs User's Guide and the Lisp Reference Manual. The XEmacs
1301
+ − 584 Package Release Engineer (Ville Skytt� <scop@xemacs.org> is currently
1335
+ − 585 serving with Norbert Koch <viteno@xemacs.org> assisting; Steve
1301
+ − 586 Youngs <youngs@xemacs.org> and Stephen Turnbull <stephen@xemacs.org>
+ − 587 also can help) are the most likely sources of advice.
428
+ − 588
1024
+ − 589 *** Syncing with GNU Emacs
+ − 590 --------------------------
428
+ − 591
1024
+ − 592 Syncing with GNU Emacs is an important activity. Although each
+ − 593 version has its advantages and areas of concentration, it is very
+ − 594 desirable that common functionality share specifications and APIs.
+ − 595 When porting GNU code to XEmacs, the following points should be given
+ − 596 special attention:
428
+ − 597
1024
+ − 598 o Recent GNU Emacsen cannot be built without Mule, but XEmacs can.
+ − 599 Make sure your changes do not assume the presence of Mule.
428
+ − 600
1024
+ − 601 o GNU Emacs nomenclature often differs from that of XEmacs.
+ − 602 Sometimes syncing the names is desirable, other times not.
428
+ − 603
1024
+ − 604 o GNU Emacs functionality often differs from that of XEmacs.
+ − 605 Syncing functionality is often controversial.
428
+ − 606
1024
+ − 607 It is important that you let other developers know that
+ − 608 synchronization has taken place, to what degree, and when. For this
+ − 609 purpose, we use comments of the form
428
+ − 610
1024
+ − 611 /* Synched up with: FSF 21.3 by Stephen Turnbull */
428
+ − 612
1024
+ − 613 in the source file itself, as the last element of the prefatory
+ − 614 material (copyright notice and commentary). Obviously the comment
1301
+ − 615 marker needs to be changed to leading semicolons for Lisp, but
1024
+ − 616 otherwise the format is the same.
428
+ − 617
1024
+ − 618 Of course you should note syncing as the purpose in the ChangeLog,
+ − 619 too. But entries get buried deep in the ChangeLog file, and may even
+ − 620 get moved to a separate ChangeLog.OLD file for rarely synched files.
428
+ − 621
1024
+ − 622 Rather than dates we use the version of GNU Emacs to sync to. If the
+ − 623 synchronization is partial, add a new comment describing what has
+ − 624 actually been synched, leaving the description of the last full sync
+ − 625 in place. At each full sync, remove all previous synchronization
+ − 626 comments.
428
+ − 627
1024
+ − 628 This applies to Lisp that we have broken out into packages, but
+ − 629 remains in the GNU Emacs core, as well to core Lisp in XEmacs.