aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Leake2014-12-23 13:11:45 -0600
committerStephen Leake2014-12-23 13:11:45 -0600
commitfcb978e24023e9af4e465ac98222543990c70ffc (patch)
treeb71306f0aea7235715da76f88a9cb92608bddeca
parent061f310c4a32491634b7563f4b8520f4824ed21b (diff)
downloademacs-fcb978e24023e9af4e465ac98222543990c70ffc.tar.gz
emacs-fcb978e24023e9af4e465ac98222543990c70ffc.zip
Move user-level information from CONTRIBUTE to doc/emacs/trouble.texi
Fixes bug#19299 * CONTRIBUTE: Move user-level information to doc/emacs/trouble.texi (commit messages): new, gathered from comments on emacs-devel (Changelog notes): add reference to GNU coding standards section 5.2; doc 'present tense', bug fix format (branches): freeze announcements are made on info-gnu-emacs mailing list (git vs rename): new * doc/emacs/trouble.texi: Move user-level information from CONTRIBUTE here * lisp/startup.el (fancy-about-text): change buttons for etc/CONTRIBUTE to (info "(emacs)Contributing")
-rw-r--r--CONTRIBUTE267
-rw-r--r--ChangeLog19
-rw-r--r--doc/emacs/trouble.texi240
-rw-r--r--lisp/startup.el8
4 files changed, 317 insertions, 217 deletions
diff --git a/CONTRIBUTE b/CONTRIBUTE
index dc6fd71624a..a190bd982fc 100644
--- a/CONTRIBUTE
+++ b/CONTRIBUTE
@@ -1,196 +1,14 @@
1Copyright (C) 2006-2014 Free Software Foundation, Inc. 1This file contains information on Emacs developer processes.
2See end for license conditions.
3 2
3For information on contributing to Emacs as a non-developer, see
4(info "(emacs)Contributing") or
5http://www.gnu.org/software/emacs/manual/html_node/emacs/Contributing.html
4 6
5 Contributing to Emacs 7* Information for Emacs Developers.
6
7Emacs is a collaborative project and we encourage contributions from
8anyone and everyone. If you want to contribute in the way that will
9help us most, we recommend (1) fixing reported bugs and (2)
10implementing the feature ideas in etc/TODO. However, if you think of
11new features to add, please suggest them too -- we might like your
12idea. Porting to new platforms is also useful, when there is a new
13platform, but that is not common nowadays.
14
15For documentation on Emacs (to understand how to implement your
16desired change), refer to:
17
18- the Emacs Manual
19 http://www.gnu.org/software/emacs/manual/emacs.html
20 (info "(Emacs)Top")
21
22- the Emacs Lisp Reference Manual
23 http://www.gnu.org/software/emacs/manual/elisp.html
24 (info "(elisp)Top")
25
26- http://www.gnu.org/software/emacs
27
28- http://www.emacswiki.org/
29
30There are many ways to contribute to Emacs:
31
32- implement a new feature, and submit a patch (see "Submitting
33 Patches" below).
34
35- answer questions on the Emacs user mailing list
36 https://lists.gnu.org/mailman/listinfo/help-gnu-emacs
37
38- write documentation, either on the wiki, or in the Emacs source
39 repository (see "Submitting Patches" below)
40
41- find and report bugs; use M-x report-emacs-bug
42
43- check if existing bug reports are fixed in newer versions of Emacs
44 http://debbugs.gnu.org/cgi/pkgreport.cgi?which=pkg&data=emacs
45
46- develop a package that works with Emacs, and publish it on your own
47 or in Gnu ELPA (see admin/notes/elpa).
48
49Here are some style and legal conventions for contributors to Emacs:
50
51
52* Coding Standards
53
54Contributed code should follow the GNU Coding Standards
55(http://www.gnu.org/prep/standards/ - may also be available in info on
56your system).
57
58If it doesn't, we'll need to find someone to fix the code before we
59can use it.
60
61Emacs has additional style and coding conventions:
62
63- the "Tips" Appendix in the Emacs Lisp Reference
64 http://www.gnu.org/software/emacs/manual/html_node/elisp/Tips.html
65 (info "(elisp)Tips").
66
67- Avoid using `defadvice' or `eval-after-load' for Lisp code to be
68 included in Emacs.
69
70- Remove all trailing whitespace in all source and text files.
71
72- Emacs has no convention on whether to use tabs in source code;
73 please don't change whitespace in the files you edit.
74
75- Use ?\s instead of ? in Lisp code for a space character.
76
77* Copyright Assignment
78
79The FSF (Free Software Foundation) is the copyright holder for GNU Emacs.
80The FSF is a nonprofit with a worldwide mission to promote computer
81user freedom and to defend the rights of all free software users.
82For general information, see the website http://www.fsf.org/ .
83
84Generally speaking, for non-trivial contributions to GNU Emacs we
85require that the copyright be assigned to the FSF. For the reasons
86behind this, see: http://www.gnu.org/licenses/why-assign.html .
87
88Copyright assignment is a simple process. Residents of some countries
89can do it entirely electronically. We can help you get started, and
90answer any questions you may have (or point you to the people with the
91answers), at the emacs-devel@gnu.org mailing list.
92
93(Please note: general discussion about why some GNU projects ask
94for a copyright assignment is off-topic for emacs-devel.
95See gnu-misc-discuss instead.)
96
97A copyright disclaimer is also a possibility, but we prefer an assignment.
98Note that the disclaimer, like an assignment, involves you sending
99signed paperwork to the FSF (simply saying "this is in the public domain"
100is not enough). Also, a disclaimer cannot be applied to future work, it
101has to be repeated each time you want to send something new.
102
103We can accept small changes (roughly, fewer than 15 lines) without
104an assignment. This is a cumulative limit (e.g. three separate 5 line
105patches) over all your contributions.
106
107* Getting the Source Code
108
109The current working version of the Emacs source code is stored in a
110git repository on the Savannah web site
111(http://savannah.gnu.org/projects/emacs). It is important to write
112your patch based on the current working version. If you start from an
113older version, your patch may be outdated (so that maintainers will
114have a hard time applying it), or changes in Emacs may have made your
115patch unnecessary.
116
117After you have downloaded the repository source, you should read the file
118INSTALL.REPO for build instructions (they differ to some extent from a
119normal build).
120
121* Submitting Patches
122
123Every patch must have several pieces of information before we
124can properly evaluate it.
125
126When you have all these pieces, bundle them up in a mail message and
127send it to the developers. Sending it to bug-gnu-emacs@gnu.org
128(which is the bug/feature list) is recommended, because that list
129is coupled to a tracking system that makes it easier to locate patches.
130If your patch is not complete and you think it needs more discussion,
131you might want to send it to emacs-devel@gnu.org instead. If you
132revise your patch, send it as a followup to the initial topic.
133
134** Description
135
136For bug fixes, a description of the bug and how your patch fixes it.
137
138For new features, a description of the feature and your implementation.
139
140** ChangeLog
141
142A ChangeLog entry as plaintext (separate from the patch).
143
144See the existing ChangeLog files for format and content. Note that,
145unlike some other projects, we do require ChangeLogs for
146documentation, i.e. Texinfo files.
147
148Ref: "Change Log Concepts" node of the GNU Coding Standards Info
149Manual, for how to write good log entries.
150http://www.gnu.org/prep/standards/html_node/Change-Log-Concepts.html
151
152When using git, commit messages should use ChangeLog format, with a
153single short line explaining the change, then an empty line, then
154unindented ChangeLog entries. (Essentially, a commit message should
155be a duplicate of what the patch adds to the ChangeLog files. We are
156planning to automate this better, to avoid the duplication.) You can
157use the Emacs functions log-edit-add-to-changelog or
158log-edit-insert-changelog to ease this process.
159
160** The patch itself.
161
162If you are accessing the Emacs repository, make sure your copy is
163up-to-date (e.g. with 'git pull'). You can commit your changes
164to a private branch and generate a patch from the master version
165by using
166 git format-patch master
167Or you can leave your changes uncommitted and use
168 git diff
169With no repository, you can use
170 diff -u OLD NEW
171
172** Mail format.
173
174We prefer to get the patches as plain text, either inline (be careful
175your mail client does not change line breaks) or as MIME attachments.
176
177** Please reread your patch before submitting it.
178
179** Do not mix changes.
180
181If you send several unrelated changes together, we will ask you to
182separate them so we can consider each of the changes by itself.
183
184** Do not make formatting changes.
185
186Making cosmetic formatting changes (indentation, etc) makes it harder
187to see what you have really changed.
188
189
190* Supplemental information for Emacs Developers.
191 8
192An "Emacs Developer" is someone who contributes a lot of code or 9An "Emacs Developer" is someone who contributes a lot of code or
193documentation to the Emacs repository. 10documentation to the Emacs repository. Generally, they have write
11access to the Emacs git repository on Savannah.
194 12
195** Write access to the Emacs repository. 13** Write access to the Emacs repository.
196 14
@@ -213,6 +31,31 @@ entry in their name, not yours. git distinguishes between the author
213and the committer; use the --author option on the commit command to 31and the committer; use the --author option on the commit command to
214specify the actual author; the committer defaults to you. 32specify the actual author; the committer defaults to you.
215 33
34** commit messages
35
36When using git, commit messages should use ChangeLog format, with the
37following modifications:
38
39- Add a single short line explaining the change, then an empty line,
40 then unindented ChangeLog entries.
41
42 You can use various Emacs functions to ease this process; see (info
43 "(emacs)Change Log Commands") or
44 http://www.gnu.org/software/emacs/manual/html_node/emacs/Change-Log-Commands.html.
45
46- The summary line is limited to 72 characters (enforced by a commit
47 hook). If you have trouble making that a good summary, add a
48 paragraph below it, before the individual file descriptions.
49
50- If only a single file is changed, the summary line can be the normal
51 file first line (starting with the asterisk). Then there is no
52 individual files section.
53
54- Explaining the rationale for a design choice is best done in comments
55 in the source code. However, sometimes it is useful to describe just
56 the rationale for a change; that can be done in the commit message
57 between the summary line and the file entries.
58
216** Changelog notes 59** Changelog notes
217 60
218- Emacs generally follows the GNU coding standards when it comes to 61- Emacs generally follows the GNU coding standards when it comes to
@@ -222,11 +65,25 @@ specify the actual author; the committer defaults to you.
222 standards used to recommend) rather than 'like-this' (as they do 65 standards used to recommend) rather than 'like-this' (as they do
223 now), because `...' is so widely used elsewhere in Emacs. 66 now), because `...' is so widely used elsewhere in Emacs.
224 67
68- Some of the rules in the GNU coding standards section 5.2
69 "Commenting Your Work" also apply to Changelog entries: they must be
70 in English, and be complete sentences starting with a capital and
71 ending with a period (except the summary line should not end in a
72 period).
73
74 It is tempting to relax this rule for commit messages, since they
75 are somewhat transient. However, they are preserved indefinitely,
76 and have a reasonable chance of being read in the future, so it's
77 better that they have good presentation.
78
225- There are multiple ChangeLogs in the emacs source; roughly one per 79- There are multiple ChangeLogs in the emacs source; roughly one per
226 high-level directory. The ChangeLog entry for a commit belongs in the 80 high-level directory. The ChangeLog entry for a commit belongs in the
227 lowest ChangeLog that is higher than or at the same level as any file 81 lowest ChangeLog that is higher than or at the same level as any file
228 changed by the commit. 82 changed by the commit.
229 83
84- Use the present tense; describe "what the change does", not "what
85 the change did".
86
230- Preferred form for several entries with the same content: 87- Preferred form for several entries with the same content:
231 88
232 * help.el (view-lossage): 89 * help.el (view-lossage):
@@ -235,7 +92,13 @@ specify the actual author; the committer defaults to you.
235 92
236 (Rather than anything involving "ditto" and suchlike.) 93 (Rather than anything involving "ditto" and suchlike.)
237 94
238- In ChangeLog files, there is no standard or recommended way to 95- If the commit fixes a bug, add a separate line
96
97 Fixes: bug#NNNN
98
99 where NNNN is the bug number.
100
101- In ChangeLog entries, there is no standard or recommended way to
239 identify revisions. 102 identify revisions.
240 103
241 One way to identify revisions is by quoting their summary line. 104 One way to identify revisions is by quoting their summary line.
@@ -244,7 +107,7 @@ specify the actual author; the committer defaults to you.
244 "2014-01-16T05:43:35Z!esr@thyrsus.com". Often, "my previous commit" 107 "2014-01-16T05:43:35Z!esr@thyrsus.com". Often, "my previous commit"
245 will suffice. 108 will suffice.
246 109
247- There is no need to make separate change log entries for files such 110- There is no need to make separate ChangeLog entries for files such
248 as NEWS, MAINTAINERS, and FOR-RELEASE, or to indicate regeneration 111 as NEWS, MAINTAINERS, and FOR-RELEASE, or to indicate regeneration
249 of files such as 'configure'. "There is no need" means you don't 112 of files such as 'configure'. "There is no need" means you don't
250 have to, but you can if you want to. 113 have to, but you can if you want to.
@@ -266,9 +129,8 @@ emacs-devel mailing list, and not anywhere else.
266The trunk branch is named "master" in git; release branches are named 129The trunk branch is named "master" in git; release branches are named
267"emacs-nn" where "nn" is the major version. 130"emacs-nn" where "nn" is the major version.
268 131
269You must follow emacs-devel to know exactly what kinds of changes are 132Announcements about the freeze (and other important events) are made
270allowed on what branch at any time. Announcements about the freeze 133on the info-gnu-emacs mailing list.
271(and other important events) will contain "ANNOUNCE" in the subject.
272 134
273If you are fixing a bug that exists in the current release, be sure to 135If you are fixing a bug that exists in the current release, be sure to
274commit it to the release branch; it will be merged to the master 136commit it to the release branch; it will be merged to the master
@@ -287,6 +149,23 @@ then exclude that commit from the merge to trunk.
287See all the files in admin/notes/* . In particular, see 149See all the files in admin/notes/* . In particular, see
288admin/notes/newfile, see admin/notes/repo. 150admin/notes/newfile, see admin/notes/repo.
289 151
152*** git vs rename
153
154git does not explicitly represent a file renaming; it uses a percent
155changed heuristic to deduce that a file was renamed. So if you are
156planning to make extensive changes to a file after renaming it (or
157moving it to another directory), you should:
158
159- create a feature branch
160
161- commit the rename without any changes
162
163- make other changes
164
165- merge the feature branch to trunk, _not_ squashing the commits into
166 one. The commit message on this merge should summarize the renames
167 and all the changes.
168
290** Emacs Mailing lists. 169** Emacs Mailing lists.
291 170
292Discussion about Emacs development takes place on emacs-devel@gnu.org. 171Discussion about Emacs development takes place on emacs-devel@gnu.org.
diff --git a/ChangeLog b/ChangeLog
index 718a9588712..30fae4d4bf6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
12014-12-19 Stephen Leake <stephen_leake@stephe-leake.org>
2
3 Move user-level information from CONTRIBUTE to doc/emacs/trouble.texi
4
5 Fixes bug#19299
6
7 * CONTRIBUTE: Move user-level information to doc/emacs/trouble.texi
8 (commit messages): new, gathered from comments on emacs-devel
9 (Changelog notes): add reference to GNU coding standards section 5.2;
10 doc 'present tense', bug fix format
11 (branches): freeze announcements are made on info-gnu-emacs mailing
12 list
13 (git vs rename): new
14
15 * doc/emacs/trouble.texi: Move user-level information from CONTRIBUTE here
16
17 * lisp/startup.el (fancy-about-text): change buttons for etc/CONTRIBUTE
18 to (info "(emacs)Contributing")
19
12014-12-14 Paul Eggert <eggert@cs.ucla.edu> 202014-12-14 Paul Eggert <eggert@cs.ucla.edu>
2 21
3 Spelling fixes 22 Spelling fixes
diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi
index 5f3cf9223eb..bae9cad78bf 100644
--- a/doc/emacs/trouble.texi
+++ b/doc/emacs/trouble.texi
@@ -1060,19 +1060,44 @@ but using it will take extra work. Maintaining GNU Emacs is a lot of
1060work in the best of circumstances, and we can't keep up unless you do 1060work in the best of circumstances, and we can't keep up unless you do
1061your best to help. 1061your best to help.
1062 1062
1063Every patch must have several pieces of information before we
1064can properly evaluate it.
1065
1066When you have all these pieces, bundle them up in a mail message and
1067send it to the developers. Sending it to
1068@email{bug-gnu-emacs@@gnu.org} (which is the bug/feature list) is
1069recommended, because that list is coupled to a tracking system that
1070makes it easier to locate patches. If your patch is not complete and
1071you think it needs more discussion, you might want to send it to
1072@email{emacs-devel@@gnu@@gnu.org} instead. If you revise your patch,
1073send it as a followup to the initial topic.
1074
1075We prefer to get the patches as plain text, either inline (be careful
1076your mail client does not change line breaks) or as MIME attachments.
1077
1063@itemize @bullet 1078@itemize @bullet
1064@item 1079@item
1065Send an explanation with your changes of what problem they fix or what 1080Include an explanation with your changes of what problem they fix or what
1066improvement they bring about. For a fix for an existing bug, it is 1081improvement they bring about.
1082
1083@itemize
1084@item
1085For a fix for an existing bug, it is
1067best to reply to the relevant discussion on the @samp{bug-gnu-emacs} 1086best to reply to the relevant discussion on the @samp{bug-gnu-emacs}
1068list, or the bug entry in the GNU Bug Tracker at 1087list, or the bug entry in the GNU Bug Tracker at
1069@url{http://debbugs.gnu.org}. Explain why your change fixes the bug. 1088@url{http://debbugs.gnu.org}. Explain why your change fixes the bug.
1070 1089
1071@item 1090@item
1072Always include a proper bug report for the problem you think you have 1091For a new feature, include a description of the feature and your
1073fixed. We need to convince ourselves that the change is right before 1092implementation.
1074installing it. Even if it is correct, we might have trouble 1093
1075understanding it if we don't have a way to reproduce the problem. 1094@item
1095For a new bug, include a proper bug report for the problem you think
1096you have fixed. We need to convince ourselves that the change is
1097right before installing it. Even if it is correct, we might have
1098trouble understanding it if we don't have a way to reproduce the
1099problem.
1100@end itemize
1076 1101
1077@item 1102@item
1078Include all the comments that are appropriate to help people reading the 1103Include all the comments that are appropriate to help people reading the
@@ -1104,6 +1129,8 @@ right away. That gives us the option of installing it immediately if it
1104is important. 1129is important.
1105 1130
1106@item 1131@item
1132The patch itself.
1133
1107Use @samp{diff -c} to make your diffs. Diffs without context are hard 1134Use @samp{diff -c} to make your diffs. Diffs without context are hard
1108to install reliably. More than that, they are hard to study; we must 1135to install reliably. More than that, they are hard to study; we must
1109always study a patch to decide whether we want to install it. Unidiff 1136always study a patch to decide whether we want to install it. Unidiff
@@ -1114,6 +1141,12 @@ If you have GNU diff, use @samp{diff -c -F'^[_a-zA-Z0-9$]+ *('} when
1114making diffs of C code. This shows the name of the function that each 1141making diffs of C code. This shows the name of the function that each
1115change occurs in. 1142change occurs in.
1116 1143
1144If you are using the Emacs repository, make sure your copy is
1145up-to-date (e.g. with @code{git pull}). You can commit your changes
1146to a private branch and generate a patch from the master version by
1147using @code{git format-patch master}. Or you can leave your changes
1148uncommitted and use @code{git diff}.
1149
1117@item 1150@item
1118Avoid any ambiguity as to which is the old version and which is the new. 1151Avoid any ambiguity as to which is the old version and which is the new.
1119Please make the old version the first argument to diff, and the new 1152Please make the old version the first argument to diff, and the new
@@ -1138,8 +1171,16 @@ feel that the purpose needs explaining, it probably does---but put the
1138explanation in comments in the code. It will be more useful there. 1171explanation in comments in the code. It will be more useful there.
1139 1172
1140Please look at the change log entries of recent commits to see what 1173Please look at the change log entries of recent commits to see what
1141sorts of information to put in, and to learn the style that we use. 1174sorts of information to put in, and to learn the style that we use. Note that,
1142@xref{Change Log}. 1175unlike some other projects, we do require change logs for
1176documentation, i.e. Texinfo files.
1177@xref{Change Log},
1178@ifset WWW_GNU_ORG
1179see
1180@url{http://www.gnu.org/prep/standards/html_node/Change-Log-Concepts.html},
1181@end ifset
1182@xref{Change Log Concepts, Change Log Concepts,
1183Change Log Concepts, gnu-coding-standards, GNU Coding Standards}.
1143 1184
1144@item 1185@item
1145When you write the fix, keep in mind that we can't install a change that 1186When you write the fix, keep in mind that we can't install a change that
@@ -1160,11 +1201,52 @@ Please help us keep up with the workload by designing the patch in a
1160form that is clearly safe to install. 1201form that is clearly safe to install.
1161@end itemize 1202@end itemize
1162 1203
1163@c FIXME: Include the node above?
1164@node Contributing 1204@node Contributing
1165@section Contributing to Emacs Development 1205@section Contributing to Emacs Development
1166@cindex contributing to Emacs 1206@cindex contributing to Emacs
1167 1207
1208Emacs is a collaborative project and we encourage contributions from
1209anyone and everyone.
1210
1211There are many ways to contribute to Emacs:
1212
1213@itemize
1214@item
1215find and report bugs; @xref{Bugs}.
1216
1217@item
1218answer questions on the Emacs user mailing list
1219@url{https://lists.gnu.org/mailman/listinfo/help-gnu-emacs}.
1220
1221@item
1222write documentation, either on the wiki, or in the Emacs source
1223repository (@pxref{Sending Patches}).
1224
1225@item
1226check if existing bug reports are fixed in newer versions of Emacs
1227@url{http://debbugs.gnu.org/cgi/pkgreport.cgi?which=pkg&data=emacs}.
1228
1229@item
1230fix existing bug reports
1231@url{http://debbugs.gnu.org/cgi/pkgreport.cgi?which=pkg&data=emacs}.
1232
1233@item
1234@c etc/TOOD not in WWW_GNU_ORG
1235implement a feature listed in the @file{etc/TODO} file in the Emacs
1236distribution, and submit a patch.
1237
1238@item
1239implement a new feature, and submit a patch.
1240
1241@item
1242develop a package that works with Emacs, and publish it on your own
1243or in Gnu ELPA (@url{https://elpa.gnu.org/}).
1244
1245@item
1246port Emacs to a new platform, but that is not common nowadays.
1247
1248@end itemize
1249
1168If you would like to work on improving Emacs, please contact the maintainers at 1250If you would like to work on improving Emacs, please contact the maintainers at
1169@ifnothtml 1251@ifnothtml
1170@email{emacs-devel@@gnu.org}. 1252@email{emacs-devel@@gnu.org}.
@@ -1186,24 +1268,148 @@ you have not yet started work, it is useful to contact
1186before you start; it might be possible to suggest ways to make your 1268before you start; it might be possible to suggest ways to make your
1187extension fit in better with the rest of Emacs. 1269extension fit in better with the rest of Emacs.
1188 1270
1271When implementing a feature, please follow the Emacs coding standards;
1272@xref{Coding Standards}. In addition, non-trivial contributions
1273require a copyright assignment to the FSF; @xref{Copyright Assignment}.
1274
1189The development version of Emacs can be downloaded from the 1275The development version of Emacs can be downloaded from the
1190repository where it is actively maintained by a group of developers. 1276repository where it is actively maintained by a group of developers.
1191See the Emacs project page 1277See the Emacs project page
1192@url{http://savannah.gnu.org/projects/emacs/} for details. 1278@url{http://savannah.gnu.org/projects/emacs/} for access details.
1279
1280It is important to write your patch based on the current working
1281version. If you start from an older version, your patch may be
1282outdated (so that maintainers will have a hard time applying it), or
1283changes in Emacs may have made your patch unnecessary. After you have
1284downloaded the repository source, you should read the file
1285@file{INSTALL.REPO} for build instructions (they differ to some extent
1286from a normal build).
1287
1288If you would like to make more extensive contributions, see the
1289@file{./CONTRIBUTE} file in the Emacs distribution for information on
1290how to be an Emacs developer.
1291
1292For documentation on Emacs (to understand how to implement your
1293desired change), refer to:
1294
1295@itemize
1296@item
1297@ifset WWW_GNU_ORG
1298@ifhtml
1299the Emacs Manual
1300@url{http://www.gnu.org/software/emacs/manual/emacs.html}.
1301@end ifhtml
1302@ifnothtml
1303@xref{Top, Emacs Manual,,emacs}.
1304@end ifnothtml
1305@end ifset
1306@ifclear WWW_GNU_ORG
1307@xref{Top, Emacs Manual,,emacs}.
1308@end ifclear
1309
1310@item
1311@ifset WWW_GNU_ORG
1312@ifhtml
1313the Emacs Lisp Reference Manual
1314@url{http://www.gnu.org/software/emacs/manual/elisp.html}.
1315@end ifhtml
1316@ifnothtml
1317@xref{Top, Emacs Lisp Reference Manual,,elisp}.
1318@end ifnothtml
1319@end ifset
1320@ifclear WWW_GNU_ORG
1321@xref{Top, Emacs Lisp Reference Manual,,elisp}.
1322@end ifclear
1323
1324@item
1325@url{http://www.gnu.org/software/emacs}
1326
1327@item
1328@url{http://www.emacswiki.org/}
1329@end itemize
1330
1331@menu
1332* Coding Standards:: Gnu Emacs coding standards
1333* Copyright Assignment:: assigning copyright to the FSF
1334@end menu
1193 1335
1194For more information on how to contribute, see the 1336@node Coding Standards
1337@subsection Coding Standards
1338@cindex coding standards
1339
1340Contributed code should follow the GNU Coding Standards
1341@url{http://www.gnu.org/prep/standards/}. This may also be available
1342in info on your system.
1343
1344If it doesn't, we'll need to find someone to fix the code before we
1345can use it.
1346
1347Emacs has additional style and coding conventions:
1348
1349@itemize
1350@item
1195@ifset WWW_GNU_ORG 1351@ifset WWW_GNU_ORG
1196@ifhtml 1352@ifhtml
1197@url{http://gnu.org/software/emacs/CONTRIBUTE, etc/CONTRIBUTE} 1353the "Tips" Appendix in the Emacs Lisp Reference
1354@url{http://www.gnu.org/software/emacs/manual/html_node/elisp/Tips.html}.
1198@end ifhtml 1355@end ifhtml
1199@ifnothtml 1356@ifnothtml
1200@file{etc/CONTRIBUTE} 1357@xref{Tips, "Tips" Appendix in the Emacs Lisp Reference, Tips
1358Appendix, elisp, Emacs Lisp Reference}.
1201@end ifnothtml 1359@end ifnothtml
1202@end ifset 1360@end ifset
1203@ifclear WWW_GNU_ORG 1361@ifclear WWW_GNU_ORG
1204@file{etc/CONTRIBUTE} 1362@xref{Tips, "Tips" Appendix in the Emacs Lisp Reference, Tips
1363Appendix, elisp, Emacs Lisp Reference}.
1205@end ifclear 1364@end ifclear
1206file in the Emacs distribution. 1365
1366@item
1367Avoid using @code{defadvice} or @code{eval-after-load} for Lisp code
1368to be included in Emacs.
1369
1370@item
1371Remove all trailing whitespace in all source and text files.
1372
1373@item
1374Emacs has no convention on whether to use tabs in source code; please
1375don't change whitespace in the files you edit.
1376
1377@item
1378Use @code{?\s} instead of @code{? } in Lisp code for a space character.
1379
1380@end itemize
1381
1382@node Copyright Assignment
1383@subsection Copyright Assignment
1384@cindex copyright assignment
1385
1386The FSF (Free Software Foundation) is the copyright holder for GNU Emacs.
1387The FSF is a nonprofit with a worldwide mission to promote computer
1388user freedom and to defend the rights of all free software users.
1389For general information, see the website @url{http://www.fsf.org/}.
1390
1391Generally speaking, for non-trivial contributions to GNU Emacs we
1392require that the copyright be assigned to the FSF. For the reasons
1393behind this, see @url{http://www.gnu.org/licenses/why-assign.html}.
1394
1395Copyright assignment is a simple process. Residents of some countries
1396can do it entirely electronically. We can help you get started, and
1397answer any questions you may have (or point you to the people with the
1398answers), at the @email{emacs-devel@@gnu.org} mailing list.
1399
1400(Please note: general discussion about why some GNU projects ask
1401for a copyright assignment is off-topic for emacs-devel.
1402See gnu-misc-discuss instead.)
1403
1404A copyright disclaimer is also a possibility, but we prefer an assignment.
1405Note that the disclaimer, like an assignment, involves you sending
1406signed paperwork to the FSF (simply saying "this is in the public domain"
1407is not enough). Also, a disclaimer cannot be applied to future work, it
1408has to be repeated each time you want to send something new.
1409
1410We can accept small changes (roughly, fewer than 15 lines) without
1411an assignment. This is a cumulative limit (e.g. three separate 5 line
1412patches) over all your contributions.
1207 1413
1208@node Service 1414@node Service
1209@section How To Get Help with GNU Emacs 1415@section How To Get Help with GNU Emacs
@@ -1211,8 +1417,8 @@ file in the Emacs distribution.
1211@cindex help-gnu-emacs mailing list 1417@cindex help-gnu-emacs mailing list
1212@cindex gnu.emacs.help newsgroup 1418@cindex gnu.emacs.help newsgroup
1213 1419
1214If you need help installing, using or changing GNU Emacs, there are two 1420If you need help installing, using or changing GNU Emacs, there are
1215ways to find it: 1421two ways to find it:
1216 1422
1217@itemize @bullet 1423@itemize @bullet
1218@item 1424@item
diff --git a/lisp/startup.el b/lisp/startup.el
index c04b16c43c4..8e981bbc64a 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -1463,9 +1463,7 @@ Each element in the list should be a list of strings or pairs
1463 (goto-char (point-min)))) 1463 (goto-char (point-min))))
1464 "\tMany people have contributed code included in GNU Emacs\n" 1464 "\tMany people have contributed code included in GNU Emacs\n"
1465 :link ("Contributing" 1465 :link ("Contributing"
1466 ,(lambda (_button) 1466 ,(lambda (_button) (info "(emacs)Contributing")))
1467 (view-file (expand-file-name "CONTRIBUTE" data-directory))
1468 (goto-char (point-min))))
1469 "\tHow to contribute improvements to Emacs\n" 1467 "\tHow to contribute improvements to Emacs\n"
1470 "\n" 1468 "\n"
1471 :link ("GNU and Freedom" ,(lambda (_button) (describe-gnu-project))) 1469 :link ("GNU and Freedom" ,(lambda (_button) (describe-gnu-project)))
@@ -2039,9 +2037,7 @@ Type \\[describe-distribution] for information on "))
2039 2037
2040 (insert-button "Contributing" 2038 (insert-button "Contributing"
2041 'action 2039 'action
2042 (lambda (_button) 2040 (lambda (_button) (info "(emacs)Contributing"))
2043 (view-file (expand-file-name "CONTRIBUTE" data-directory))
2044 (goto-char (point-min)))
2045 'follow-link t) 2041 'follow-link t)
2046 (insert "\tHow to contribute improvements to Emacs\n\n") 2042 (insert "\tHow to contribute improvements to Emacs\n\n")
2047 2043