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