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