Initial git import
[sxemacs] / etc / BETA
1                                 -*- mode:outline -*-
2
3 * Introduction
4 ==============
5
6 You are running a potentially unstable version of SXEmacs.  Please do
7 not report problems with Beta SXEmacs to comp.emacs.xemacs.  Report
8 them to <sxemacs-devel@sxemacs.org>, preferably with 
9 'M-x report-sxemacs-bug RET'. 
10
11 ** Mailing Lists
12 ================
13
14 *** SXEmacs Devel Mailing List <sxemacs-devel@sxemacs.org>
15 ----------------------------------------------------------
16
17 If you are not subscribed to the SXEmacs Devel list you should be.
18 Currently all discussion of development issues, including bug reports
19 and coding discussion, takes place on the SXEmacs Devel mailing list.
20 Only patches and administrative actions regarding patches are sent
21 elsewhere (to the SXEmacs Patches list).
22
23 *** SXEmacs Patches Mailing List <sxemacs-patches@sxemacs.org>
24 --------------------------------------------------------------
25
26 SXEmacs Patches records proposed changes to SXEmacs, and their
27 disposition.  It is open subscription, and all patches that are
28 seriously proposed for inclusion in SXEmacs should be posted here.  You
29 can follow progress of your patch by subscribing to the mailing list
30 or in the archives.  You will be notified of the outcome of your
31 patch, whether it will be merged into the main code base or rejected.
32 If the latter, an explanation will be given also.
33
34 *** SXEmacs Builds Mailing List <sxemacs-builds@sxemacs.org>
35 ------------------------------------------------------------
36
37 The SXEmacs Builds list is where build reports (M-x build-rpt) are
38 sent.  Discussion, although not banned, is encouraged to occur on the
39 devel list.
40
41 *** List Administrivia
42 ----------------------
43
44 In the descriptions below, the word LIST (all uppercase) is a
45 variable.  Substitute "devel", "patches", or "builds" as appropriate.
46
47 The SXEmacs mailing lists are managed by the Mailman mailing list
48 package, and the usual Mailman commands work.  Do not send mailing
49 list requests to the main address (<sxemacs-LIST@sxemacs.org>), always
50 send them to <sxemacs-LIST-request@sxemacs.org>.  If you have problems
51 with the list itself, they should be brought to the attention of the
52 SXEmacs Mailing List Owner <sxemacs-LIST-owner@sxemacs.org>.  All
53 public mailing lists are archived.  The URL is
54
55              http://www.sxemacs.org/list-archives/html/sxemacs-LIST
56
57 Note that the sxemacs-LIST-admin address is used internally by the
58 Mailman software; it is NOT a synonym for sxemacs-LIST-request.
59
60 *** Managing your subscription via the Web
61 ------------------------------------------
62
63 Subscription, unsubscription, and options (such as digests and
64 temporarily suspending delivery) can be accomplished via the web
65 interface at <http://www.sxemacs.org/mailman/listinfo/sxemacs-LIST>.
66
67 *** Subscribing by e-mail
68 -------------------------
69
70 Send an email message to <sxemacs-LIST-request@sxemacs.org> with
71 `subscribe' (without the quotes) as the BODY of the message.
72
73 *** Unsubscribing by e-mail
74 ---------------------------
75
76 Send an email message to <sxemacs-LIST-request@sxemacs.org> with
77 `unsubscribe' (without the quotes) as the BODY of the message.
78
79 ** Beta Release Schedule
80 ========================
81
82 To be done.
83
84 ** Reporting Problems
85 =====================
86
87 The best way to get problems fixed in SXEmacs is to submit good problem
88 reports, 'M-x report-sxemacs-bug RET' will help you do this (assuming
89 you have a usable SXEmacs).  Since this is beta software, problems are
90 certain to exist.  Please read through all of part II of the SXEmacs
91 FAQ for an overview of problem reporting.  Other items which are most
92 important are:
93
94 1.  Do not submit C stack backtraces without line numbers.  Since it
95     is possible to compile optimized with debug information with GCC
96     it is never a good idea to compile SXEmacs without the -g flag.
97     SXEmacs runs on a variety of platforms, and often it is not
98     possible to recreate problems which afflict a specific platform.
99     The line numbers in the C stack backtrace help isolate where the
100     problem is actually occurring.
101  
102 2.  Attempt to recreate the problem starting with an invocation of
103     SXEmacs with `sxemacs -no-autoloads'.  Quite often, problems are
104     due to package interdependencies, and the like.  An actual bug
105     in SXEmacs should be reproducible in a default configuration
106     without loading any special packages (or the one or two specific
107     packages that cause the bug to appear).  If you have trouble
108     getting anything to work at all with the above invocation, use
109     `sxemacs -vanilla' instead.  If you need to load your user init
110     file or the site file to get the problem to occur, then it has
111     something to do with them, and you should try to isolate the
112     issue in those files.
113
114 3.  A picture can be worth a thousand words.  When reporting an unusual
115     display, it is generally best to capture the problem in a screen
116     dump and include that with the problem report.  The easiest way to
117     get a screen dump is to use the xv program and its grab function.
118     MIME is the preferred method for making the image attachments.
119
120 ** Getting the Source
121 =====================
122
123 See the file DISTRIB in this directory.  Or, inside SXEmacs, do `C-h
124 C-d'. 
125
126 * Compiling Beta SXEmacs
127 ========================
128
129 SXEmacs can be built inside or outside the source tree.  The thing to
130 remember if you are building outside the source tree is that if
131 configure is further away than ../ you'll have to use the
132 `--srcdir=DIR' option.
133
134 Some of the maintainers build in a subdirectory of the top level
135 source tree.  Usually naming their build directory something like
136 `=build'.  The `=' prefix will allow the directory to not get in the
137 way of the version control system (GNU/arch (tla)).
138
139 cd to the top level of your build tree and run the autogen.sh script
140 found in the top level source tree:
141
142   ../autogen.sh
143
144 This will generate, among other things, the Makefile.in files and the
145 configure script. (note that you can omit this step if you are
146 building from a tarball release)
147
148
149 Next, issue an appropriate configure command.  One developer uses the
150 following at the time of this writing:
151
152   ../configure \
153         --prefix=/usr                    \
154         --with-ent=all                   \
155         --with-ase=all                   \
156         --with-scrollbars=athena         \
157         --with-openssl                   \
158         --with-clash-detection           \
159         --with-pop                       \
160         --without-gpm                    \
161         --with-experimental-features=all \
162         CFLAGS='-ggdb3 -O3 -march=athlon-xp -mtune=athlon-xp'
163
164
165 Part of the configure output is a summary that looks something
166 like the following.  (this summary is also available as the file
167 'Installation' in the top directory of your build tree, and via
168 the command 'M-x describe-installation RET').
169
170 uname -a: Linux bastard 2.6.26-rc1-00279-g28a4acb #10 PREEMPT Fri May 9 13:44:13 EST 2008 i686 AuthenticAMD AMD Athlon(TM) XP 2600+ GNU/Linux
171
172 ../configure  '--prefix=/usr' '--with-ent=all' '--with-ase=all' '--with-scrollbars=athena' '--with-openssl' '--with-clash-detection' '--with-pop' '--without-gpm' '--with-experimental-features=all' 'CFLAGS=-ggdb3 -O3 -march=athlon-xp -mtune=athlon-xp' --enable-ltdl-install=no
173
174
175 SXEmacs steve@sxemacs.org--2008/sxemacs--main--22.1.9--patch-141 "Edsel" configured for `athlon-pc-linux-gnu'.
176
177
178 Compilation Environment and Installation Defaults:
179   Source code location:              /usr/src/sxemacs/sxemacs--main--22.1.9
180   Installation prefix:               /usr
181   Arch-dependent files go to:        /usr/lib/sxemacs-22.1.9/athlon-pc-linux-gnu
182   Core emodules go to:               /usr/lib/sxemacs-22.1.9/athlon-pc-linux-gnu/modules
183   Core lisp files go to:             /usr/share/sxemacs-22.1.9/lisp
184   Additional external data goes to:  /usr/share/sxemacs-22.1.9/etc
185   Operating system description file: `s/linux.h'
186   Not using any machine description file
187   Compiler version:                  gcc (Bastard Compiler Collection) 4.4.0 20080511 (experimental)
188     - GCC specs file:                specs.
189     - Compiler command:              gcc -std=gnu99 -fgnu89-inline -ggdb3 -O3 -march=athlon-xp -mtune=athlon-xp
190     - Global CPPFLAGS:                 -I/usr/include
191     - Global LDFLAGS:                 -Wl,--export-dynamic  -L/usr/lib -lbind
192   libc version:                      2.7.90...
193   Relocating allocator for buffers:  yes
194   GNU version of malloc:             yes
195     - Using Doug Lea's new malloc from the Linux C Library.
196
197 Build Options:
198   Runtime behaviour:
199     - Value of $prefix is compiled into the binary.
200
201     - Module search path:
202        /usr/src/sxemacs/.sxemacs/athlon-pc-linux-gnu/modules
203        /usr/lib/sxemacs/athlon-pc-linux-gnu/site-modules
204        /usr/lib/sxemacs-22.1.9/athlon-pc-linux-gnu/modules
205
206     - Package search path:
207        ~/.sxemacs/site-packages
208        ~/.sxemacs/xemacs-packages
209        ~/.sxemacs/mule-packages
210        ~/.sxemacs/sxemacs-packages
211        
212        /usr/share/sxemacs/site-packages
213        /usr/share/sxemacs/xemacs-packages
214        /usr/share/sxemacs/mule-packages
215        /usr/share/sxemacs/sxemacs-packages
216
217 Debugging options:
218   Runtime Error Checking:
219     Enabled Runtime Error Checking:  extents types gc malloc byte_code bufpos glyphs
220       - extents (checks on extents)
221       - types (checks on types)
222       - gc (checks on garbage collection)
223       - malloc (checks on memory allocation)
224       - byte_code (checks on byte compiled code)
225       - bufpos (checks on buffer position)
226       - glyphs (checks on glyph data)
227     Disabled Runtime Error Checking: None.
228     WARNING: ---------------------------------------------------------
229     WARNING: SXEmacs will run noticeably more slowly as a result.
230     WARNING: Error checking is on by default for SXEmacs beta releases.
231     WARNING: ---------------------------------------------------------
232
233 Internals:
234   How to link external libraries:  dynamic
235   Foreign Function Interface:
236     Compiling in support for FFI.
237   Enhanced Number Types:
238     Enabled Enhanced Number Types:  int fpfloat indef gmp mpfr mpc pseug quatern ecm
239       - int (native integer arithmetics)
240       - fpfloat (native fixed precision floats)
241       - indef (native abstract indefinites)
242       + mpz (Arbitrary precision integers)
243         (X) GMP (GNU multiprecision library)
244       - MPFR (Multiprecision Floats with correct Rounding)
245       + complex (Complex numbers as in C/R)
246         (X) MPC (Multiprecision Complex numbers (C/R))
247         ( ) pseudoC (native Complex Numbers (C/R)) available but omitted
248       - pseudoG (native Gaussian Numbers (Z+Z))
249       - Quaternions (native Quaternions (Z+Z+Z+Z))
250       - ECM (factorisations per Elliptic Curve Method)
251     Omitted Enhanced Number Types:  pseuc
252     Disabled Enhanced Number Types: None.
253   Experimental Features:
254     Enabled Experimental Features:  bdwgc compre asyneq
255       - bdwgc (the Boehm-Demers-Weiser collector)
256       - compre (exhaustive caching of compiled regexps)
257       - asyneq (asynchronous event queues)
258     Disabled Experimental Features: None.
259
260 Window System:
261   Compiling in support for the X window system:
262     - X Windows headers location:                 /usr/X11/include
263     - X Windows libraries location:               /usr/X11/lib
264     - Xau (X authority) not available.
265     - Handling WM_COMMAND properly.
266   Compiling in support for the Athena widget set:
267     - Athena headers location:                    X11/neXtaw
268     - Athena library to link:                     neXtaw
269   Using Lucid menubars.
270   Using Athena scrollbars.
271   Using Athena dialog boxes.
272   Using Athena native widgets.
273   Support for toolbars.
274
275 TTY:
276   Compiling in support for ncurses.
277
278 Databases:
279   File-based Databases:
280     Enabled File-based Databases:  berkdb gdbm
281       - berkdb (Berkeley DB support)
282       - gdbm (GNU DBM support)
283     Disabled File-based Databases:  dbm*
284   Compiling in support for further database interfaces:
285     - PostgreSQL (V7 bindings).
286
287 Media:
288   Image Formats:
289     Enabled Image Formats:  gif xpm png jpeg tiff xface
290       - GIF (GIF image format)
291       - XPM (X PixMap image format)
292       - PNG (Portable Network Graphic format)
293       - JPEG (jpeg image format)
294       - TIFF (TIFF image format)
295       - xface (base64 encoded xbm)
296     Disabled Image Formats: None.
297   Audio Outputs:
298     Enabled Audio Outputs:  alsa ao oss pulse
299       - ALSA (kernel-based linux sound standard)
300       - ao (generic audio output layer)
301       - OSS (Open Sound System)
302       - PulseAudio (versatile audio server)
303     Disabled Audio Outputs:  arts* esd* jack* nas*
304   Media Stream Handlers:
305     Enabled Media Stream Handlers:  ffmpeg internal mad sndfile sox magic
306       - FFmpeg (media streams handled by ffmpeg)
307       - internal (media streams handled internally)
308       - Mad (media streams handled by mad)
309       - sndfile (media streams handled by sndfile)
310       - SoX (media streams handled by sox)
311       - magic (file/libmagic support)
312     Disabled Media Stream Handlers: None.
313
314 Cryptography:
315   Compiling in support for OpenSSL ciphers and digests.
316     - Submodules: RAND MD HMAC CIPHER HYBRID SIGN RSA DSA EC DH PEM SSL
317
318 Internationalization:
319   Compiling in support for Mule (multi-lingual Emacs).
320   Compiling in support for XIM (X11R5+ I18N input method).
321     - Using raw Xlib to provide XIM support.
322
323 Mail:
324   Compiling in support for POP mail retrieval.
325   Compiling in support for "file" mail spool file locking method.
326
327 Modules:
328   Dynamic Shared Object Modules:
329     Enabled Dynamic Shared Object Modules:  ase cl
330       - ase (algebraic structures)
331       - cl (fast Common Lisp implementation)
332     Disabled Dynamic Shared Object Modules: None.
333   Static Modules:
334     Enabled Static Modules: None.
335     Disabled Static Modules:  ase cl
336
337 Other Features:
338   Inhibiting IPv6 canonicalization at startup.
339   Using the new portable dumper.
340   Compiling in support for extra debugging code.
341
342 Footnotes:
343   + means not requested but enabled
344   * means requested but disabled
345
346 No bogus options. Have a nice build :)
347
348
349
350 Then...
351
352 $ make build-report
353
354 ...and you should have a working SXEmacs.  You may install via the
355 normal `make install'.
356
357 Note to distro packagers:  This release of SXEmacs supports the
358 DESTDIR Makefile variable for installing to a packaging tmp root.
359
360 After you have verified that you have a functional editor, fire up
361 your favorite mail program and send a build report to
362 <sxemacs-builds@sxemacs.org>.
363
364 Preferably this is best done from SXEmacs, following these simple steps:
365
366 M-x customize-group RET build-rpt RET
367 M-x build-rpt RET
368
369
370 * Packages
371 ==========
372
373 [Note: these instructions have been partly updated, but not carefully
374 reviewed in some time.  Caveat tester.]
375
376 Starting with XEmacs 21.1, much of the functionality of XEmacs has
377 been unbundled into "the packages."  For more information about the
378 package system, see the Info nodes on Packages (in the XEmacs User
379 Manual) and on Packaging (in the Lisp Reference).
380
381 When bootstrapping SXEmacs, you may need to manually install some
382 packages (at least sxemacs-base and efs).  These packages are available
383 by FTP at <ftp://ftp.xemacs.org/pub/xemacs/packages/>.
384
385 That last paragraph only applies if you do _NOT_ have FFI enabled in
386 your SXEmacs, or you don't have libcurl.so installed on your system.
387
388 ** Binary package installation
389 ==============================
390
391 Prerequisite:  XEmacs 21.0-b1.
392
393 Binary packages are complete entities that can be untarred at the top
394 level of an XEmacs package hierarchy and work at runtime.  To install files
395 in this directory, run the command `M-x package-admin-add-binary-package'
396 and fill in appropriate values to the prompts.
397
398 Hmm, that's a bit, erm, old fashioned.  Sane people will simply select
399 a package mirror site and use PUI...
400
401 From the menus:
402
403   Tools->Packages->Set Download Site-><pick>
404
405 Then just... M-x pui-list-packages
406
407 Or if you do not have any packages installed yet, M-x pui-bootstrap
408
409 ** Building SXEmacs and XEmacs packages from scratch
410 ====================================================
411
412 To build everything completely from scratch isn't hard, just time
413 consuming. 
414
415 *** Step 1 - grab the sources (core and packages)
416
417 $ cvs -d :pserver:cvs@cvs.xemacs.org:/pack/xemacscvs login
418  [password: "cvs" (sans quotes)]
419
420 $ cvs -d :pserver:cvs@cvs.xemacs.org:/pack/xemacscvs co packages
421
422 That gets you all the XEmacs packages.
423
424 $ tla register-archive http://arch.sxemacs.org/2008
425
426 $ tla get steve@sxemacs.org--2006/sxemacs--main--22.1.9 sxemacs
427
428 That puts a copy of the latest SXEmacs sources into $PWD/sxemacs/
429
430 *** Step 2 - build SXEmacs
431
432 $ cd sxemacs
433 $ ./autogen.sh  (not necessary for tarball releases)
434 $ ./configure [options...]
435 $ make
436
437 (use `make build-report' if you are planning to send in a build report
438 via `M-x build-rpt')
439
440 And optionally:
441
442 $ make install 2>&1 | tee ,,make-install.out
443
444
445 *** Step 3 - build and install the packages
446
447 $ cd packages
448 $ cp Local.rules.template Local.rules
449
450 Then edit Local.rules to suit your needs/environment
451 see: (Info-goto-node "(sxemacs)Local.rules file") for details about
452 this file.
453
454 You'll most likely want to make the following changes to Local.rules:
455
456   XEMACS_BINARY = sxemacs
457   XEMACS_INSTALLED_PACKAGES_ROOT = /usr/local/share/sxemacs
458   BATCH = $(VANILLA) -batch -eval '(setq stack-trace-on-error t)' -l build-rpt
459
460 And then:
461
462 $ make install
463
464 * Improving SXEmacs
465 ===================
466
467 ** Creating patches for submission
468 ==================================
469
470 First, go read...
471
472   (Info-goto-node "(sppm)Patches")
473
474 All patches to SXEmacs that are seriously proposed for inclusion (eg,
475 bug fixes) should be mailed to <sxemacs-patches@sxemacs.org>.  Each
476 patch will be reviewed by the SXEmacs team, and will be acknowledged and
477 added to the distribution, or rejected with an explanation.  Progress of
478 the patch is tracked on the SXEmacs Patches mailing list, which is open
479 subscription.  If a patch is simply intended to facilitate discussion,
480 send it to the SXEmacs Devel <sxemacs-devel@sxemacs.org> list instead, a
481 Cc to SXEmacs Patches is optional, but doesn't hurt.
482
483 The best way to go about getting your patches included into the
484 SXEmacs code base is to create your own GNU/arch branch of SXEmacs and
485 send your commit logs/merge requests to sxemacs-patches@sxemacs.org.
486 This can easily be set up via tla hooks.
487
488 The rest of this section applies to the XEmacs packages.
489
490 Patches to XEmacs Lisp packages should be sent to the maintainer of
491 the package.  If the maintainer is listed as `XEmacs Development Team'
492 patches should be sent to <xemacs-patches@xemacs.org>.
493
494 The command...
495
496   C-u M-x package-get-info RET PKG_NAME RET maintainer RET
497
498 ...will put the PKG_NAME's package maintainer's name and email address
499 at point in the current buffer.
500
501 Emailed patches should preferably be sent in MIME format and quoted
502 printable encoding (if necessary).
503
504 The simplest way to create well-formed patches is to use CVS and
505 Didier Verna's Patcher library (available as patcher.el in the
506 xemacs-devel package).  Patcher is new and requires some setup, but
507 most of the core developers are now using it for their own patches.
508 Patcher also can be configured to create patches for several projects,
509 and recognize the project from the directory it is invoked in.  This
510 makes it a useful general tool (as long as XEmacs-style patches are
511 accepted at your other projects, which is likely since they conform to
512 the GNU standards).
513
514 When making patches by hand, please use the `-u' option.  Using
515 ordinary (context-free) diffs are notoriously prone to error, since
516 line numbers tend to change when others make changes to the same
517 source file.
518
519 An example of the `diff' usage:
520
521 $ diff -u OLDFILE NEWFILE
522
523 Each patch should be accompanied by an update to the appropriate
524 ChangeLog file.  Guidelines for writing ChangeLog entries is governed
525 by the GNU coding standards.  Please see
526 <http://www.gnu.org/prep/standards_toc.html>   [Change Logs section]
527 for details.
528
529 Do not submit context diffs (either -c or -u) of ChangeLogs.  Because
530 of the "stack" nature of ChangeLogs (new entries are always pushed on
531 the top), context diffs will fail to apply more often than they
532 succeed.  Simply cutting and pasting the entry from an Emacs buffer to
533 the mail buffer (beware of tab expansion!) is probably easiest.  The
534 Patcher library also will set up your ChangeLogs for you, and copy
535 them to the mail.  Context-less unified diffs (-U 0) are also
536 acceptable.
537
538 *** Patch discussion etiquette
539 -------------------------------
540
541 If you intend a patch for _application_ to the sources as is, _always_
542 post it to sxemacs-patches, even if there are minor points you would
543 like to have discussed by others.  Not doing so will resulting in
544 patches getting "lost".  If you expect that the patch will not be
545 acceptable, but are using it to stimulate discussion, then don't post
546 to sxemacs-patches.  Intermediate cases are up to your judgment;
547 unless you're sure you'll follow up with a "real" patch, better to err
548 on the side of posting to sxemacs-patches.
549
550 ** Large contributions
551 ======================
552
553 Perhaps you have a whole new mode, or a major synchronization with
554 upstream for a neglected package, or a synchronization with GNU Emacs
555 you would like to contribute.  We welcome such contributions, but they
556 are likely to be relatively controversial, generate more comments and
557 requests for revision, and take longer to integrate.  Please be
558 patient with the process.
559
560 *** Syncing with GNU Emacs and/or XEmacs
561 ----------------------------------------
562
563 Syncing with GNU Emacs and XEmacs is an important activity.  Although
564 each version has its advantages and areas of concentration, it is very
565 desirable that common functionality share specifications and APIs.
566 When porting GNU code to SXEmacs, the following points should be given
567 special attention:
568
569   o Recent GNU Emacsen cannot be built without Mule, but SXEmacs can.
570     Make sure your changes do not assume the presence of Mule.
571
572   o GNU Emacs nomenclature often differs from that of SXEmacs.
573     Sometimes syncing the names is desirable, other times not.
574
575   o GNU Emacs functionality often differs from that of SXEmacs.
576     Syncing functionality is often controversial.
577
578 It is important that you let other developers know that
579 synchronization has taken place, to what degree, and when.  For this
580 purpose, we use comments of the form
581
582 /* Synched up with: FSF 21.3 by Steve Youngs */
583
584 /* Synched up with: XEmacs 21.4.15 by Steve Youngs */
585
586 in the source file itself, as the last element of the prefatory
587 material (copyright notice and commentary).  Obviously the comment
588 marker needs to be changed to leading semicolons for Lisp, but
589 otherwise the format is the same.
590
591 Rather than dates we use the version of GNU Emacs to sync to.  If the
592 synchronization is partial, add a new comment describing what has
593 actually been synched, leaving the description of the last full sync
594 in place.  At each full sync, remove all previous synchronization
595 comments.
596
597 This applies to Lisp that we have broken out into packages, but
598 remains in the GNU Emacs core, as well to core Lisp in XEmacs.