Annotation of 43BSD/contrib/notes/doc/c.changes, revision 1.1.1.1

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.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.