Refill some long/short copyright headers.
[bpt/emacs.git] / etc / CONTRIBUTE
CommitLineData
95df8112 1Copyright (C) 2006-2011 Free Software Foundation, Inc.
ceaee230
JL
2See end for license conditions.
3
4
5 Contributing to Emacs
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 how to develop Emacs changes, refer to the Emacs
16Manual and the Emacs Lisp Reference Manual (both included in the Emacs
17distribution). The web pages in http://www.gnu.org/software/emacs
18contain additional information.
19
20You may also want to submit your change so that can be considered for
21inclusion in a future version of Emacs (see below).
22
23If you don't feel up to hacking Emacs, there are many other ways to
24help. You can answer questions on the mailing lists, write
25documentation, find and report bugs, contribute to the Emacs web
26pages, or develop a package that works with Emacs.
27
28Here are some style and legal conventions for contributors to Emacs:
29
30
31* Coding Standards
32
83a5f630 33Contributed code should follow the GNU Coding Standards.
ceaee230
JL
34
35If it doesn't, we'll need to find someone to fix the code before we
36can use it.
37
38Emacs has certain additional style and coding conventions.
39
d40084d1 40Ref: http://www.gnu.org/prep/standards/
ceaee230
JL
41Ref: GNU Coding Standards Info Manual
42Ref: The "Tips" Appendix in the Emacs Lisp Reference.
43
44
45* Copyright Assignment
46
83a5f630
GM
47We can accept small changes (roughly, fewer than 15 lines) without
48legal papers. Anything more substantial requires a copyright
49disclaimer or assignment (the latter is preferred, especially for
50larger changes). Both of these involved filling out a short form and
51filing it with the FSF. The process is straightforward -- contact us
52at emacs-devel@gnu.org to obtain the relevant forms.
ceaee230
JL
53
54
55* Getting the Source Code
56
83a5f630
GM
57The latest version of Emacs can be downloaded using Bazaar from the
58Savannah web site. It is important to write your patch based on the
59latest version. If you start from an older version, your patch may be
60outdated (so that maintainers will have a hard time applying it), or
61changes in Emacs may have made your patch unnecessary.
ceaee230 62
83a5f630
GM
63After you have downloaded the Bazaar source, you should read the file
64INSTALL.BZR for build instructions (they differ to some extent from a
ceaee230
JL
65normal build).
66
67Ref: http://savannah.gnu.org/projects/emacs
68
69
70* Submitting Patches
71
72Every patch must have several pieces of information before we
73can properly evaluate it.
74
75When you have all these pieces, bundle them up in a mail message and
893db5bc 76send it to bug-gnu-emacs@gnu.org or emacs-devel@gnu.org.
ceaee230 77
83a5f630 78All subsequent discussion should be sent to the same mailing list.
ceaee230
JL
79
80** Description
81
82For bug fixes, a description of the bug and how your patch fixes this
83bug.
84
65b37d56 85For new features, a description of the feature and your implementation.
ceaee230
JL
86
87** ChangeLog
88
89A ChangeLog entry as plaintext (separate from the patch).
90
83a5f630 91See the various ChangeLog files for format and content. Note that,
ceaee230
JL
92unlike some other projects, we do require ChangeLogs also for
93documentation, i.e. Texinfo files.
94
95Ref: "Change Log Concepts" node of the GNU Coding Standards Info
96Manual, for how to write good log entries.
97
98** The patch itself.
99
100Please use "Context Diff" format.
101
83a5f630
GM
102If you are accessing the Bazaar repository, make sure your copy is
103up-to-date (e.g. with `bzr pull'), then use
104 bzr diff --no-aliases --diff-options=-cp
105Else, use
ceaee230
JL
106 diff -cp OLD NEW
107
108If your version of diff does not support these options, then get the
109latest version of GNU Diff.
110
111** Mail format.
112
113We prefer to get the patches as inline plain text.
114
115Please be aware of line wrapping which will make the patch unreadable
116and useless for us. To avoid that, you can use MIME attachments or,
117as a last resort, uuencoded gzipped text.
118
119** Please reread your patch before submitting it.
120
121** Do not mix changes.
122
123If you send several unrelated changes together, we will ask you to
124separate them so we can consider each of the changes by itself.
125
83a5f630
GM
126** Do not make formatting changes.
127
128Making cosmetic formatting changes (indentation, etc) makes it harder
129to see what you have really changed.
130
ceaee230
JL
131
132* Coding style and conventions.
133
134** Mandatory reading:
135
136The "Tips and Conventions" Appendix of the Emacs Lisp Reference.
137
138** Avoid using `defadvice' or `eval-after-load' for Lisp code to be
139included in Emacs.
140
141** Remove all trailing whitespace in all source and text files.
142
143** Use ?\s instead of ? in Lisp code for a space character.
144
145
146* Supplemental information for Emacs Developers.
147
83a5f630 148** Write access to the Emacs repository.
ceaee230
JL
149
150Once you become a frequent contributor to Emacs, we can consider
83a5f630 151giving you write access to the Bazaar repository.
ceaee230
JL
152
153
154** Emacs Mailing lists.
155
156Discussion about Emacs development takes place on emacs-devel@gnu.org.
157
83a5f630 158Bug reports and feature requests are sent to bug-gnu-emacs@gnu.org.
ceaee230
JL
159
160You can subscribe to the mailing lists at savannah.gnu.org/projects/emacs.
161
162You can find the mailing lists archives at lists.gnu.org or gmane.org.
163
164
165** Document your changes.
166
167Think carefully about whether your change requires updating the
168documentation. If it does, you can either do this yourself or add an
169item to the NEWS file.
170
171If you document your change in NEWS, please mark the NEWS entry with
172the documentation status of the change: if you submit the changes for
173the manuals, mark it with "+++"; if it doesn't need to be documented,
174mark it with "---"; if it needs to be documented, but you didn't
175submit documentation changes, leave the NEWS entry unmarked. (These
176marks are checked by the Emacs maintainers to make sure every change
177was reflected in the manuals.)
178
179
180** Understanding Emacs Internals.
181
182The best way to understand Emacs Internals is to read the code,
183but the nodes "Tips" and "GNU Emacs Internals" in the Appendix
184of the Emacs Lisp Reference Manual may also help.
185
186The file etc/DEBUG describes how to debug Emacs bugs.
187
188
ceaee230
JL
189\f
190This file is part of GNU Emacs.
191
ab73e885 192GNU Emacs is free software: you can redistribute it and/or modify
ceaee230 193it under the terms of the GNU General Public License as published by
ab73e885
GM
194the Free Software Foundation, either version 3 of the License, or
195(at your option) any later version.
ceaee230
JL
196
197GNU Emacs is distributed in the hope that it will be useful,
198but WITHOUT ANY WARRANTY; without even the implied warranty of
199MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
200GNU General Public License for more details.
201
202You should have received a copy of the GNU General Public License
ab73e885 203along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
ceaee230
JL
204\f
205Local variables:
206mode: outline
207paragraph-separate: "[ \f]*$"
208end:
209