Commit | Line | Data |
---|---|---|
23bcd7ad | 1 | Here are some guidelines for members of the Guile developers team. |
795b4217 | 2 | |
eb4194d6 | 3 | - We use CVS to manage the Guile sources. The repository lives on |
23bcd7ad | 4 | egcs.cygnus.com, in /egcs/carton/cvsfiles; you will need an account on |
848f2a01 | 5 | that machine to access the repository. Also, for security reasons, |
23bcd7ad JB |
6 | egcs presently only supports CVS connections via the SSH protocol, so |
7 | you must first install the SSH client. Then, you should set your | |
848f2a01 TP |
8 | CVS_RSH environment variable to ssh, and use the following as your CVS |
9 | root: | |
eb4194d6 | 10 | |
23bcd7ad | 11 | :ext:USER@egcs.cygnus.com:/egcs/carton/cvsfiles |
eb4194d6 JB |
12 | |
13 | Either set your CVSROOT environment variable to that, or give it as | |
14 | the value of the global -d option to CVS when you check out a working | |
15 | directory. | |
16 | ||
848f2a01 | 17 | For more information on SSH, see http://www.cs.hut.fi/ssh. |
eb4194d6 JB |
18 | |
19 | The Guile sources live in several modules: | |
20 | ||
21 | - guile-core --- the interpreter, QuickThreads, and ice-9 | |
e19268af JB |
22 | - guile-doc --- documentation in progress. When complete, this will |
23 | be incorporated into guile-core. | |
eb4194d6 | 24 | - guile-tcltk --- the Guile/Tk interface |
b1f4ddc1 | 25 | - guile-tk --- the new Guile/Tk interface, based on STk's modified Tk |
eb4194d6 JB |
26 | - guile-rgx-ctax --- the Guile/Rx interface, and the ctax implementation |
27 | - guile-scsh --- the port of SCSH to guile, talk to Gary Houston | |
b1f4ddc1 JB |
28 | - guile-comp --- the Hobbit compiler (talk to mdj) |
29 | - guile-emacs --- Guile/Emacs interface (talk to mdj) | |
30 | - guile-oops --- The Guile Object-Oriented Programming System (talk to mdj) | |
31 | - guile-www --- A Guile module for making HTTP requests. | |
eb4194d6 | 32 | |
795b4217 JB |
33 | - As for any part of Project GNU, changes to Guile should follow the |
34 | GNU coding standards. The standards are available via anonymous FTP | |
80b4c4fc JB |
35 | from prep.ai.mit.edu, as /pub/gnu/standards/standards.texi and |
36 | make-stds.texi. | |
795b4217 | 37 | |
350294b1 JB |
38 | - Check Makefile.in and configure files into CVS, as well as any files |
39 | used to create them (Makefile.am, configure.in); don't check in | |
40 | Makefiles or header files generated by configuration scripts. The | |
41 | general rule is that you should be able to check out a working | |
42 | directory of Guile from CVS, and then type "configure" and "make". | |
43 | ||
795b4217 JB |
44 | - Make sure your changes compile and work, at least on your own |
45 | machine, before checking them into the main branch of the Guile | |
46 | repository. If you really need to check in untested changes, make a | |
47 | branch. | |
48 | ||
49 | - When you make a user-visible change (i.e. one that should be | |
50 | documented, and appear in NEWS, put an asterisk in column zero of the | |
51 | start of the ChangeLog entry, like so: | |
52 | ||
53 | Sat Aug 3 01:27:14 1996 Gary Houston <ghouston@actrix.gen.nz> | |
54 | ||
55 | * * fports.c (scm_open_file): don't return #f, throw error. | |
56 | ||
fa3f45cc JB |
57 | When you've written a NEWS entry and updated the documentation, go |
58 | ahead and remove the asterisk. I will use the asterisks to find and | |
59 | document changes that haven't been dealt with before a release. | |
60 | ||
795b4217 JB |
61 | - Include each log entry in both the ChangeLog and in the CVS logs. |
62 | If you're using Emacs, the pcl-cvs interface to CVS has features to | |
63 | make this easier; it checks the ChangeLog, and generates good default | |
64 | CVS log entries from that. | |
65 | ||
30d14d55 JB |
66 | - There's no need to keep a change log for documentation files. This |
67 | is because documentation is not susceptible to bugs that are hard to | |
68 | fix. Documentation does not consist of parts that must interact in a | |
69 | precisely engineered fashion; to correct an error, you need not know | |
70 | the history of the erroneous passage. (This is copied from the GNU | |
71 | coding standards.) | |
72 | ||
733943b9 TT |
73 | - If you add or remove files, don't forget to update the appropriate |
74 | part of the relevant Makefile.am files, and regenerate the | |
75 | Makefile.in. If you forget this, the snapshot and distribution | |
76 | processes will not work. | |
795b4217 JB |
77 | |
78 | - Make sure you have papers from people before integrating their | |
79 | changes or contributions. This is very frustrating, but very | |
80 | important to do right. From maintain.texi, "Information for | |
81 | Maintainers of GNU Software": | |
82 | ||
83 | When incorporating changes from other people, make sure to follow the | |
84 | correct procedures. Doing this ensures that the FSF has the legal | |
85 | right to distribute and defend GNU software. | |
86 | ||
87 | For the sake of registering the copyright on later versions ofthe | |
88 | software you need to keep track of each person who makes significant | |
89 | changes. A change of ten lines or so, or a few such changes, in a | |
90 | large program is not significant. | |
91 | ||
92 | *Before* incorporating significant changes, make sure that the person | |
93 | has signed copyright papers, and that the Free Software Foundation has | |
94 | received them. | |
95 | ||
96 | If you receive contributions you want to use from someone, let me know | |
97 | and I'll take care of the administrivia. Put the contributions aside | |
98 | until we have the necessary papers. | |
99 | ||
fa3f45cc JB |
100 | - When you make substantial changes to a file, add the current year to |
101 | the list of years in the copyright notice at the top of the file. | |
795b4217 | 102 | |
f84f77f5 JB |
103 | - [From Mikael Djurfeldt] When working on the Guile internals, it is |
104 | quite often practical to implement a scheme-level procedure which | |
105 | helps you examine the feature you're working on. | |
106 | ||
107 | Examples of such procedures are: pt-size, debug-hand and | |
108 | current-pstate. | |
109 | ||
110 | I've now put #ifdef GUILE_DEBUG around all such procedures, so that | |
111 | they are not compiled into the "normal" Guile library. Please do the | |
112 | same when you add new procedures/C functions for debugging purpose. | |
113 | ||
114 | You can define the GUILE_DEBUG flag by passing --enable-guile-debug to | |
115 | the configure script. | |
116 | ||
795b4217 JB |
117 | |
118 | Jim Blandy |