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.