Don't run ipv6 test on systems without ipv6
[emacs.git] / admin / release-process
blobf378662adc0d25bbdcae945ea2cc394a1e950595
1 This document describes the release process used by GNU Emacs.
3 * RELEASE CYCLE
5 Each release cycle will be split into two periods.
7 ** Phase one: development
9 The first phase of the release schedule is the "heads-down" working
10 period for new features, on the 'master' branch and several feature
11 branches.
13 ** Phase two: fixing and stabilizing the release branch
15 Shortly before this phase, Emacs developers will be devoted to
16 figuring out what features to include in the next release and what
17 features to defer to a later release.
19 This phase is mostly spent fixing bugs and documenting new features
20 and changes on the "emacs-NN" branch.  Actually, the default branch
21 for pushing any work in this phase should be "emacs-NN", except for
22 new features.
24 At the beginning of this phase, a release branch called "emacs-NN"
25 ("NN" represents the major version number of the new Emacs release)
26 will be cut from 'master'.  When that happens, the version number on
27 'master' should be incremented; use admin/admin.el's 'set-version'
28 command to do that, then commit the changes it made and push to
29 'master'.  For major releases, also update the value of
30 'customize-changed-options-previous-release'.
32 The 2 main manuals, the User Manual and the Emacs Lisp Manual, need to
33 be proofread, preferably by at least 2 different persons, and any
34 uncovered problems fixed.  This is a lot of work, so it is advisable
35 to divide the job between several people (see the checklist near the
36 end of this file).
38 In parallel to this phase, 'master' can receive new features, to be
39 released in the next release cycle.  From time to time, the master
40 branches merges bugfix commits from the "emacs-NN" branch.
42 * RELEASE-CRITICAL BUGS
44 Emacs uses the "blocking bug(s)" feature of Debbugs for bugs need to
45 be addressed in the next release.
47 Currently, bug#19759 is the tracking bug for release of 25.1 and
48 bug#21966 is the tracking bug for release of 25.2.  Say bug#123 needs
49 to be fixed for Emacs 25.1.  Send a message to control@debbugs.gnu.org
50 that says:
52    block 19759 by 123
54 Change "block" to "unblock" to unblock the bug.
56 * TO BE DONE SHORTLY BEFORE RELEASE
58 ** Make sure the Copyright date reflects the current year in the source
59 files.  See 'admin/notes/years' for information about maintaining
60 copyright years for GNU Emacs.
62 ** Make sure the necessary sources and scripts for any generated files
63 are included in the source tarball.  (They don't need to be installed,
64 so e.g. admin/ is fine.)
66 ** Regenerate AUTHORS by using admin/authors.el
67 (The instructions are at the beginning of that file.)
69 ** Remove temporary +++/--- lines in NEWS.
70 But first make sure there are no unmarked entries, and update the
71 documentation (or decide no updates are necessary) for those that
72 aren't.
74 ** Manuals
75 Check for node names using problematic characters:
76   find doc -name '*.texi' -exec grep '^@node[^,]*[:.()]' {} +
77 Sadly makeinfo does not warn about such characters.
79 Check for major new features added since the last release (e.g. new
80 lisp files), and add the relevant authors to the Acknowledgments in
81 doc/emacs/ack.texi and emacs.texi.
83 For major releases, rewrite the "Antinews" appendix of the User Manual
84 (doc/emacs/anti.texi) to describe features lost by downgrading to the
85 previous version.  The way to do that is read NEWS, pick up the more
86 significant changes and new features in the upcoming release, then
87 describe the "benefits" from losing those features.  Be funny, use
88 humor.  The text written for the previous major release can serve as
89 good example.
91 Check cross-references between the manuals (e.g. from emacs to elisp)
92 are correct.  You can use something like the following in the info
93 directory in the Emacs build tree:
95 emacs -Q --eval "(progn (require 'info) (setq Info-directory-list '(\".\")))" \
96   -f info-xref-check-all
98 Setting Info-directory-list avoids having system info pages confuse
99 things.  References to external manuals will be flagged as
100 uncheckable.  You should still check these, and also that each
101 external manual has an appropriate redirect in the file manual/.htaccess
102 in the web pages repository.  E.g.:
103 Redirect /software/emacs/manual/html_mono/automake.html /software/automake/manual/automake.html
104 Redirect /software/emacs/manual/html_node/automake/ /software/automake/manual/html_node/
106 Another tool you can use to check links is gnu.org's linc.py:
107 http://www.gnu.org/server/source/
109 You run this with something like:
111 cd /path/to/cvs/emacs-www
112 linc.py -o /path/to/output-dir --url http://www.gnu.org/software/emacs/ .
114 Be warned that it is really, really slow (as in, can take ~ a full day
115 to check the manual/ directory).  It is probably best to run it on a
116 single directory at a time from e.g. manual/html_node.  It is very
117 inefficient, but may reveal a few things that info-xref does not.
119 make emacs.dvi, elisp.dvi, and deal with any errors (undefined
120 references etc) in the output.  Break any overfull lines.
121 Underfull hboxes are not serious, but it can be nice to get rid of
122 them if a simple rephrasing or rearrangement will work.
124 Update the master menu and detailed menu (e.g. the antinews version).
125 The command texinfo-multiple-files-update can do this, but you
126 probably want to apply the results selectively (e.g. the current master
127 menu has better line-breaks than the automatic version).  It includes
128 the menu-entry name (if there is one) as well as the node name - using
129 only the latter looks better.  Also, it doesn't seem to handle nested
130 includes, so will miss edebug.texi etc.
132 Check for widow and orphan lines in the printed manual; make sure all
133 the pages really look OK in the manual as formatted.  Orphans/widows
134 are cases where the first/last line of a paragraph is on its own at
135 the end/start of a page, or where the last word in a paragraph is on
136 its own at the start of a line.  It looks better if you reword/respace
137 things to avoid these.  (AFAIK, there is no way to find these except
138 paging through the whole manual.)  This should be the very last thing
139 you do, since any change can alter the layout.
140 (Actually, there is probably little point in trying to do this.
141 It's only really relevant if printed versions of the manuals are going
142 to be published.  End-users are not likely to print out all 1000+
143 pages of the manuals, and even if they do, the resulting page breaks
144 depend on what paper and font size they use.  This also means that if
145 you _are_ going to do this, it should be done with the paper and font
146 size that the GNU Press are going to use when they print the manuals.
147 I think this is different to what you get if you just use e.g. 'make
148 emacs.pdf' (e.g., enable "smallbook").
150 ** Try to reorder NEWS: most important things first, related items together.
152 ** For a major release, add a "New in Emacs XX" section to faq.texi.
154 ** Check the keybindings in the refcards are correct, and add any new ones.
155 What paper size are the English versions supposed to be on?
156 On Debian testing, the packages texlive-lang-czechslovak and
157 texlive-lang-polish will let you generate the cs-* and sk-* pdfs.
158 (You may need texlive-lang-cyrillic, texlive-lang-german for others.)
159 The Makefile rules did not work for me, I had to use something like:
160 csplain -output-format=pdf cs-refcard
162 ** Ask maintainers of refcard translations to update them.
164 Emacs 22 translators:
166 LANG    Translator            Status
167 cs      Pavel Janík
168 de      Sven Joachim
169 fr      Eric Jacoboni
170 pl      Włodek Bzyl
171 pt-br   Rodrigo Real
172 ru      Alex Ott
173 sk      Miroslav Vaško
175 ** cusver-check from admin.el can help find new defcustoms missing
176 :version tags.
178 ** Add a line to etc/HISTORY for the release version number and date.
180 * BUGS
182 ** Check for modes which bind M-s that conflicts with a new global binding M-s
183 and change key bindings where necessary.  The current list of modes:
185 1. Gnus binds 'M-s' to 'gnus-summary-search-article-forward'.
187 2. Minibuffer binds 'M-s' to 'next-matching-history-element'
188    (not useful any more since C-s can now search in the history).
190 3. 'center-line' in Text mode was already moved to the text formatting
191    keymap as 'M-o M-s' (thus this binding is not necessary any more
192    in 'nroff-mode-map' too and can be removed now from the nroff mode
193    because it can now use the global key binding 'M-o M-s' 'center-line').
195 4. PCL-CVS binds 'M-s' to 'cvs-status', and log-edit-mode binds it to
196    'log-edit-comment-search-forward'.  Perhaps search commands
197    on the global key binding 'M-s' are useless in these modes.
199 5. Rmail binds '\es' to 'rmail-search'/'rmail-summary-search'.
202 * DOCUMENTATION
204 ** Check the Emacs Tutorial.
206 The first line of every tutorial must begin with text ending in a
207 period (".", ASCII 0x2E) saying "Emacs Tutorial" in the respective
208 language. This should be followed by "See end for copying conditions",
209 likewise in the respective language.
211 After each file name, on the same line or the following line, come the
212 names of the people who have checked it.
214 SECTION                  READERS
215 ----------------------------------
216 TUTORIAL
217 TUTORIAL.bg
218 TUTORIAL.cn
219 TUTORIAL.cs
220 TUTORIAL.de
221 TUTORIAL.eo
222 TUTORIAL.es
223 TUTORIAL.fr
224 TUTORIAL.he
225 TUTORIAL.it
226 TUTORIAL.ja
227 TUTORIAL.ko
228 TUTORIAL.nl
229 TUTORIAL.pl
230 TUTORIAL.pt_BR
231 TUTORIAL.ro
232 TUTORIAL.ru
233 TUTORIAL.sk
234 TUTORIAL.sl
235 TUTORIAL.sv
236 TUTORIAL.th
237 TUTORIAL.zh
239 ** Check the manual.
241 abbrevs.texi
242 ack.texi
243 anti.texi
244 arevert-xtra.texi
245 basic.texi
246 buffers.texi
247 building.texi
248 calendar.texi
249 cal-xtra.texi
250 cmdargs.texi
251 commands.texi
252 custom.texi
253 dired.texi
254 dired-xtra.texi
255 display.texi
256 emacs.texi
257 emacs-xtra.texi
258 emerge-xtra.texi
259 entering.texi
260 files.texi
261 fixit.texi
262 fortran-xtra.texi
263 frames.texi
264 glossary.texi
265 help.texi
266 indent.texi
267 killing.texi
268 kmacro.texi
269 macos.texi
270 maintaining.texi
271 mark.texi
272 mini.texi
273 misc.texi
274 modes.texi
275 msdos.texi
276 msdos-xtra.texi
277 mule.texi
278 m-x.texi
279 package.texi
280 picture-xtra.texi
281 programs.texi
282 regs.texi
283 rmail.texi
284 screen.texi
285 search.texi
286 sending.texi
287 text.texi
288 trouble.texi
289 vc-xtra.texi
290 vc1-xtra.texi
291 windows.texi
292 xresources.texi
294 ** Check the Lisp manual.
296 abbrevs.texi
297 anti.texi
298 back.texi
299 backups.texi
300 buffers.texi
301 commands.texi
302 compile.texi
303 control.texi
304 customize.texi
305 debugging.texi
306 display.texi
307 edebug.texi
308 elisp.texi
309 errors.texi
310 eval.texi
311 files.texi
312 frames.texi
313 functions.texi
314 hash.texi
315 help.texi
316 hooks.texi
317 index.texi
318 internals.texi
319 intro.texi
320 keymaps.texi
321 lists.texi
322 loading.texi
323 macros.texi
324 maps.texi
325 markers.texi
326 minibuf.texi
327 modes.texi
328 nonascii.texi
329 numbers.texi
330 objects.texi
331 os.texi
332 package.texi
333 positions.texi
334 processes.texi
335 searching.texi
336 sequences.texi
337 streams.texi
338 strings.texi
339 symbols.texi
340 syntax.texi
341 text.texi
342 tips.texi
343 variables.texi
344 windows.texi
346 * OTHER INFORMATION
348 For Emacs's versioning scheme, see 'admin/notes/versioning'.
350 For instructions to create pretest or release tarballs, announcements,
351 etc., see 'admin/make-tarball.txt'.
354 Local variables:
355 mode: outline
356 coding: utf-8
357 end: