NewsWatcher 2.2 =============== January 22, 1998 NewsWatcher version 2.2 is now available at: <ftp://ftp.nwu.edu/pub/newswatcher/> NewsWatcher is a free Usenet newsreader for the Macintosh. The reason for this release is to bring NewsWatcher into compliance with version 2.0 of the "Good Net-Keeping Seal of Approval". Here's a summary of the changes, which are described in more detail later. Provide clear, separate commands for new posting, followup, and e-mail reply: Rename "New Message" command to "New Posting". Replace "Reply" command by "Followup via Posting" and "Reply via Email". Dynamically adjust "Send" button title and "Send Message" command title to more accurately reflect mail vs. post vs. mail and post actions. Improve large cross-posting checks, decrease absolute limit from 50 to 20 groups, and strongly suggest using "Followup-To" on large cross-posts. Alert on "Followup-To: poster". Improve checking and truncation of "References" header. Prohibit posting and mailing by default. Don't quote standard signatures in followups and email replies. Improve "From" header syntax checking of email address and full name. McQuary limit: Signatures cannot exceed 4 lines of 80 chars each. We expect that some people will object to the new McQuary limit on signatures. That's too bad, but the limit is there for a good reason, and we will not change it. If you insist on using an excessively long signature, you will have to continue using an old version of NewsWatcher or switch to some other program. Because of these changes, this new version of NewsWatcher has been awarded the Good Net-Keeping Seal of Approval. The GNKSA seal is proudly displayed in NewsWatcher's about box. We have also implemented support for the "Mail-Copies-To" header. In addition, we have fixed a few errors and made a few other minor changes. Please note that this does _not_ signal a return on my part (John Norstad) to major active NewsWatcher development. I retired from this a few years ago, and I plan to stay retired! As before, I will continue to try to maintain the program (fix bugs and do minor maintenance), and I'll try to answer questions about it, but that's all. Also please note that this is a new release of my "plain" NewsWatcher program, not the enhanced versions (VA-NW, YA-NW, and MT-NW). The authors of the enhanced versions may or may not incorporate my new code into their versions. That decision is up to them. This is a maintenance release, not a major feature release. However, because this version is not just bug fixes, and because several important features have changed, we felt that the version number 2.1.6 merited an increase in the second position. Hence, this version is numbered "2.2", not "2.1.7". Good Net-Keeping Seal of Approval ================================= The "Good Net-Keeping Seal of Approval", or "GNKSA" for short, is a document defining "minimal standards for decent net-behaviour, to encourage newsreader authors to write better behaving newsreaders." The current version 2.0 of the GNKSA is available at: <http://www.xs4all.nl/%7Ejs/gnksa/> While NewsWatcher 2.1.6 came quite close to conforming to the GNKSA, it failed to fully or properly implement several of the requirements and recommendations. Version 2.2 of NewsWatcher rectifies these problems so that it is in full compliance with all of the MUST requirements of the GNKSA, and so that where reasonable and feasible it also satisfies more of the SHOULD recommendations of the GNKSA. In each of the sections which follow, we begin by quoting the relevant text from the GNKSA document. This quoted text is indented. Then we discuss how NewsWatcher 2.1.6 failed to properly implement the feature in question and how NewsWatcher 2.2 fixes the problem. Please note that the text we quote below from the GKNSA is incomplete. We encourage you to consult the full version available at the address given above if you have any questions about these issues. We also mention another document named "son-of-1036". This document is an attempt to define a more modern version of the Internet standard RFC 1036. It defines how Usenet news articles are formatted and transmitted over the Internet. While son-of-1036 never became a formal standard, it is widely regarded as a "de-facto standard" within the Usenet standards community. This document is available at: <ftp://ftp.zoo.toronto.edu/pub/news.txt.Z> Thanks to John Moreno and Jeroen Scheerder for their help in discussing and designing all of these GNKSA changes. 2) Provide clear, separate commands for new posting, followup, and e-mail reply ------------------------------------------------------------------- The software MUST provide separate, clearly distinguished commands to do each of the following: a) Post a new article, unrelated to any existing one, whose Subject is to be supplied by the user, and which has an empty or missing References: header line. b) Post a followup article, with Subject, Newsgroups, and References header lines derived appropriately from the original article. c) Reply by e-mail, with "Subject: " and "To: " headers derived appropriately from the original article. Rationale: Users who post followups when they should send e-mail replies, or vice versa, seem to be an endemic problem. They are almost always using software that doesn't make the difference clear, or doesn't even provide both commands. NewsWatcher 2.1.6 used the generic command "Reply" (Command-R) for both public followups and private email replies. While the news and mail icon controls at the top of the message window were reasonably clear, and all of the various headers were handled properly, this was not good enough. It is very important that we do everything possible to distinguish between public and private correspondence. NewsWatcher 2.2 has separate commands "Followup via Posting" and "Reply via Email". "Followup via Posting" opens the message window with the news icon checked and the mail icon unchecked. It has the command key shortcut Command-R. "Reply via Email" opens the message window with the news icon unchecked and the mail icon checked. It has the command key shortcut Command-K. We have also renamed the "New Message" command to "New Posting". The command key remains the same: Command-N. To further help reduce confusion, the "Send" button in message windows is now titled appropriately depending on which icons are currently checked: Post as news Send as email Mail copy to self Button title Checked Unchecked anything Post Unchecked Checked anything Mail Checked Checked anything Send Unchecked Unchecked Checked Mail Unchecked Unchecked Unchecked Send (also disabled) Similarly, the "Send Message" command in the "News" menu is now adjusted to read "Post Article", "Mail Message", or "Send Message", depending on the current state of the message window icon controls. Because we now have separate commands for followups and replies, we have removed the two preferences "Reply via posting" and "Reply via email" from the "Message Options" preferences topic. This is a rather major change. People who already use NewsWatcher will have to get used to the new commands and command keys. For this reason, the first time you run the new version of the program, a dialog is presented warning you about the change and explaining it. The "Forward" command no longer has a command key. It used to be Command-K, but we now use that for the new "Reply via Email" command. 3) Provide cross-posting functionality -------------------------------------- Posting software SHOULD prevent the user from excessive cross-posting, or at least warn against it. If posting to a very large number of groups, the user SHOULD either be forced or strongly suggested to set a "Followup-To" header. Such a header must be subjected to restrictions that are at least as strict as those imposed on "Newsgroups: ". NewsWatcher 2.1.6 warned against posting to more then 5 groups and prohibited posting to more than 50 groups. The checks, however, were not done in all contexts, only in the most commonly used ones. It was possible to bypass them. The "Followup-To" header was also checked for the same limits, but again, only in some contexts, not all. The program did not force or strongly suggest a "Followup-To" header. NewsWatcher 2.2 warns against posting to more than 5 groups and prohibits posting to more than 20 groups. Note that the absolute limit has been decreased from 50 to 20, while the warning limit remains the same. The checks are now done in all contexts, and the "Followup-To" header is also properly checked in all contexts. NewsWatcher now strongly suggests using a "Followup-To" header on all cross-posts to more than 5 groups. In this case, in addition to presenting an alert, if necessary, the message window is switched to the detailed view so that the text entry field for "Followup-To" is visible. 6) Direct followups to the correct newsgroups --------------------------------------------- If the original article's "Followup-To: " header is set to "poster", the software MUST warn the user that the original poster requested an e-mail reply, and generate an e-mail reply by default. NewsWatcher 2.1.6 properly generated an e-mail reply by default (it opened the message window with the news icon unchecked and the mail icon checked). However, it did not warn the user when it did this. NewsWatcher 2.2 issues a note alert whenever this happens. 7) Make sure followups contain valid References ----------------------------------------------- ... keep as many Message-IDs as will fit in under 998 characters, unwrapped. Exception: Damaged (truncated) Message-IDs SHOULD NOT be included. (from son-of-1036): ... to shorten the header, ..., a followup agent MAY do this by deleting some of the message IDs. However, it MUST not delete the first message ID, the last three message IDs (including that of the immediate precursor), ... NewsWatcher 2.1.6 truncated "References" headers that were longer than 1000 characters by removing message ids from the beginning of the header, including the first one. It did not check for or delete damaged message-ids. NewsWatcher 2.2 checks for and deletes all syntactically invalid (damaged) message ids, including (but not limited to) truncated ids. The syntax rules used by NewsWatcher for message ids are those defined by son-of-1036. If the resulting "References" header is 998 characters or longer, it is shortened by repeatedly deleting the second message id in the list until it is less than 998 characters in length. 9) Allow the user to change her mind about whether to post or mail ------------------------------------------------------------------ If the software has the option to post as well as mail a single response, that option MUST NOT be default behavior, neither by factory default nor by user-configuration. In NewsWatcher 2.1.6, if you set both the "Reply via posting" and the "Reply via email" options in the "Message Options" preferences topic, you got posting as well as mailing by default. Both of these options have been removed in NewsWatcher 2.2, so this is no longer possible. Note that it is still possible to post and email in NewsWatcher, by turning on (checking) both the news and mail icons in a message window. This must be done individually for each message, however. It is no longer possible to specify this as NewsWatcher's default behavour. 10) Provide adequate quotation and attribution facilities --------------------------------------------------------- Included text SHOULD NOT contain the original article's signature, unless by explicit request of the user (under the condition that the signature can be determined of course, which is to say: if clearly separated by the standard signature delimiter). As a direct counterpart to this requirement, the software SHOULD offer the user some means of selecting exactly which part of a Usenet posting she wishes to followup to, and quote only that part initially. (A special case of this is when a user wishes to react to what's in a signature.) NewsWatcher 2.1.6 included signatures when it quoted the entire body of an article for a followup or email reply. NewsWatcher 2.2 no longer quotes signatures which are separated from the article body using the standard delimiter ("-- " on a line by itself). Note that this rule does not apply when you select specific text to be quoted and use the Shift modifier key with the "Followup via Posting" or "Reply via Email" command. It only applies when the entire article is being quoted. Thus, you can still quote signature text if you wish. It's just no longer the default behaviour of the program. You can also still quote the entire body including the signature by selecting it with the "Select All" command, then using Shift-"Followup via Posting" or Shift-"Reply via Email". In NewsWatcher's "Signature" preference topic, we added the phrase "strongly recommended" next to the checkbox for adding the standard separator line "-- ". Also note that this standard separator line is NewsWatcher's factory default. 12) Provide a valid "From: " header ----------------------------------- When creating either a new article or a followup, the software MUST initialize the "From: " header to a syntactically valid e-mail address, which includes a fully-qualified domain name (FQDN). If the software allows the user to edit the "From: " header, it SHOULD check that the user supplied a syntactically valid address. If the software is unable to create such an address -- maybe because it was built with incorrect configuration parameters, or some essential parameter is unavailable at runtime -- then it MUST NOT allow posting at all, unless it can obtain a syntactically valid e-mail address from the user. NewsWatcher 2.1.6 did have a syntax check to catch common kinds of typing errors in email addresses, but the check was not strong enough. For example, "(bad@bogus.com)" and "(bad)@(bogus.com)" were both considered to be legal, but they are not. NewsWatcher 2.2 now does a complete syntax check of the email address, using the full rules defined in son-of-1036 and the GNKSA. This check is performed in two contexts: whenever you try to change your email address in NewsWatcher's "Personal Information" preferences topic, and whenever NewsWatcher uses this preference value to construct a "From" header line for a news posting or a mail message (at message send time). The latter check catches the less common situation where a bogus email address might come from some other source like Internet Config or a previous version of NewsWatcher. The latter check also guarantees that under no circumstances does NewsWatcher 2.2 permit posting an article or sending an email message with a syntactically invalid email address in the "From" header. In addition to your email address, your full name is also used to construct "From" header lines. NewsWatcher uses the format "emailaddr (full name)" for the "From" header. Son-of-1036 imposes some restrictions on the full name in the this format. In particular, the full name must not contain any of the following characters: ()<>\. NewsWatcher now checks your full name to make certain it doesn't contain any of these characters, in all the same contexts described above where your email address is checked. 15) Separate signatures correctly, and don't use excessive ones --------------------------------------------------------------- To quote son-of-rfc1036: ...Posting agents SHOULD limit the length of signatures, since verbose excess bordering on abuse is common if no restraint is imposed ... Hence, posting software MUST prevent the user from using excessively long signatures, or at least warn the user against it. A widely accepted standard is the so-called McQuary limit: up to 4 lines, each up to a maximum of 80 characters. NewsWatcher 2.1.6 had a limit of 4095 characters on signatures, but that was all. NewsWatcher 2.2 implements the McQuary limit. The check to make sure this limit is not exceeded is performed in two contexts: whenever you try to change your signature in NewsWatcher's preferences dialog, and whenever the signature is inserted into a newly created message window. The latter check catches the cases where a bad signature comes from Internet Config or a previous version of NewsWatcher. In this case, if the signature is too long, it is truncated to the McQuary limit, an alert is displayed, and the message window is opened with detailed information displayed, so you can see the truncated signature. You can still manually type long signatures in message windows, or copy and paste or drag and drop them. However, we no longer permit you to set such long signatures as a preference to be used by default in all message windows. "Mail-Copies-To" Header ======================= NewsWatcher now supports the "Mail-Copies-To" header. While not a standard or part of the GNKSA, this header is becoming more popular, and several other newsreading programs support it. There are three forms of this header: Mail-Copies-To: never or Mail-Copies-To: nobody The poster of the article never wants to get courtesy email copies of followups. Mail-Copies-To: always or Mail-Copies-To: poster or Mail-Copies-To: sender The poster of the article always wants to get courtesy email copies of followups. Mail-Copies-To: email address The poster of the article always wants to get courtesy email copies at the special email address given in the header. Whenever you followup or reply to an article, NewsWatcher checks for this header. If the poster requests that courtesy copies never be sent, and if you try to turn on both the news and the mail icons, NewsWatcher issues an alert informing you of the poster's request. The default button is "Cancel". You can deliberately ignore the poster's wishes by clicking the "OK" button, which results in a followup and a courtesy email copy. If the poster requests that courtesy copies always be sent, NewsWatcher automatically turns on the mail icon on followups, and presents a note alert letting you know why it did this. If you later try to turn off the mail icon, NewsWatcher issues an alert reminding you of the poster's request. The default button is "Cancel". You can deliberately ignore the poster's wishes by clicking the "OK" button, which results in a followup with no courtesy email copy. You can include this header in your own articles if you wish. To do this in all of your postings by default, use the "Extra Header Lines" preferences topic. To do this in a single posting, use the "Show Details" command in the "Edit" menu, then type the header in the "Extra news header lines" field. If you use this header in your own articles, you should be aware that only a few other newsreading programs understand and support it. Users are also permitted to override the behavour you have requested. So you shouldn't expect this header to work all of the time. Thanks to John Moreno and Jeroen Scheerder for suggesting this feature and helping to design its implementation in NewsWatcher. Errors Fixed ============ NewsWatcher did not work properly with news servers that used 8 bit Latin-1 characters in group names. Fixed. Thanks to Brian Clark for reporting this problem and helping to fix it. Some kinds of news authentication passwords didn't work if you used NewsWatcher together with Internet Config with an authenticating news server and you used the option to save your password. Fixed. Thanks to Simon Fraser for reporting this and figuring out how to fix it. NewsWatcher could crash in some kinds of rare circumstances involving network errors that occur immediately after successfully opening news, mail, and FTP streams. Fixed. Thanks to Simon Fraser for finding this one. When you command-click a message-id in angle brackets <...> or a "news:" URL, NewsWatcher opens the referenced article. If the referenced article is already open in another window, NewsWatcher is supposed to just bring the already opened window to the front, not open another copy. This wasn't always working correctly. Fixed. The Post Article/Mail Message/Send Message command in the "News" menu was not being disabled properly when all three icons in the message window were unchecked. Fixed. - The balloon help strings for the "Clear" and "Select All" commands in the "Edit" menu were incorrect in the case when a dialog window is active and the commands are disabled. Fixed thanks to Brian Clark. Other Changes ============= NewsWatcher no longer notifies you (blinks its icon at the top of the process menu) when it is launched in the background. If your signature already starts with the standard separator line "-- " (e.g., in Internet Config), NewsWatcher never adds another one, even if the NewsWatcher preference to add the standard separator is turned on. If you don't have any signature preference, but you do have the prefs set for "add blank line before signature" and/or "add separator line before sig", when NewsWatcher creates a new message window, it initializes the signature field to include just the blank line and/or separator. When the message is actually sent, however, if you haven't added any kind of additional signature text to this field by typing, pasting, or dragging and dropping text, this extra blank line and/or separator are removed. Programmer Notes ================ Converted from CodeWarrior 10 to CodeWarrior Pro 2. We now have a single CodeWarrior 2 project file, with three targets for the 68K version, the PowerPC version, and the fat version. Changed several old deprecated names for system constants, types, and functions to the new "preferred" names. Renamed module "balloons.r" to "myballoons.r" to avoid conflicting with the system header file with the same name. Similary, renamed "menus.c/h" to "mymenus.c/h". We now use the Open Transport header files and libraries included in the CodeWarrior distribution instead of our own copies. Similarly, we now use the standard CodeWarrior MacTCP files, the console.stubs.c file, and the MSL libraries. Updated the Internet Config header files and libraries to version 1.4. Incorporated some internal coding suggestion by Brian Clark to improve the type safety of some of the reusable modules and clean up the code in other ways. Turned on the C warning message option for unused function arguments and added 111 #pragma unused declarations. Thanks to Bob Boonstra for suggesting this. Added a new option to the low-level net.c, nntp.c, smtp.c, and ftp.c networking modules to do Mac<-->Latin-1 character set translation on all the data sent and received over streams. This feature greatly simplifies the handling of Latin-1 in NewsWatcher.