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