FSC-0009

*Nodelist Flag Changes Draft Document

The following is a proposed change to the nodelist.  Please  send
your  comments  to  either  Ken  Kaplan  at 100/22,  Ray Gwinn at
109/634,  or David Dodell at 114/15.  We will not be replying  to
all  comments  but wish to get a general feeling from the network
about this proposed change.


                  Nodelist Flag Draft Document
                   Primary Author: Ray Gwinn
                 Secondary Author: David Dodell
              Contact 114/15 or 1/0 with comments
                      Version 1 (11-15-87)


I proposed that the Nodelist (comment) Flags be replaced  with  a
capabilities identifier.

After  all,  the  bottom  line  is  that  we  want  to  know  the
capabilities of the remote node before it is  contacted.  If  the
remote  is  not capable of performing the desired function,  then
there is no need to contact it.

The problem(s) with the existing method  is  that  it  originally
started  as  a  comment  field  and  was not planed.  At the time
SEAdog was the only  "extended  protocol"  program  around.  But,
along  came  Opus  with a different "extended protocol".  I think
that additional flags like WZ, BR, WR,  etc is only extending the
previously  unplanned  system  and  will  lead to problems in the
future.  For example, XP today includes file update requests, but
XP a year ago did not.  So,  a node using SEAdog V3.xx will  have
an  XP  flag  but  it  is not capable of doing update requests (I
think).  Thus,  XP does not really tell you what the remote  node
is capable of doing.

The  capabilities  identifier that I propose will do nothing more
than define the program(s) that  the  remote  node  is  using  to
accept  incoming  calls/mail/requests.  Some may say that this is
nothing more than the product code that  already  exists  in  the
mail  packet.  The  primary  difference  is that the capabilities
identifier  will  exist  in  the  nodelist.   This  means  it  is
available  without contacting the remote node,  while the product
code  is  not.   Also  the  product  code  is  limited   to   256
possibilities.

I  assume that it is desired that the nodelist flags field be two
non-control  characters.   If  so,   then  I  propose  that   the
capabilities  identifier  be  a  two digit,  base 36 number.  The
digits being 0 through  9  and  A  through  Z  and  are  assigned
sequentially.  For example, Fido may be 01 and Dutchie may be 02.
Also note that as defined, XP and WZ are valid.  However, I think
they  should  be  done  away  with,  and  identifiers be assigned
starting with 00 (00 meaning generic FTSC net mail protocol).

This number, once converted to binary, can be used by programmers
as an index into application specific data bases or  tables.  One
example   is   a  simple  program  that  will  tell  a  user  the
capabilities of a remote node.  Given the node's address and  the
nodelist,  the  program  could  search  the  nodelist  to get the
capabilities  identifier.   Then  the  program  could  use   that
identifier   as   an  index  into  a  data  base  to  obtain  the
capabilities of the remote node and display  them  to  the  user.
Another  example  is  a program that can use the identifier as an
index into a capabilities  table  that  allows  determination  in
advance  that  the remote is capable of the desired session prior
to contacting it.


                         Implementation
                           ----------

First,  all nodes in the  network  are  assigned  a  capabilities
identifier  of  00.  This  is the capabilities code of a net mail
program  that  meets  the  basic   requirements   of   the   FTSC
specification.   Once  again,  the  purpose  of  this  identifier
(except 00) is to define the program(s) that the node is using to
process calls/requests/mail.  Also remember that  the  identifier
reflects  the  mail  handler.  For  example,  TBBS with a BINKLEY
front end will be identified by its BINKLEY identity.

The  program  author  (or  project   leader)   will   request   a
capabilities   identifier   from  the  assigner.   Who  does  the
assigning is another subject.  Along with the request must  be  a
written  and detailed description of all enhances features of the
program.   Remember,  we  are  dealing  with  automated  contacts
between  nodes.  In  this  context,  the  ability of a program to
handle 50 simultaneous callers is not an enhanced feature.

The list of features can be provided to  other  authors  so  that
they  may  consider  a  compatible  feature.  Note,  that  if the
description of the enhanced features is not sufficient for  other
authors  to  add  a  compatible feature,  then the program may be
assigned the basic 00 capabilities flag.  This little enforcement
rule  has  the  potential  of  lifting  a  tremendous  burden  of
documentation  from  the  FTSC.  If  the  committee accepting the
written definition is programmers, the documentation is likely to
be understandable.  I think the same committee should assigns new
capabilities codes (other than those grandfathered).  The ego  of
the    program   authors   would   probably   insure   sufficient
documentation for a capabilities identifier other than 00.

After  consideration,   the  FTSC  could  choose  to  adopt   the
definition  (possibly modified) as a standard.  I feel this gives
the a creative programmer's new features a way into the  nodelist
and  the  FTSC  the  ability  to consider enhancements with 20/20
hindsight.  At the same time,  the  FTSC  must  only  modify  the
provided  documentation  to  define  a  new  standard  instead of
starting  from  scratch.  But,  I'm  drifting,  this  is  another
subject.

If a new revision of the same program has additional capabilities
that  need  to  be defined,  then the author should request a new
capabilities code.  There should be a policy that only one or two
revisions back will have individual capabilities identifiers.  If
revisions more than one or two old are still in use they  can  be
assigned the basic 00 identifier.

The program authors should be required to prominently display the
capabilities  identifier.  This  will  allow  the Sysop to easily
provide the identifier to his network coordinator  for  inclusion
in  the  nodelist.  This  a  basically  a  take off of the ringer
equivalent code that you find in your modem manual.


As I have defined it, the committee that assigns the capabilities
identifiers can not  reject  the  new  features.  They  can  only
reject  the  documentation  of  the  new  features  as  not being
understandable.  This should keep most developers  happy  because
no one can tell them not to do something.  It should make the job
of  the FTSC simpler because they will only accept documentation,
not create it.  The  ego's  of  the  developers,  anxious  to  be
identified in the nodelist, should keep the documentation flowing
to the FTSC.

As  pointed out by David Dodell,  the same type of identifier can
be applied to modems.  That is modem 00 can be a 1200 baud  Hayes
(true) compatible, type 02 can be a USR Courier, etc.

What I have proposed here solves many problems, but not all.  For
example,  there  is  no way to tell when the wierd BBS has SEAdog
running.  So, a CM type flag is still required.

I  think  that  3  flags  will  take  care  of  everything.   One
identifies  the  mail handler,  another identifies his modem type
and a third  should  identify  when  mail/file  requests  can  be
accepted.


                        The other flags
                           ---------


The  other  two  flags  would  represent mail reception times and
modem type.

For example the flag 00 would represent mail can only be received
during NMH.  Flag 01 would mean mail could be received 24  hours,
identical  to  the  meaning of the CM flag now.  Other variations
could be:

  00 National Mail Hour Only for Mail
  01 Continuous Mail 24 hour/day
  02 Continuous Mail 24 hour/day with 24 hr File Request Capability
  03 CM 24 hrs/day, File request all but NMH

The third flag would represent modem types:

  00 300 baud Bell standard
  01 1200 baud Bell standard
  02 2400 baud
  03 1200 baud w/MNP
  04 2400 baud w/MNP
  05 USR HST Modem
  06 Telebit Trailblazer Modem
  07 Hayes V9600 Modem
  08 Microcom Modem 9600 baud