LastEditedDiscussion.mail
 22-Feb-90 Mike Spreitzer SUMMARY 1-1: "Last Edited" lines Discussion
Date: Thu, 22 Feb 90 09:05:42 PST
Sender: Mike Spreitzer:PARC:Xerox
Subject: SUMMARY 1-1: "Last Edited" lines Discussion
To: PCedarUsers^:PARC:Xerox
Cc: Mike Spreitzer:PARC:Xerox
Reply-To: PCedarImplementors^:PARC:Xerox

[This is part 1 of 2, due to limits on XNS message length.]

This discussion is trying to determine how last-edited lines should look and be updated. It was sparked by an announcement that Tioga for PCedar2.0 now implements something. That something seems to be this: on RedSave and RedStore (Red means Left Mouse Button, you know), Tioga will add a comment line of the form "<user name> <time>" to the list of comments at the beginning of a file. If there already is a comment line containing <user name> and a <time>, instead of adding a new line Tioga will change that time to the current time. The <user name> is taken from a UserProfile entry, which should look like

 Tioga.LastEdited: "Doug Wyatt,"

(if you're Doug Wyatt, anyway). Actually, it looks to me that the <user name> can be any string at all, and is the only avenue through which text other than a date will make it into a last-edited line. Thus some people may end up having entries like

 Tioga.LastEdited: "Last edited by Joe Bloe on "

The default value for that profile entry seems to be Rope.Cat[CapitalizeTheFirstCharacter[SystemNames.UserName[]], ","]. Most of these details I determined from a quick inspection of the code ([PCedar2.0]<Tioga>TiogaComfortsImpl.mesa), and so may be somewhat wrong; I trust someone will set me straight if I have erred.

The following concerns were contributed [comments in square brackets are mine --- Mike]:

It was suggested that each save move its last-edited line to the end of the list, to facilitate determining who touched it last. In fact, over time, this leads to the list being sorted by time. I support this suggestion.

I suggested that the standard last-edited line include some text other than name and date. For example, "last edited by". Due to the diversity of names and time formats, some additional, fixed, text would make recognizing and parsing these lines much easier.

Eric Bier proposed that "the last-edited line [I think he meant the <user name>] should, in general, be your login name", gave "Wyatt" as an example, and claimed that "in packages with many implementors, this makes it relatively easy to scan for a particular implementor". It was unclear to me (MJS) whether he meant UNIX username, XNS distinguished name, UserCredentials.Get, SystemNames.UserName, or what; this detail is the subject of later debate. Others supported the idea that we should make it easy to scan for implementors and determine ownership.

Jim Foote pointed out that
SSU's guidelines for product code are that no names should appear in
the source code - initials are ok, but there's some kind of legal issue
with putting implementor's names in source code.

Tom Wills, in a private message to me, said that in Sunnyvale they use a hack called "textedit2", which uses the unix username. He seemed to suggest that it's important for people working in various groups to be able to set the <user name> according to rules established for those groups. One question this raises is: what are the different rules in use now? Another is, what rules are conceivably reasonable for the future? I think the most important fact yet to be revealed in this debate is: what are the constraints that various organizations will want to put on last-edited lines. Speak up!

A couple of people barfed on the thought that we ourselves would use initials. One suggestion was to look into carefully into SSU's guidelines, to see if there is still a good reason to forbid names. Another was to find a way to "do things right" internally [to PARC? to Xerox?] in a way that makes it easy to change them on the way out the door. A big split in the ways of doing things right is whether to use in-band or out-of-band methods to mark the last-edited lines (a) to identify them as such, and possibly even (b) indicate the initials to use. Tioga's node and character properties provide a great way to do out-of-band marking.

It was observed that the diversity of existing last-edited lines, such as
 Plass, December 20, 1983 12:56:24 pm PST
 Michael Plass, December 20, 1989 12:56:24 pm PST
 Last edited by plass, December 20, 1990 12:56:24 pm PST
makes it problematical to automatically establish order. I think that should not prevent us from adopting a more orderly method --- we can stamp out by hand whatever disorder presents real problems (eg, names where none are allowed) and cannot be removed by program. Looking at those examples, I don't think they are VERY difficult to automatically recognize as last-edited lines.

The traditional complaint about the obscurely documented and baroque decoding of mouse buttons and control and shift keys on menu picks was raised. Several people said they thought we'd already reached a consensus that menu entries should behave like PopUpButtons, but we just haven't had the programmer time to make it happen.

The difficulty with in-band methods is that there are a great many different comment conventions used in the various languages we deal with. Michael Plass submitted this list of example comments:
 -- Michael Plass, December 20, 1989 12:56:24 pm PST
 -- Michael Plass, December 20, 1989 12:56:25 pm PST --
 /* Michael Plass, December 20, 1989 12:56:26 pm PST */
 # Michael Plass, December 20, 1989 12:56:27 pm PST
 ;;; Michael Plass, December 20, 1989 12:56:28 pm PST
 (* Michael Plass, December 20, 1989 12:56:29 pm PST *)
 << Michael Plass, December 20, 1989 12:56:30 pm PST >>
 % Michael Plass, December 20, 1989 12:56:31 pm PST
 comment Michael Plass, December 20, 1989 12:56:32 pm PST;
 C Michael Plass, December 20, 1989 12:56:33 pm PST
 * Michael Plass, December 20, 1989 12:56:34 pm PST
It looks to me like the languages they come from are (in order): Cedar/Mesa, Cedar/Mesa, C, csh, LISP, Pascal, Cedar/Mesa, TeX, something I can't identify, FORTRAN, and something else I can't identify. I suggested two ways to handle this difficulty: (1) via a registry that assocates comment convention with filename extension (will these documents always come with "file names"?), and (2) use some heuristics to scan the first few lines of the file and see if the "look like comments" and if so determine the relevent comment convention.

The difficulty with out-of-band methods is that we'd like to manipulate non-Tioga files; I think we'd even like to be able to share maintainership with non-Tioga-using institutions. The places where it's most tempting to use out-of-band methods --- that is, where you've got some really strange comment convention for some really strange foreign file format --- are where you're least likely to be able to use a Tioga file.

[Continued...]
 22-Feb-90 Mike Spreitzer SUMMARY 1-2: "Last Edited" lines Discussion
Date: Thu, 22 Feb 90 09:06:58 PST
Sender: Mike Spreitzer:PARC:Xerox
Subject: SUMMARY 1-2: "Last Edited" lines Discussion
To: PCedarUsers^:PARC:Xerox
Cc: Mike Spreitzer:PARC:Xerox
Reply-To: PCedarImplementors^:PARC:Xerox

[Continued from SUMMARY 1-1.]

I suggested that in order to facilitate translation at a later date of names to initials, the <user name> entered on the last-edited line should NOT be taken from the user profile, but rather from some officially maintained database, such as Grapevine, ClearingHouse, the yellow pages, or an /etc/passwd file. If names were taken only from officially maintained databases, that makes it more likely that when it comes time to construct the <user name>-to-initials mapping the set of <user name>s will be relatively easy to enumerate and determine initials from.

Upon review, however, this seems not so important to me: the process of translating last-edited lines on the way out the door will have to be prepared for a <user name> it doesn't yet recognize, because of the existing chaos. One might expect that this process would then ask a person for the initials to associate with that <user name> and then store this association in a globally accessible database (so it never has to ask anyone about that <user name> again). Given a process that learns like this, I expect the learning curve would be very steep initally, and have a long almost-flat tail, regardless of whether or not we regularize the <user name>s added henceforth against officially maintained databases.

Michael Plass suggested the hybrid method of requiring a user profile entry, XNS.UserName, whose value matches the value in a particular database, the Clearinghouse; the value of this profile entry would also be taken as the <user name> for last-edited lines. Actually, since the Clearinghouse supports aliases, this method allows a well-delimited range of choices for <user name> (ie, the distinguished name and all the aliases). He claimed the following advantages:

 The format of the edited-by lines can be standardized.
 TiogaComforts won't need to make a data-base query.
 You won't have to type a name to XNSLogin (just a password).
 The name-to-identity data base already exists and is maintained.
 There is still room for folks to have a preference about how their name
  appears, without being hampered by antedeluvian unix restrictions.
 There's very little programming that needs to be done to implement it.

I see these disadvantages:

 Some people (such as myself) go for long periods of time without doing
  an XNS login --- such people could thus have erroneous user
  profile entries without knowing it, and thus enter "junk" into
  last-edited lines.
 This commits PCedar to having access to a Clearinghouse; we may
  not want to require this of all future sites that run PCedar. Yeah,
  it doesn't exactly "commit"; access to a Clearinghouse is only
  necessary to enable autmatic checking of the regularity of <user
  name>s --- against Clearinghouse (it could conceivably be checked
  against something else at other sites --- but who'd be tasteless
  enough to check a profile entry named "XNS.UserName" against
  some other database?)


Please let me know if I've left anything out or misrepresented anything. Send fuel for the fire to PCedarImplementors^:PARC:Xerox. I'm particularly interested to hear what other organizations require and what they prefer (distinguished, if reasonable) from last-edited lines. Further summaries and an eventual resolution will be posted to PCedarUsers^:PARC:Xerox.

     Respectfully Submitted,
     Mike Spreitzer
 22-Feb-90 Michael Plass Re: SUMMARY 1-1: "Last Edited" lines Discussion (trivia)
Date: 22 Feb 90 10:08:50 PST
In-reply-to: "Mike Spreitzer:PARC:Xerox's message of Thu, 22 Feb 90 09:05:42 PST"
Sender: Michael Plass:PARC:Xerox
Subject: Re: SUMMARY 1-1: "Last Edited" lines Discussion (trivia)
To: PCedarImplementors^:PARC:Xerox
Cc: Michael Plass:PARC:Xerox

re: [comment conventions] I can't identify

comment Algol 60, SAIL;

Also:
% TeX, JaM (hence Tioga syles), and PostScript

two I missed:
{pascal}
« mesa - these are 8-bit codes! »
 22-Feb-90 Mike Spreitzer Last-Edited suggestion
Date: Thu, 22 Feb 90 09:27:01 PST
Sender: Mike Spreitzer:PARC:Xerox
Subject: Last-Edited suggestion
To: PCedarImplementors^:PARC:Xerox
Cc: Mike Spreitzer:PARC:Xerox
Reply-To: PCedarImplementors^:PARC:Xerox

The last-edited lines invented henceforth by Tioga say "Last edited by <user name> on <time>.", with comment brackets/property as done now. Any existing comment line at the beginning of a file containing <user name> and a <time> will be recognized as a last-edited line and have its <time> updated. The <user name> text is taken from the "Tioga.LastEditedUserName" user profile entry, whose value defaults to SystemNames.UserName[].

By reasoning outlined in my SUMMARY 1 messages, I think this does not seriously hamper the translation process, if we ever have to perform it. The use of the user profile allows organizations with constraints not satisfied by the default to satisfy their constraints.

Does this satisfy everyone (at least with regards to the issues it addresses; the problem of diversity of comment convention seems orthogonal)?

Mike
 22-Feb-90 Michael Plass Re: Last-Edited suggestion
Date: 22 Feb 90 10:23:28 PST
In-reply-to: "Mike Spreitzer:PARC:Xerox's message of Thu, 22 Feb 90 09:27:01 PST"
Sender: Michael Plass:PARC:Xerox
Subject: Re: Last-Edited suggestion
To: PCedarImplementors^:PARC:Xerox
Cc: Michael Plass:PARC:Xerox

Shall we say "Edited by" instead of "Last edited by"? I've never liked
the "Last", at least for implementors who are still alive. Also "Edited
by" is probably closer to the truth, in a world where the lines may, on
occasion, not get updated. (I'd rather skip the extra verbiage, but I'm
willing to give that up to make pattern recognition simpler.)

I'd like to repeat my wish that the updated Edited-by line be moved to
the end of the group.