BSD 4_3_Net_2 release
[unix-history] / usr / src / share / doc / usd / 11.notes / c.changes
CommitLineData
af359dea
C
1.\" Copyright (c) 1980 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.\" @(#)c.changes 6.2 (Berkeley) 4/17/91
95f51977
C
33.\"
34.ls 1
35.ap C "Distributed Revisions of the Notesfile System"
36
37 Several revisions of the Notesfile System are available.
38This appendix attempts to describe the differences between
39each revision and the previous one.
40
41.a1 "Previous Revisions"
42
43 The Notesfile System was first distributed in June 1982.
44Since then it has gone through a number of internal revisions
45and several major revisions.
46The initial 1.0 revision had numerous bugs in the code and
47inadequacies for interfacing with the news system.
48Release 1.3 (the most recently ``announced'' release)
49became available in March 1983.
50
51 Revisions are maintained with the RCS system.
52Major releases are number 1.1, 1.2, 1.3 ... 1.x.
53Internal modifications are numbered off of the base revision.
54Internal revisions between 1.2 and 1.3 are of the form
551.2.1.x.
56All files in a distribution will have the same major
57revision number; files modified since the major
58release will an internal revision number based off the major
59revision number.
60
61.a1 "Revision 1.5"
62
63 Revision 1.5 is an intermediate revision.
64Revision 1.4 was stillborn.
65It's primary purpose was to integrate a number of useful
66modifications sent in by notesfile users.
67A number of recent 1.5+ distributions have almost the same
68functional differences from previous revisions as the newer
69revision 1.6 code.
70
71.a1 "Revision 1.6"
72
73 Revisions 1.6 of the Notesfile system includes a number
74of changes. Numerous bugs in the code were repaired.
75Several functional differences are also evident in
76this revision of the code.
77Major changes are listed below in chronological order.
78To see what has changed since you received your copy of the code,
79find the first date after you received your distribution
80and read from there.
81
82Fall 1983:
83
84.bx
85.ix
86Archival techniques are more refined.
87Previous revisions determined the age at which to expire notesfiles
88from the nfarchive command line.
89Each notesfile now contains its own `expiration threshold'.
90This threshold can be set to an arbitrary time (3 days),
91default to the value specified on the nfarchive command line,
92or
93specify never to archive the notesfile.
94These options allow expiration of the entire ``net.*'' collection
95of notesfiles with the single command line `nfarchive net.*'.
96Shorter duration notesfiles (maybe net.jokes) can be explicitly
97set to a few days; notesfiles like net.bugs can be set to `never'.
98The remaining notesfiles might be set to `default'.
99A program `expirechange' is provided in the utility subdirectory
100of the distribution to initialize the expiration threshold of
101existing notesfiles.
102This is recommended because the previously
103unused field may contain garbage values.
104.ix
105A simple program `namechange' is included in the utility
106directory to change the name within the data base. If you
107pick up copies of the data base and set them down on
108other systems this program will change the name of the system
109the data base thinks it is on for you.
110.ix
111Alignment within the notesfile descriptor structure caused
112me to remove 6 bytes of filler when adding a `long' to the
113structure.
114The size of the structure must be constant.
115The program in utility/structsizes.c prints the sizes of
116each of the possibly affected structures.
117It would be prudent to compile and execute this program
118once with the old structure definitions and once with the
119new definitions to ensure that the structures are the same size.
120Someday a notesfile dump/load program will be written that
121makes this worry disappear.
122.ix
123Mapping notes out to the news system is more sophisticated.
124The new scheme allows a notesfile to send base notes to
125one newsgroup and responses to another newsgroup.
126This is solely for the net.general/net.followup pair.
127See the section ``Copying Notesfiles to News'' for a
128more detailed explanation of this feature.
129.ix
130Binaries are portable.
131With Unix kernels supporting the ``uname'' or ``gethostname''
132system call the code determines the host at runtime.
133The code now also looks for the notesfile owner in /etc/passwd
134to dynamically determine the `notesuid'.
135As an example, a local network of Vaxen all running 4.1a Bsd
136can run the same binary even if the `notes' user id
137varies between machines.
138Eventually it would be nice to have a single binary handle all
1394.1a Vaxen, another for all 4.2 Vaxen, a third be adequate
140for all USG 5.0 3b-20's.
141(This does not mean that distributions will be binary only
142but rather that a local administrator will be able to compile
143once and ship copies of the binaries around with a simple shell
144script).
145.ix
146The ``rinstall'' shell script updates the notesfile binaries
147on a remote system.
148It assumes that the local binaries will work on the remote
149machine (don't rinstall from a Vax to a PDP-11).
150The script uses the 4.1a `rcp' and `rsh' facilities to
151perform the FTP and set modes on the remote files.
152.ex
153
154December 1983:
155
156.bx
157.ix
158Notesfiles can be specified as absolute pathnames.
159Commands such as ``notes /some/place/mynotes''
160are now legal.
161An anticipated modification will allow search rules for
162notesfiles similar to those command search rules used
163by many shells.
164.ix
165Archives are stored as notesfiles.
166Now that a notesfile can be specified by an absolute
167pathname, archives are stored in notesfile format.
168Access to archives can be either by explicit reference
169or through the new ``N'' command which automatically
170nests to the archive of the current notesfile.
171.ix
172Nfarchive now understands about ``working sets''.
173The working set is the minimum number of notes left in
174the active notesfile after an archive run.
175.ix
176Archive destinations are mapped.
177A file in the notes utility directory (.utilities/net.aliases/Archive-into)
178maps from active notesfiles to their respective archives.
179This file contains absolute pathnames.
180(/usr/spool/notes/somenotes instead of somenotes).
181.ix
182The beginnings of permission modes for an archive are there.
183Currently only directors are allowed to write in an
184archive notesfile.
185Some more work on copying permission lists and
186other information particular to the notesfile must be done.
187.ix
188The director page now contains information about
189the number of ``holes'' (deleted notes and responses)
190in a notesfile.
191This is useful for determining the need to compress a
192notesfile.
193.ex
194
195January 1984:
196
197.bx
198.ix
199Each notesfile can now override the nfarchive command line options
200for archiving/deleting expired notes and for expiring notes
201on the basis of the director message status.
202The director options page offers options to modify these fields.
203The ``default'' value specifies using the value supplied on
204the nfarchive command line.
205.ix
206The director option page has been rearranged. More information is
207displayed, more options are processed.
208Many of the changes are cosmetic and oriented towards helping
209the user figure out what is happening.
210.ix
211The 4.2 Bsd release of Unix now has its own kernel definition.
212Some of the new features of 4.2 Bsd are thus included.
213This includes longer filenames and (faster) advisory locking.
214.ix
2154.2 Bsd (and 4.1a) allow processes to belong to
216multiple groups.
217The notesfile code now uses all of these groups to
218determine access rights.
219For example, a user belongs to
220groups ``alpha'', ``beta'' and ``gamma''.
221Group ``alpha'' has read permission, group ``beta'' has
222write permission, and group ``gamma'' has no specific
223permissions (it's covered in the ``Other'' clause).
224The user is given the inclusive OR of his permissions:
225in this case he is given read/write privileges.
226The default ``Other'' group is used only when none of the
227user's groups are explicitly named in the permission list.
228Explicit permissions for users still takes precedence
229over group permissions.
230.ex
231
232February 1984:
233
234.bx
235.ix
236The networking software and the statistics printing package
237now keep track of how many orphans are adopted by their true
238parent.
239This lets us determine how many base notes are actually lost
240and how many show up behind their children.
241.ix
242The nfaccess program
243allows simple and quick editing of access lists for a number
244of notesfiles.
245Nfaccess functions similarly to chmod(1),
246you supply an access right and a list of notesfiles to apply it
247to.
248The new access right is placed in the access list of each notesfile
249specified.
250In the event of an existing access right, the new right replaces
251the old one.
252.ix
253The code now understands about the extra work it must to
254to function properly under the 4.2 Bsd signal semantics.
255.ix
256Nfabort provides user programs with a means of
257leaving core dumps in specified places and logging
258the fact with an arbitrary message in a notesfile.
259The notesfile code itself uses this routine when trapping
260internal errors.
261.ix
262Finally added the `l', `L' and `z' commands from Lou Salkind
263and Rick Spickelmier.
264The `l'-`L' pair mimic the `j'-`J' pair with the exception that
265when no unread notes are left, the l/L commands leave the notesfile.
266Thus `l' is almost a `jq' command.
267.ix
268The ! notesfile exclusion feature first implemented by Salkind
269and Spickelmier is now in this revision.
270Constructs like:
271.br
272 notes ``net.*'' !net.general
273.br
274are possible.
275This example specifies all ``net.'' notesfiles except net.general.
276.ix
277Alternate sequencers are now available. An alternate
278sequencer allows users sharing the same signon to maintain
279separate sequencer files.
280.ex
281
282March 1984:
283
284.bx
285.ix
286Revision 1.6.2 created. Needed some distinction since 1.6 was
287getting rather long lived and we weren't ready to call it
2881.7 yet.
289.ix
290Each notesfile now enforces its own
291limit on the size of single notes and responses.
292This is initialized to a default value when the notesfile is
293created and can be changed from the director options page.
294Articles longer than the permitted maximum are truncated and
295have a message appended detailing how many bytes were ignored
296and the name of the site where it occurred.
297.ix
298Customized access lists are generated when each notesfile is created.
299The file `/usr/spool/notes/.utilities/access-template', if it
300exists, is used to modify the default access list when a notesfile
301is created. This file contains ASCII specifications of access rights
302in the same form as used on the nfaccess command line. Lines in
303this file beginning with `#' are considered comments.
304.ix
305Author searching now understands about substrings. You no longer
306have to match exactly an author.
307Thus an author search would find articles written by
308a user ``mark'' on any machine,
309a user ``hallmark'' on any machine,
310and
311any user on the ``market'' machine.
312.ix
313The notes/news interface has been rewritten.
314The news->notes code now understands all of the USENET standards
315for B-news 2.10.
316Newsinput understands about the References line.
317The notes->news code generates articles acceptable to the
318rest of USENET.
319.ex
320
321December 1984:
322
323.bx
324.ix
325The nfmail
326program has been re-written to understand about how to link
327responses into a notesfile. This means nfmail is now a viable
328way to have your incoming mail handled. After a little
329more work is done, it will handle outgoing mail via the ``p''
330command equaly well.
331.ix
332Notes now runs set-gid. This solves some privilege problems
333with set-uid programs such as signal delivery. It also
334makes it easier for users to kill their jobs.
335Thanks go to Lou Salkind for pointing this out long ago; I
336just took a long time to realize it.
337.ex
338
339.a1 "Revision 1.7"
340
341 The long ago promised revision 1.7 of the notesfile
342code is finally a reality.
343This version incorporates many of
344the features promised, and a few that weren't.
345I thought about merely changing things from revision 1.6.2 to
3461.6.3, but there was a change in the database format and I
347decided a more drastic change in name was called for to match
348the database format change.
349
350 To upgrade to revision 1.7 from a previous revision (even
351the last 1.6.2 revisions) requires a dump/load sequence with
352the ``nfdump'' and ``nfload'' programs. The man pages for
353these programs give more information on how to carry out this
354procedure.
355
356 In addition to changing the format of the notesfile
357database, you must convert the format of the sequencer files.
358To do this, look at the programs ``seqtoascii'' and ``seqtobinary''
359in the ``utility/seq-cvt'' directory of the notesfile distribution.
360Appendix A also contains information on how to convert the
361sequencer files and database.
362
363 These changes took place during December of 1984 and
364include the following differences from the 1.6.2 revision of
365the notesfile code.
366
367.bx
368.ix
369The author structure for a note/response now contains the home system
370name.
371This provides the ability for gateway machines
372to assign message-id's as needed without worrying about corrupting
373the author's home system.
374It also comes in handy within the context of the nfmail
375program: nfmail can now report a true author for letters
376and still assign a unique identifier based on the local system.
377.ix
378Timestamps for articles are now stored in the standard UNIX
379format: seconds since 00:00 GMT, January 1, 1970.
380The code recognizes (and stores) both formats and will present
381either format as needed.
382.ix
383Notes now supports full domain based addressing.
384The nfxmit program expects a full doman address (e.g., ``uiucdcs.uiuc.arpa''),
385unique id and system information is generated with full domain
386information,
387and
388the notesfile/news gateway now generates complete domain addressing
389information.
390.ft B
391These changes require some care in upgrading from previous releases
392of the notesfile system.
393.ft P
394.ex
395
396.a1 "On the Blackboard"
397
398 The primary motivation for more work on the code
399is to eliminate known bugs.
400Integrating other's modifications into my code has taken
401a lower priority.
402
403 Sometime down the road, I hope to gather up all the
404lessons learned from this first version
405and
406design a second implementation.
407Issues to be considered in the second implementation include:
408shared notesfile data bases between several hosts,
409different user-interfaces (notes-like, readnews-like),
410notesfile servers,
411and
412interfacing with extant systems.