Sync usage with man page.
[netbsd-mini2440.git] / share / doc / papers / relengr / 3.t
blob5ebcc2cb6b93e553dfb102fbe165fa19752e411a
1 .\"     $NetBSD: 3.t,v 1.2 1998/01/09 06:42:04 perry Exp $
2 .\"
3 .\" Copyright (c) 1989 The Regents of the University of California.
4 .\" All rights reserved.
5 .\"
6 .\" Redistribution and use in source and binary forms, with or without
7 .\" modification, are permitted provided that the following conditions
8 .\" are met:
9 .\" 1. Redistributions of source code must retain the above copyright
10 .\"    notice, this list of conditions and the following disclaimer.
11 .\" 2. Redistributions in binary form must reproduce the above copyright
12 .\"    notice, this list of conditions and the following disclaimer in the
13 .\"    documentation and/or other materials provided with the distribution.
14 .\" 3. Neither the name of the University nor the names of its contributors
15 .\"    may be used to endorse or promote products derived from this software
16 .\"    without specific prior written permission.
17 .\"
18 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
19 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
22 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 .\" SUCH DAMAGE.
29 .\"
30 .\"     @(#)3.t 5.1 (Berkeley) 4/17/91
31 .\"
32 .NH
33 System Release
34 .PP
35 Once the decision has been made to halt development
36 and begin release engineering,
37 all currently unfinished projects are evaluated.
38 This evaluation involves computing the time required to complete
39 the project as opposed to how important the project is to the
40 upcoming release.
41 Projects that are not selected for completion are
42 removed from the distribution branch of the source code control system
43 and saved on branch deltas so they can be retrieved,
44 completed, and merged into a future release;
45 the remaining unfinished projects are brought to orderly completion.
46 .PP
47 Developments from
48 .SM CSRG
49 are released in three steps: alpha, beta, and final.
50 Alpha and beta releases are not true distributions\(emthey
51 are test systems.
52 Alpha releases are normally available to only a few sites,
53 usually those working closely with
54 .SM CSRG .
55 More sites are given beta releases,
56 as the system is closer to completion,
57 and needs wider testing to find more obscure problems.
58 For example, \*(b3 alpha was distributed to about fifteen
59 sites, while \*(b3 beta ran at more than a hundred.
60 .NH 2
61 Alpha Distribution Development
62 .PP
63 The first step in creating an alpha distribution is to evaluate the
64 existing state of the system and to decide what software should be
65 included in the release.
66 This decision process includes not only deciding what software should
67 be added, but also what obsolete software ought to be retired from the
68 distribution.
69 The new software includes the successful projects that have been
70 completed at
71 .SM CSRG
72 and elsewhere, as well as some portion of the vast quantity of
73 contributed software that has been offered during the development
74 period.
75 .PP
76 Once an initial list has been created,
77 a prototype filesystem corresponding to the distribution
78 is constructed, typically named
79 .PN /nbsd .
80 This prototype will eventually turn into the master source tree for the
81 final distribution.
82 During the period that the alpha distribution is being created,
83 .PN /nbsd
84 is mounted read-write, and is highly fluid.
85 Programs are created and deleted,
86 old versions of programs are completely replaced,
87 and the correspondence between the sources and binaries
88 is only loosely tracked.
89 People outside
90 .SM CSRG
91 who are helping with the distribution are free to
92 change their parts of the distribution at will.
93 .PP
94 During this period the newly forming distribution is
95 checked for interoperability.
96 For example,
97 in \*(b3 the output of context differences from
98 .PN diff
99 was changed to merge overlapping sections.
100 Unfortunately, this change broke the
101 .PN patch
102 program which could no longer interpret the output of
103 .PN diff .
104 Since the change to
105 .PN diff
106 and the
107 .PN patch
108 program had originated outside Berkeley,
109 .SM CSRG
110 had to coordinate the efforts of the respective authors
111 to make the programs work together harmoniously.
113 Once the sources have stabilized,
114 an attempt is made to compile the entire source tree.
115 Often this exposes errors caused by changed header files,
116 or use of obsoleted C library interfaces.
117 If the incompatibilities affect too many programs,
118 or require excessive amounts of change in the programs
119 that are affected,
120 the incompatibility is backed out or some backward-compatible
121 interface is provided.
122 The incompatibilities that are found and left in are noted
123 in a list that is later incorporated into the release notes.
124 Thus, users upgrading to the new system can anticipate problems
125 in their own software that will require change.
127 Once the source tree compiles completely,
128 it is installed and becomes the running system that
129 .SM CSRG
130 uses on its main development machine.
131 Once in day-to-day use,
132 other interoperability problems become apparent
133 and are resolved.
134 When all known problems have been resolved, and the system has been
135 stable for some period of time, an alpha distribution tape is made
136 from the contents of
137 .PN /nbsd .
139 The alpha distribution is sent out to a small set of test sites.
140 These test sites are selected as having a
141 sophisticated user population, not only capable of finding bugs,
142 but also of determining their cause and developing a fix for the problem.
143 These sites are usually composed of groups that are contributing
144 software to the distribution or groups that have a particular expertise
145 with some portion of the system.
146 .NH 2
147 Beta Distribution Development
149 After the alpha tape is created,
150 the distribution filesystem is mounted read-only.
151 Further changes are requested in a change log rather than
152 being made directly to the distribution.
153 The change requests are inspected and implemented by a
154 .SM CSRG
155 staff person, followed by a compilation of the affected
156 programs to ensure that they still build correctly.
157 Once the alpha tape has been cut,
158 changes to the distribution are no longer made by people outside
159 .SM CSRG .
161 As the alpha sites install and begin running the alpha distribution,
162 they monitor the problems that they encounter.
163 For minor bugs, they typically report back the bug along with
164 a suggested fix.
165 Since many of the alpha sites are selected from among the people
166 working closely with
167 .SM CSRG ,
168 they often have accounts on, and access to, the primary
169 .SM CSRG
170 development machine.
171 Thus, they are able to directly install the fix themselves,
172 and simply notify
173 .SM CSRG
174 when they have fixed the problem.
175 After verifying the fix, the affected files are added to
176 the list to be updated on
177 .PN /nbsd .
179 The more important task of the alpha sites is to test out the
180 new facilities that have been added to the system.
181 The alpha sites often find major design flaws
182 or operational shortcomings of the facilities.
183 When such problems are found,
184 the person in charge of that facility is responsible
185 for resolving the problem.
186 Occasionally this requires redesigning and reimplementing
187 parts of the affected facility.
188 For example,
189 in 4.2\s-1BSD\s+1,
190 the alpha release of the networking system did not have connection queueing.
191 This shortcoming prevented the network from handling many
192 connections to a single server.
193 The result was that the networking interface had to be
194 redesigned to provide this functionality.
196 The alpha sites are also responsible for ferreting out interoperability
197 problems between different utilities.
198 The user populations of the test sites differ from the user population at
199 .SM CSRG ,
200 and, as a result, the utilities are exercised in ways that differ
201 from the ways that they are used at
202 .SM CSRG .
203 These differences in usage patterns turn up problems that
204 do not occur in our initial test environment.
206 The alpha sites frequently redistribute the alpha tape to several
207 of their own alpha sites that are particularly interested
208 in parts of the new system.
209 These additional sites are responsible for reporting
210 problems back to the site from which they received the distribution,
211 not to
212 .SM CSRG .
213 Often these redistribution sites are less sophisticated than the
214 direct alpha sites, so their reports need to be filtered
215 to avoid spurious, or site dependent, bug reports.
216 The direct alpha sites sift through the reports to find those that
217 are relevant, and usually verify the suggested fix if one is given,
218 or develop a fix if none is provided.
219 This hierarchical testing process forces
220 bug reports, fixes, and new software
221 to be collected, evaluated, and checked for inaccuracies
222 by first-level sites before being forwarded to
223 .SM CSRG ,
224 allowing the developers at
225 .SM CSRG
226 to concentrate on tracking the changes being made to the system
227 rather than sifting through information (often voluminous) from every
228 alpha-test site.
230 Once the major problems have been attended to,
231 the focus turns to getting the documentation synchronized
232 with the code that is being shipped.
233 The manual pages need to be checked to be sure that
234 they accurately reflect any changes to the programs that
235 they describe.
236 Usually the manual pages are kept up to date as
237 the program they describe evolves.
238 However, the supporting documents frequently do not get changed,
239 and must be edited to bring them up to date.
240 During this review, the need for other documents becomes evident.
241 For example, it was
242 during this phase of \*(b3 that it was decided
243 to add a tutorial document on how to use the socket
244 interprocess communication primitives.
246 Another task during this period is to contact the people that
247 have contributed complete software packages
248 (such as
249 .PN RCS
251 .PN MH )
252 in previous releases to see if they wish to
253 make any revisions to their software.
254 For those who do,
255 the new software has to be obtained,
256 and tested to verify that it compiles and runs
257 correctly on the system to be released.
258 Again, this integration and testing can often be done by the
259 contributors themselves by logging directly into the master machine.
261 After the stream of bug reports has slowed down
262 to a reasonable level,
263 .SM CSRG
264 begins a careful review of all the changes to the
265 system since the previous release.
266 The review is done by running a recursive
267 .PN diff
268 of the entire source tree\(emhere, of
269 .PN /nbsd
270 with 4.2\s-1BSD\s+1.
271 All the changes are checked to ensure that they are reasonable,
272 and have been properly documented.
273 The process often turns up questionable changes.
274 When such a questionable change is found,
275 the source code control system log is examined to find
276 out who made the change and what their explanation was
277 for the change.
278 If the log does not resolve the problem,
279 the person responsible for the change is asked for an explanation
280 of what they were trying to accomplish.
281 If the reason is not compelling,
282 the change is backed out.
283 Facilities deemed inappropriate in \*(b3 included new options to
284 the directory-listing command and a changed return value for the
285 .RN fseek
286 library routine;
287 the changes were removed from the source before final distribution.
288 Although this process is long and tedious,
289 it forces the developers to obtain a coherent picture of the entire set of
290 changes to the system.
291 This exercise often turns up inconsistencies that would
292 otherwise never be found.
294 The outcome of the comparison results in
295 a pair of documents detailing
296 changes to every user-level command
298 Bug Fixes and Changes
300 and to every kernel source file.
302 Changes to the Kernel
304 These documents are delivered with the final distribution.
305 A user can look up any command by name and see immediately
306 what has changed,
307 and a developer can similarly look up any kernel
308 file by name and get a summary of the changes to that file.
310 Having completed the review of the entire system,
311 the preparation of the beta distribution is started.
312 Unlike the alpha distribution, where pieces of the system
313 may be unfinished and the documentation incomplete,
314 the beta distribution is put together as if it were
315 going to be the final distribution.
316 All known problems are fixed, and any remaining development
317 is completed.
318 Once the beta tape has been prepared,
319 no further changes are permitted to
320 .PN /nbsd
321 without careful review,
322 as spurious changes made after the system has been
323 .PN diff ed
324 are unlikely to be caught.
325 .NH 2
326 Final Distribution Development
328 The beta distribution goes to more sites than the
329 alpha distribution for three main reasons.
330 First, as it is closer to the final release, more sites are willing
331 to run it in a production environment without fear of catastrophic failures.
332 Second, more commercial sites delivering
333 .SM BSD -\c
334 derived systems are interested in getting a preview of the
335 upcoming changes in preparation for merging them into their
336 own systems.
337 Finally, because the beta tape has fewer problems,
338 it is beneficial to offer it to more sites in hopes of
339 finding as many of the remaining problems as possible.
340 Also, by handing the system out to less sophisticated sites,
341 issues that would be ignored by the users of the alpha sites
342 become apparent.
344 The anticipation is that the beta tape will not require
345 extensive changes to either the programs or the documentation.
346 Most of the work involves sifting through the reported bugs
347 to find those that are relevant and devising the minimal
348 reasonable set of changes to fix them.
349 After throughly testing the fix, it is listed in the update log for
350 .PN /nbsd .
351 One person at
352 .SM CSRG
353 is responsible for doing the update of
354 .PN /nbsd
355 and ensuring that everything affected by the change is rebuilt and tested.
356 Thus, a change to a C library routine requires that the entire
357 system be rebuilt.
359 During this period, the documentation is all printed and proofread.
360 As minor changes are made to the manual pages and documentation,
361 the affected pages must be reprinted.
363 The final step in the release process is to check the distribution tree
364 to ensure that it is in a consistent state.
365 This step includes verification that every file and directory
366 on the distribution has the proper owner, group, and modes.
367 All source files must be checked to be sure that they have
368 appropriate copyright notices and source code control system headers.
369 Any extraneous files must be removed.
370 Finally, the installed binaries must be checked to ensure that they correspond
371 exactly to the sources and libraries that are on the distribution.
373 This checking is a formidable task given that there are over 20,000 files on
374 a typical distribution.
375 Much of the checking can be done by a set of programs set to scan
376 over the distribution tree.
377 Unfortunately, the exception list is long, and requires
378 hours of tedious hand checking; this has caused
379 .SM CSRG
380 to develop even
381 more comprehensive validation programs for use in our next release.
383 Once the final set of checks has been run,
384 the master tape can be made, and the official distribution started.
385 As for the staff of
386 .SM CSRG ,
387 we usually take a brief vacation before plunging back into
388 a new development phase.