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