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