* readline.scm: Moved from ../ice-9.
[bpt/guile.git] / HACKING
diff --git a/HACKING b/HACKING
index 3d84f3e..2c6144e 100644 (file)
--- a/HACKING
+++ b/HACKING
@@ -1,16 +1,34 @@
 Here are some guidelines for members of the Guile developers team.
 
+Contributing Your Changes ============================================
+
+- If you have put together a change that meets the coding standards
+described below, we encourage you to submit it to Guile.  The best
+place to post it is guile@sourceware.cygnus.com.  Please don't send it
+directly to me; I often don't have time to look things over.  If you
+have tested your change, then you don't need to be shy.
+
+- Please submit patches using either context or unified diffs (diff -c
+or diff -u).  Don't include a patch for ChangeLog; such patches don't
+apply cleanly, since we've probably changed the top of ChangeLog too.
+Instead, provide the unaltered text at the top of your patch.
+
+Please don't include patches for generated files like configure,
+aclocal.m4, or any Makefile.in.  Such patches are often large, and
+we're just going to regenerate those files anyway.
+
+
 CVS conventions ======================================================
 
 - We use CVS to manage the Guile sources.  The repository lives on
-egcs.cygnus.com, in /egcs/carton/guile-home/cvsfiles; you will need an
+egcs.cygnus.com, in /cvs/guile; you will need an
 account on that machine to access the repository.  Also, for security
 reasons, egcs presently only supports CVS connections via the SSH
 protocol, so you must first install the SSH client.  Then, you should
 set your CVS_RSH environment variable to ssh, and use the following as
 your CVS root:
 
-       :ext:USER@egcs.cygnus.com:/egcs/carton/guile-home/cvsfiles
+       :ext:USER@egcs.cygnus.com:/cvs/guile
 
 Either set your CVSROOT environment variable to that, or give it as
 the value of the global -d option to CVS when you check out a working
@@ -23,15 +41,15 @@ The Guile sources live in several modules:
   - guile-core --- the interpreter, QuickThreads, and ice-9
   - guile-doc --- documentation in progress.  When complete, this will
        be incorporated into guile-core.
+  - guile-oops --- The Guile Object-Oriented Programming System (talk to mdj)
   - guile-tcltk --- the Guile/Tk interface
   - guile-tk --- the new Guile/Tk interface, based on STk's modified Tk
   - guile-rgx-ctax --- the Guile/Rx interface, and the ctax implementation
   - guile-scsh --- the port of SCSH to guile, talk to Gary Houston
-  - guile-comp --- the Hobbit compiler (talk to mdj)
-  - guile-emacs --- Guile/Emacs interface (talk to mdj)
-  - guile-oops --- The Guile Object-Oriented Programming System (talk to mdj)
   - guile-www --- A Guile module for making HTTP requests.
 
+There is a mailing list for CVS commit messages; see README for details.
+
 - We check Makefile.in and configure files into CVS, as well as the
 files they are built from (Makefile.am, configure.in); we do not check
 in Makefiles or header files generated by configuration scripts.  The
@@ -73,6 +91,19 @@ compiler.  This means that people using more stringent compilers will
 have more work to do, and assures that everyone won't switch to the
 most lenient compiler they can find.  :)
 
+Note also that EGCS (as of November 3 1998) doesn't handle the
+`noreturn' attribute properly, so it doesn't understand that functions
+like scm_error won't return.  This may lead to some silly warnings
+about uninitialized variables.  You should look into these warnings to
+make sure they are indeed spurious, but you needn't correct warnings
+caused by this EGCS bug.
+
+- If you add code which uses functions or other features that are not
+entirely portable, please make sure the rest of Guile will still
+function properly on systems where they are missing.  This usually
+entails adding a test to configure.in, and then adding #ifdefs to your
+code to disable it if the system's features are missing.
+
 - When you make a user-visible change (i.e. one that should be
 documented, and appear in NEWS, put an asterisk in column zero of the
 start of the ChangeLog entry, like so:
@@ -92,7 +123,9 @@ Scheme under the functions' Scheme names.  Please don't do this:
        * procs.c, procs.h (procedure-documentation): Moved from eval.c.
 
 Entries like this make it harder to search the ChangeLogs, because you
-can never tell which name the entry will refer to.
+can never tell which name the entry will refer to.  Instead, write this:
+
+       * procs.c, procs.h (scm_procedure_documentation): Moved from eval.c.
 
 Changes like adding this line are special: