|
|
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.