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