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