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