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