release-process 9.36 KB
Newer Older
Xue Fuqiao's avatar
Xue Fuqiao committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
This document describes the release process used by GNU Emacs.

* RELEASE CYCLE

Each release cycle will be split into two periods.

** Phase one: development

The first phase of the release schedule is the "heads-down" working
period for new features, on the `master' branch and several feature
branches.

** Phase two: bugfixes

Shortly before this phase, Emacs developers will be devoted to
figuring out what features to include in the next release and what
features to defer to a later release.

At the beginning of this phase, a release branch called "emacs-NN"
("NN" represents the major version number of the new Emacs release)
will be cut from `master'.

This phase is spent fixing bugs and eliminating undocumented new
features on the "emacs-NN" branch.

In parallel to this phase, `master' can receive new features, to be
released in the next release cycle.  From time to time, the master
branches merges bugfix commits from the "emacs-NN" branch.

* RELEASE-CRITICAL BUGS

Emacs uses the "blocking bug(s)" feature of Debbugs for bugs need to
be addressed in the next release.

Currently, bug#19759 is the tracking bug for release of 25.1.  Say
bug#123 needs to be fixed for Emacs 25.1.  Send a message to
control@debbugs.gnu.org that says:

   block 19759 by 123

Change "block" to "unblock" to unblock the bug.
42

Luc Teirlinck's avatar
Luc Teirlinck committed
43
* TO BE DONE SHORTLY BEFORE RELEASE
Luc Teirlinck's avatar
Luc Teirlinck committed
44

Xue Fuqiao's avatar
Xue Fuqiao committed
45 46 47 48
** Make sure the Copyright date reflects the current year in the source
files.  See `admin/notes/years' for information about maintaining
copyright years for GNU Emacs.

49 50 51 52
** Make sure the necessary sources and scripts for any generated files
are included in the source tarfile.  (They don't need to be installed,
so eg admin/ is fine.)

Glenn Morris's avatar
Glenn Morris committed
53
** Manuals
54 55 56 57
Check for node names using problematic characters:
  find doc -name '*.texi' -exec grep '^@node[^,]*[:.()]' {} +
Sadly makeinfo does not warn about such characters.

58 59 60 61
Check for major new features added since the last release (e.g. new
lisp files), and add the relevant authors to the Acknowledgments in
doc/emacs/ack.texi and emacs.texi.

Glenn Morris's avatar
Glenn Morris committed
62
Check cross-references between the manuals (eg from emacs to elisp)
Glenn Morris's avatar
Glenn Morris committed
63 64 65
are correct.  You can use something like the following in the info
directory in the Emacs build tree:

66
emacs -Q --eval "(progn (require 'info) (setq Info-directory-list '(\".\")))" \
Glenn Morris's avatar
Glenn Morris committed
67
  -f info-xref-check-all
Glenn Morris's avatar
Glenn Morris committed
68

69 70 71 72 73 74 75 76
Setting Info-directory-list avoids having system info pages confuse
things.  References to external manuals will be flagged as
uncheckable.  You should still check these, and also that each
external manual has an appropriate redirect in the file manual/.htaccess
in the web pages repository.  E.g.:
Redirect /software/emacs/manual/html_mono/automake.html /software/automake/manual/automake.html
Redirect /software/emacs/manual/html_node/automake/ /software/automake/manual/html_node/

77 78 79 80 81 82 83 84 85 86 87 88 89 90
Another tool you can use to check links is gnu.org's linc.py:
http://www.gnu.org/server/source/

You run this something like:

cd /path/to/cvs/emacs-www
linc.py -o /path/to/output-dir --url http://www.gnu.org/software/emacs/ .

Be warned that it is really, really slow (as in, can take ~ a full day
to check the manual/ directory).  It is probably best to run it on a
single directory at a time from eg manual/html_node.  It is very
inefficient, but may reveal a few things that info-xref does not.


Glenn Morris's avatar
Glenn Morris committed
91 92 93 94 95 96 97 98 99 100 101 102 103
make emacs.dvi, elisp.dvi, and deal with any errors (undefined
references etc) in the output.  Break any overfull lines.
Underfull hboxes are not serious, but it can be nice to get rid of
them if a simple rephrasing or rearrangement will work.

Update the master menu and detailed menu (eg the antinews version).
The command texinfo-multiple-files-update can do this, but you
probably want to apply the results selectively (eg the current master
menu has better line-breaks than the automatic version).  It includes
the menu-entry name (if there is one) as well as the node name - using
only the latter looks better.  Also, it doesn't seem to handle nested
includes, so will miss edebug.texi etc.

