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