Glenn Morris's avatar
Glenn Morris committed
104 105 106 107 108 109 110 111
Check for widow and orphan lines in the printed manual; make sure all
the pages really look ok in the manual as formatted.  Orphans/widows
are cases where the first/last line of a paragraph is on its own at
the end/start of a page, or where the last word in a paragraph is on
its own at the start of a line.  It looks better if you reword/respace
things to avoid these.  (AFAIK, there is no way to find these except
paging through the whole manual.)  This should be the very last thing
you do, since any change can alter the layout.
Glenn Morris's avatar
Glenn Morris committed
112 113 114 115 116 117 118
(Actually, there is probably little point in trying to do this.
It's only really relevant if printed versions of the manuals are going
to be published.  End-users are not likely to print out all 1000+
pages of the manuals, and even if they do, the resulting page breaks
depend on what paper and font size they use.  This also means that if
you _are_ going to do this, it should be done with the paper and font
size that the GNU Press are going to use when they print the manuals.
119
I think this is different to what you get if you just use eg 'make
Glenn Morris's avatar
Glenn Morris committed
120
emacs.pdf' (e.g., enable "smallbook").
121

Glenn Morris's avatar
Glenn Morris committed
122 123
** Check the keybindings in the refcards are correct, and add any new ones.
What paper size are the English versions supposed to be on?
Glenn Morris's avatar
Glenn Morris committed
124 125
On Debian testing, the packages texlive-lang-czechslovak and
texlive-lang-polish will let you generate the cs-* and sk-* pdfs.
Glenn Morris's avatar
Glenn Morris committed
126
(You may need texlive-lang-cyrillic, texlive-lang-german for others.)
Glenn Morris's avatar
Glenn Morris committed
127 128
The Makefile rules did not work for me, I had to use something like:
csplain -output-format=pdf cs-refcard
Glenn Morris's avatar
Glenn Morris committed
129

130 131
** Ask maintainers of refcard translations to update them.

Glenn Morris's avatar
Glenn Morris committed
132
Emacs 22 translators:
133 134

LANG	Translator            Status
135 136 137 138 139 140 141
cs	Pavel Janík
de	Sven Joachim
fr	Eric Jacoboni
pl	Włodek Bzyl
pt-br	Rodrigo Real
ru	Alex Ott
sk	Miroslav Vaško
142

Glenn Morris's avatar
Glenn Morris committed
143 144
** For a major release, add a "New in Emacs XX" section to faq.texi.

145 146 147 148
** Remove temporary +++/--- lines in NEWS.

** Try to reorder NEWS: most important things first, related items together.

Glenn Morris's avatar
Glenn Morris committed
149 150
** Consider bumping customize-changed-options-previous-release.

Glenn Morris's avatar
Glenn Morris committed
151
** cusver-check from admin.el can help find new defcustoms missing
Glenn Morris's avatar
Glenn Morris committed
152 153
:version tags.

Paul Eggert's avatar
Paul Eggert committed
154 155
** Add a line to etc/HISTORY for the release version number and date.

156 157
* BUGS

158 159 160
** Check for modes which bind M-s that conflicts with a new global binding M-s
and change key bindings where necessary.  The current list of modes:

161
1. Gnus binds 'M-s' to 'gnus-summary-search-article-forward'.
162

163
2. Minibuffer binds 'M-s' to 'next-matching-history-element'
164 165
   (not useful any more since C-s can now search in the history).

166 167 168 169
3. 'center-line' in Text mode was already moved to the text formatting
   keymap as 'M-o M-s' (thus this binding is not necessary any more
   in 'nroff-mode-map' too and can be removed now from the nroff mode
   because it can now use the global key binding 'M-o M-s' 'center-line').
170

171 172 173
4. PCL-CVS binds 'M-s' to 'cvs-status', and log-edit-mode binds it to
   'log-edit-comment-search-forward'.  Perhaps search commands
   on the global key binding 'M-s' are useless in these modes.
174

175
5. Rmail binds '\es' to 'rmail-search'/'rmail-summary-search'.
176 177


178
* DOCUMENTATION
179

180 181
** Check the Emacs Tutorial.

182 183
The first line of every tutorial must begin with text ending in a
period (".", ASCII 0x2E) saying "Emacs Tutorial" in the respective
Glenn Morris's avatar
Glenn Morris committed
184 185
language. This should be followed by "See end for copying conditions",
likewise in the respective language.
186 187 188 189

After each file name, on the same line or the following line, come the
names of the people who have checked it.

190 191
SECTION                  READERS
----------------------------------
Chong Yidong's avatar
Chong Yidong committed
192
TUTORIAL             cyd
Ognyan Kulev's avatar
Ognyan Kulev committed
193
TUTORIAL.bg          ogi
Xue Fuqiao's avatar
Xue Fuqiao committed
194
TUTORIAL.cn          xfq
195
TUTORIAL.cs
Ognyan Kulev's avatar
Ognyan Kulev committed
196
TUTORIAL.de          wl
197
TUTORIAL.eo
198 199
TUTORIAL.es
TUTORIAL.fr
Eli Zaretskii's avatar
Eli Zaretskii committed
200
TUTORIAL.he          eliz
201 202
TUTORIAL.it
TUTORIAL.ja
203
TUTORIAL.ko
204
TUTORIAL.nl	     Pieter Schoenmakers
205 206
TUTORIAL.pl
TUTORIAL.pt_BR
207
TUTORIAL.ro
208
TUTORIAL.ru          Alex Ott
209
TUTORIAL.sk
Primoz PETERLIN's avatar
Primoz PETERLIN committed
210
TUTORIAL.sl          Primoz PETERLIN
Mats Lidell's avatar
Mats Lidell committed
211
TUTORIAL.sv          Mats Lidell
212
TUTORIAL.th
213
TUTORIAL.zh
214

Chong Yidong's avatar
Chong Yidong committed
215 216
** Check the manual.

217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268
abbrevs.texi
ack.texi
anti.texi
arevert-xtra.texi
basic.texi
buffers.texi
building.texi
calendar.texi
cal-xtra.texi
cmdargs.texi
commands.texi
custom.texi
dired.texi
dired-xtra.texi
display.texi
emacs.texi
emacs-xtra.texi
emerge-xtra.texi
entering.texi
files.texi
fixit.texi
fortran-xtra.texi
frames.texi
glossary.texi
help.texi
indent.texi
killing.texi
kmacro.texi
macos.texi
maintaining.texi
mark.texi
mini.texi
misc.texi
modes.texi
msdos.texi
msdos-xtra.texi
mule.texi
m-x.texi
package.texi
picture-xtra.texi
programs.texi
regs.texi
rmail.texi
screen.texi
search.texi
sending.texi
text.texi
trouble.texi
vc-xtra.texi
vc1-xtra.texi
windows.texi
xresources.texi
Chong Yidong's avatar
Chong Yidong committed
269 270 271

** Check the Lisp manual.

272 273 274 275 276 277 278 279 280 281 282 283
abbrevs.texi
anti.texi
back.texi
backups.texi
buffers.texi
commands.texi
compile.texi
control.texi
customize.texi
debugging.texi
display.texi
edebug.texi
Chong Yidong's avatar
Chong Yidong committed
284
elisp.texi
285 286 287 288 289 290 291 292
errors.texi
eval.texi
files.texi
frames.texi
functions.texi
hash.texi
help.texi
hooks.texi
Chong Yidong's avatar
Chong Yidong committed
293
index.texi
294 295 296 297 298 299 300 301 302 303 304
internals.texi
intro.texi
keymaps.texi
lists.texi
loading.texi
macros.texi
maps.texi
markers.texi
minibuf.texi
modes.texi
nonascii.texi
305
numbers.texi      Paul Eggert (24.4)
306 307 308 309 310 311 312 313 314 315 316 317 318 319 320
objects.texi
os.texi
package.texi
positions.texi
processes.texi
searching.texi
sequences.texi
streams.texi
strings.texi
symbols.texi
syntax.texi
text.texi
tips.texi
variables.texi
windows.texi
Chong Yidong's avatar
Chong Yidong committed
321

Xue Fuqiao's avatar
Xue Fuqiao committed
322 323 324 325 326 327 328
* OTHER INFORMATION

For Emacs's versioning scheme, see `admin/notes/versioning'.

For instructions to create pretest or release tarballs, announcements,
etc., see `admin/make-tarball.txt'.

Kim F. Storm's avatar
Kim F. Storm committed
329 330 331

Local variables:
mode: outline
332
coding: utf-8
Kim F. Storm's avatar
Kim F. Storm committed
333
end: