home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / files / bbs / fn132bin / fdman / chapter.02 < prev    next >
Text File  |  1991-09-03  |  28KB  |  601 lines

  1.  
  2.  
  3. Chapter 2:  Sysop Theory                                                  14
  4.  
  5.  
  6.  
  7.  
  8. 2  Sysop Theory
  9.  
  10.  
  11.    Before getting into the  nitty-gritty details of what buttons to  push to
  12. get which  results, let us  first force down your  throat some theory  about
  13. what you're going  to be dealing with.   You can  forget about it after  the
  14. final exam, if you wish.
  15.  
  16.  
  17. 2.1  Your Callers
  18.  
  19.    You are presumably  going through all  of this because  you wish to  have
  20. people of  some type  call your  system and  do something  with it.    These
  21. callers are  your reason  for running  a BBS.  While other  systems offer  a
  22. vast array of  access and status levels,  the general Citadel philosophy  of
  23. simplicity holds  here, meaning  that there  are no  real preferential  user
  24. access levels.
  25.  
  26.    Despite that  fact,  there do  need to  be some  ways  to handle  special
  27. cases.   See Section 5.2 [User Status  Commands], page 80, for  the commands
  28. to assign the various  user attributes.  As of this writing,  the attributes
  29. are:
  30.  
  31.   o __The Sysop__.   That's you, the  System Operator, and there's  only one
  32.     of you unless  you share the duties with other people, or  somebody else
  33.     has access  to your computer while it's  running Fnordadel.  You  can do
  34.     anything  within reason,  and a  few things  beyond reason.    Fnordadel
  35.     allows  you to  define the  name used  by the  Sysop in  `ctdlcnfg.sys',
  36.     using the  parameter #sysop.   You should  set this up  correctly.   (If
  37.     your system  really has more  than one Sysop,  set the #sysop  parameter
  38.     to  whichever one has  direct access to  the system  or uses the  system
  39.     most,  or just pick  a name  from a  hat.   Alternatively, leave  #sysop
  40.     undefined.   See Chapter 5 [The  Sysop Command Reference], page 75,  for
  41.     more discussion on Sysop matters.)
  42.  
  43.   o __Co-Sysops__.    You may  additionally designate  any  number of  other
  44.     users  on  your  system  as  ``Co-Sysops'',   by  assigning  them  Sysop
  45.     privileges.   This means that  they have virtually unlimited ability  to
  46.     use any command,  *except* those in the Sysop menu (accessed by  `^L' at
  47.     the main  room prompt).   To let  such people have  access to the  Sysop
  48.     menu as  well, you need  to give them  the system password.   Note  that
  49.     anyone who has  been given Sysop privs is also automatically  given Aide
  50.     privs.
  51.  
  52.   o __Aides__.   These are  people that you wish  to have help you  operate,
  53.     maintain and control your system.  They can  do things like delete, copy
  54.     or  move messages, and  they may do  a certain  amount of room  editing,
  55.     floor maintenance  and other things.   In  general, however, they  can't
  56.     do much  to change the  basic nature of things  (e.g.  alter  networking
  57.     parameters, do things involving access to your storage devices, etc.).
  58.  
  59.   o __Twits__.   These are users that  you have decided are too  detrimental
  60.     to have  continued access to  your system, but  whose user accounts  you
  61.     don't simply wish to kill, lest they immediately  sign back on again and
  62.     continue where they  left off.  Twits have most commands  disabled; this
  63.     includes the ability to post messages!
  64.  
  65.  
  66.  
  67. Chapter 2:  Sysop Theory                                                  15
  68.  
  69.  
  70.  
  71.  
  72.   o Everybody else.   This  is the group  of people who  are not the  Sysop,
  73.     Co-Sysops,  Aides,  or Twits.    They  comprise the  bulk of  your  user
  74.     population, most likely.
  75.  
  76.    Additionally, the  Sysop has control  over users'  ability to do  certain
  77. things like  send private  mail, create  new discussion rooms,  and post  in
  78. networked  rooms.    (Such  rooms may  well  be connected  to  long-distance
  79. systems, and  we don't want  irresponsible or evil  users causing big  phone
  80. bills!)
  81.  
  82.    When you first  start your system, it is  unlikely that you will wish  to
  83. grant Aide  or Co-Sysop  status to many  of your users,  since you  probably
  84. won't know many of them at  all well.  Our advice is to take your  time, and
  85. pick out some people  who will handle the positions responsibly.   If chosen
  86. wisely, they  will be  an asset in  controlling your system,  and in  making
  87. creative contributions which prevent stagnation.
  88.  
  89.  
  90.  
  91. 2.2  Rooms
  92.  
  93.    Right from the start, Citadel made use of something  called a __room__ to
  94. contain messages on a related  topic.  Fnordadel does the same.  A  room has
  95. a name up to 19 characters in length, which presumably  captures the gist of
  96. a topic to be discussed by the messages in that room.   Some systems you may
  97. be familiar with make use of ``message areas'',  ``message bases'', ``SIGs''
  98. (Special Interest Groups), etc.  They are all  basically analogous to rooms,
  99. but will typically be few in number and cover broad, static topics.
  100.  
  101.    Other systems make use  of ``threads'', in which messages are  related to
  102. each other  by a  common subject  field (for example)  rather than  physical
  103. location.   Callers travel up  and down the threads  one message at a  time,
  104. and now and then jump  to a new thread.  Still other systems have  no way to
  105. organise messages;  they are all  stored in one giant  mass that is hard  to
  106. wade through as a user, and still preserve one's sanity.
  107.  
  108.    We  feel that  Citadel's room  metaphor  is much  easier  to use  than  a
  109. threading scheme, offers better organization than one  massive message area,
  110. and permits  better dynamic flow  of discussion than  bulky SIGs or  message
  111. bases.
  112.  
  113.    As callers  use your system,  they will  move from  room to room  reading
  114. new messages,  and posting  replies as  they see  fit.   If the  topic of  a
  115. room drifts  off on  a tangent  (as is common),  you as  Sysop may  exercise
  116. control to bring it back on track, change its name to  suit the new trend of
  117. discussion, move the  off-topic messages into a newly-created room,  or kill
  118. the room entirely if none of the above options are worth the effort.
  119.  
  120.    The basic room  can be specialised  in a number  of ways to meet  various
  121. needs.  Some of the attributes are:
  122.  
  123.   o __Permanent__.  Normally, empty rooms will be  purged by the system from
  124.     time to time.   There is also  a command for doing this  explicitly (see
  125.     .A(ide)  D(elete-empty-rooms) in  Section 4.1.2  [The .A(ide)  command],
  126.     page 63).  You may not always wish rooms  to disappear if they go empty,
  127.     so you may designate them permanent, and they will stick around.
  128.  
  129.  
  130.  
  131. Chapter 2:  Sysop Theory                                                  16
  132.  
  133.  
  134.  
  135.  
  136.   o __Anonymous__.    Rooms  of this  type are  used  for discussions  where
  137.     callers  may wish to  remain totally unidentified.    None of the  usual
  138.     message  header information is  stored or  shown by the  system, just  a
  139.     message number.
  140.  
  141.   o __Private__.   These rooms are for carrying out activities that  are not
  142.     to be viewed by  all callers to the system.  Only users who  are told of
  143.     the complete room name  are able to get into it.  And once  a user knows
  144.     the room's name,  he can't be barred from it short of altering  the name
  145.     and reinviting all the other users.
  146.  
  147.   o __Invitation-only__.   These rooms  are just like  the above type,  with
  148.     one difference.  Users must be invited into  them with a system command;
  149.     knowing the full name  is not sufficient to gain access.  If  a caller's
  150.     presence is  no longer desired,  eviction from the  room is also  easily
  151.     possible, without choosing a new room name.
  152.  
  153.   o __Read-only__.    Rooms  of this  type can  only  have messages  entered
  154.     in  them by  the Sysop,  Co-Sysops or Aides.    A typical  use for  such
  155.     a  room is for  announcements that you  wish people  to have access  to,
  156.     uncluttered by comments from other callers.
  157.  
  158.   o __Directory__.   Rooms of this type  are used to give callers  access to
  159.     your storage device(s)  (RAM, disk or hard drives), for the  purposes of
  160.     file uploading  and/or downloading.   Each directory  room is tied to  a
  161.     specific  disk directory  somewhere, so  you can  give different  people
  162.     access to different collections of files.   Normal discussion activities
  163.     are permissable in directory rooms.
  164.  
  165.   o __Network__  or __Shared__.    Rooms of  this  type are  linked via  the
  166.     Citadel  network (or  any other supported)  to other  systems that  also
  167.     carry  the  same  rooms.    Messages  entered  in these  rooms  will  be
  168.     transferred among  all the systems sharing  the room, thus permitting  a
  169.     much larger cross-section  of callers to participate in  the discussion,
  170.     no matter their geographical locations.
  171.  
  172.    Note that these attributes can be mixed, so it is  possible to have, say,
  173. a shared, directory, read-only, private, anonymous, permanent room.
  174.  
  175.    In order to distinguish between  the different types of room that  can be
  176. found, Fnordadel  adds a special character  following the room name in  many
  177. places where room names are shown.  They are as follows:
  178.  
  179. `]'        designates a directory room
  180.  
  181. `)'        designates a shared (network) room
  182.  
  183. `:'        designates a shared directory room
  184.  
  185. `>'        designates all other types of room
  186.  
  187.    From time to time in  the following chapters, you will see  references to
  188. the term  __room prompt__.   The room prompt is  where users are sitting  on
  189. the system when nothing is going on, and Fnordadel is  waiting for a command
  190. to be entered.   It's called the  *room* prompt because the  system displays
  191. the name of the room in which the user is sitting.
  192.  
  193.  
  194.  
  195. Chapter 2:  Sysop Theory                                                  17
  196.  
  197.  
  198.  
  199.  
  200. 2.3  Floors
  201.  
  202.    Some  years after  the  development  of Citadel,  numerous  systems  were
  203. getting to be quite  large.  Rooms permit the organization of  messages, but
  204. when there  are 50  and more rooms,  they need  to be organized  themselves.
  205. Thus __floors__ were developed,  and are to rooms as rooms are  to messages:
  206. rooms group related messages, while floors group related rooms.
  207.  
  208.    If callers  choose  not to  operate in  floor mode,  they  will see  your
  209. system as  it would  have been before  floors came  about.   If they  choose
  210. floor mode, however,  they will see collections of rooms through  which they
  211. can navigate,  in addition to  normal room-to-room movement.   This  permits
  212. efficient activites with groups of rooms.  Usually all  rooms on a floor are
  213. somehow related, just as all messages in a room are  related.  The advantage
  214. of this  is extra  organization that  doesn't get  in anybody's way.    Even
  215. if floor  mode is chosen  by a user,  it does not  add any inconvenience  to
  216. his/her use of the system.
  217.  
  218.  
  219.  
  220. 2.4  Scrolling
  221.  
  222.    __Scrolling__ is a  term commonly used to  describe the way many  aspects
  223. of a Citadel  work.  A good mental  image of scrolling is simply  to picture
  224. any circular, oval,  or otherwise closed, race-track.   Racers on the  track
  225. start at the  beginning, and loop around  it forever after, unless  somebody
  226. or something stops them.
  227.  
  228.    A number of  things in Fnordadel  also scroll.   The largest is  probably
  229. going to  be the message file,  which is where  all the messages entered  in
  230. all the  rooms are  kept.   Messages get  placed into it  at the  beginning,
  231. and continue  being added  until the physical  end of  the file is  reached.
  232. At  this time  Fnordadel (and  all Citadels)  loops back  to  the start  and
  233. overwrites old messages there with continued new entries.   In this fashion,
  234. your system  efficiently organizes all messages  on your storage device  for
  235. you, and also automatically deletes old messages.
  236.  
  237.    If  you  find  that the  message  file  scrolls  faster  than  you  would
  238. like,  increase  its size  with  the  mexpand utility  (see  `mexpand.man').
  239. Conversely,  if the file  is not  scrolling fast enough,  decrease its  size
  240. with the mshrink utility (see `mshrink.man').
  241.  
  242.    Another thing that  scrolls is your  user file.   This file contains  all
  243. information known  about your  users, and has  space for  a fixed number  of
  244. users, which  you specify.  When  that space is used  up, the next new  user
  245. to sign onto  your system will cause  the user file to  scroll.  The  system
  246. picks the  user who has not  signed on for the  longest period of time,  and
  247. tosses the account to make  room for the new arrival.  Again,  efficient use
  248. of storage, and  no maintenance for the Sysop.   (Note that the  system will
  249. scroll you and  your Aides and Co-Sysops  with equal efficiency, so be  sure
  250. you all sign on regularly!)
  251.  
  252.    Room contents are yet another  thing that --- you guessed it  --- scroll.
  253. This  is because  the messages  in rooms  get overwritten  by the  scrolling
  254. action of  the main message file.   Thus room  content is always current  to
  255.  
  256.  
  257.  
  258. Chapter 2:  Sysop Theory                                                  18
  259.  
  260.  
  261.  
  262.  
  263. one degree or  another (it depends how large  the message file is),  and the
  264. Sysop doesn't have to lift a finger to keep things that way.
  265.  
  266.  
  267.  
  268. 2.5  Modes of Operation
  269.  
  270.    Fnordadel has four distinct modes  of operation, and it's a good  idea to
  271. understand what the  differences are, since  they determine who can do  what
  272. when.
  273.  
  274.  
  275. 2.5.1  Modem mode
  276.  
  277.    When you are  not using the system, which  is hopefully most of the  time
  278. (unless  you really  like  reading your  own  commentary), Fnordadel  is  in
  279. __modem mode__.   All this  means is that  it is ignoring almost  everything
  280. typed at the console, and is either handling commands entered  by a user who
  281. called, or else waiting for a call to come in.
  282.  
  283.    There are  only two  ways out  of modem  mode.   The most  common is  for
  284. you, the  Sysop, to hit the  `<ESC>' key at  the console, and enter  console
  285. mode  (see below).    The other  is for  the  software to  crash in  flames.
  286. Fortunately, the latter never happens.
  287.  
  288.  
  289. 2.5.2  Console mode
  290.  
  291.    When you are using  the system, Fnordadel is in __console  mode__ (unless
  292. you dialed in from elsewhere, but that's cheating).   It is possible for the
  293. system to  be in console  mode while a  user is connected from  remote.   It
  294. is advised that  you not enter console  mode, however, except when the  user
  295. is at  a room prompt.   Otherwise,  strange things may  happen when you  hit
  296. `<ESC>' to take over.
  297.  
  298.    When  the system  is  in console  mode,  you  can  carry out  normal  BBS
  299. activites such as  reading and entering messages.   If nobody is  logged in,
  300. Fnordadel may  restrict what you  can do  based on some  of the settings  in
  301. `ctdlcnfg.sys'.   See `ctdlcnfg.doc'  for details.   In  any case, being  in
  302. console mode  will let you do  most things, logged in  or not, plus it  also
  303. gets you access to the Sysop special functions menu  without having to enter
  304. the system password.  See Chapter 5 [The Sysop  Command Reference], page 75,
  305. for more details.
  306.  
  307.    To return the  system to modem  mode --- which you  must do in order  for
  308. it to receive  calls again, or for an online  user to finish what he  or she
  309. was up to  --- use the [M]odem mode command  in the Sysop menu.   Again, see
  310. Chapter 5 [The Sysop Command Reference], page 75.
  311.  
  312.  
  313.  
  314. Chapter 2:  Sysop Theory                                                  19
  315.  
  316.  
  317.  
  318.  
  319. 2.5.3  Chat mode
  320.  
  321.    __Chat mode__  is unlike  the two  previous modes in  two ways.    First,
  322. Fnordadel pays attention to  characters coming in from both the  console and
  323. the modem, and  echoes all of them to the screen.   This is how you  talk to
  324. your users when they're on the system.  Try it, you might like it!
  325.  
  326.    Second,  virtually no  commands  are  available in  chat  mode.    It  is
  327. intended for purely  discussion purposes.   To exit chat mode, hit  `<ESC>'.
  328. Fnordadel will  return to  either modem  or console mode  according to  what
  329. mode was  in effect when  chat mode was  started.  If  the mode is  console,
  330. don't forget to  return Fnordadel to modem mode  so the user can  finish his
  331. or her activities.
  332.  
  333.    Chat mode is  also used when  you dial out  from your system and  connect
  334. with other  systems as a  user, yourself.   In  these cases you're  chatting
  335. with another  BBS instead  of a  user.   If  you press  `<ESC>' while  still
  336. online with a remote system, you'll probably want to  reconnect with it once
  337. you've  finished whatever  caused you  to hit  `<ESC>'.   To  do this,  just
  338. execute the [C]hat command yourself, or use  the [G]otomodem... command from
  339. the Sysop menu.  See Section 3.1.1.3 [Other room  prompt commands], page 29,
  340. and Section 5.1 [Sysop Special Functions], page 75, for details.
  341.  
  342.  
  343. 2.5.4  Network mode
  344.  
  345.    __Network mode__  is  unlike the  previous three  modes,  in that  nobody
  346. is  logged in  to the  system.    Instead, it  is  communicating with  other
  347. Citadel(s) of some kind, somewhere, for the  purpose of transferring private
  348. mail, shared  rooms, files,  and so on.   When the  system is in  networking
  349. mode, nobody else can  use it until it finishes what needs doing.   Clearly,
  350. the more time  your system spends networking,  the less time your users  and
  351. yourself  can be  online.   So  configure your  network controls  to give  a
  352. good balance between system availability and timely  communication with your
  353. networking partners.
  354.  
  355.  
  356.  
  357. 2.6  Configuring
  358.  
  359.    If  you read  Chapter  1  [Fifteen  Minute Guide],  page  5,  on  how  to
  360. start your  system as  quickly as  possible, you will  have encountered  the
  361. instructions  to modify  a  file called  `ctdlcnfg.sys'  and run  a  program
  362. called configur.   Here is  more treatment of  that information, or a  first
  363. look if  you skipped  that chapter  like someone  who wants to  get all  the
  364. facts before mucking with things.
  365.  
  366.  
  367.  
  368. Chapter 2:  Sysop Theory                                                  20
  369.  
  370.  
  371.  
  372.  
  373. 2.6.1  The ctdlcnfg.sys file
  374.  
  375.    This is the Fnordadel configuration file, an ASCII text  file that can be
  376. edited with any text editor or word processor which  can output ASCII files.
  377. It contains a truck-load of system parameters and options  that let you tell
  378. Fnordadel things it  needs to know, and  let you set up some  non-essentials
  379. to give your system a  unique flavour.  For details on the contents  of this
  380. file, see `ctdlcnfg.doc'.
  381.  
  382.    Please  be  sure  that  the  contents  of  this  file  always  accurately
  383. describe  your  system!    There  are  utility  programs  that  will  modify
  384. various parameters  of your  system, but  they *do not*  alter the  contents
  385. of  `ctdlcnfg.sys'.   It  is up  to  you to  edit the  file  and change  the
  386. appropriate values.  If you don't, *pure evil* will result.
  387.  
  388.    In order for  the information in this  file to actually get  communicated
  389. to Fnordadel,  it must be run  through the configuration program,  configur.
  390. Speaking of which ...
  391.  
  392.  
  393. 2.6.2  The configur program
  394.  
  395.    configur  is  the  Fnordadel   configuration  program.      It  processes
  396. everything  you've  entered  in `ctdlcnfg.sys'  and  checks  for  errors  of
  397. omission or commission, displaying  error messages as necessary.   The error
  398. messages will hopefully pin-point the problem for you.   You can always look
  399. at `ctdlcnfg.doc' for a (bloated) example of a correct file.
  400.  
  401.    If everything goes well,  the result of running this program will  be yet
  402. another file called `ctdltabl.sys'.
  403.  
  404.  
  405.  
  406. 2.6.3  The ctdltabl.sys file
  407.  
  408.    This is the file which contains the distilled  essence of `ctdlcnfg.sys',
  409. in a binary form that Fnordadel can accept; it  also contains various system
  410. tables  (like indices  into the  message file,  log  file and  so on)  which
  411. change with time.   Fnordadel will not run if this file is not  present, and
  412. it will die horribly  or act terribly if the file is  incomplete, corrupted,
  413. or  otherwise screwed  up.   Likewise  with many  of  the Fnordadel  utility
  414. programs.
  415.  
  416.    For this reason, Fnordadel and some of the more  complex utility programs
  417. will actually  delete `ctdltabl.sys' when  you run them,  and then write  it
  418. back out again when  they exit properly.  This prevents the  ugly situation,
  419. for  example, of  running  your Fnordadel  for a  few  days, and  having  it
  420. crash messily, leaving  around a `ctdltabl.sys' that no longer  reflects the
  421. current status of  your system.  If  you tried to rerun your  system without
  422. reconfiguring, it would be a Very Bad Thing.
  423.  
  424.    As things stand,  a bad crash  by Fnordadel or  a utility will leave  you
  425. without `ctdltabl.sys', forcing you to rerun configur  before doing anything
  426. else.
  427.  
  428.  
  429.  
  430. Chapter 2:  Sysop Theory                                                  21
  431.  
  432.  
  433.  
  434.  
  435.    This  point bears  emphasis:    *losing your  `ctdltabl.sys'  file  means
  436. almost nothing*.  You can always regenerate it by  running configur, as long
  437. as no  other system  files have been  damaged or  deleted.   If you  suspect
  438. anything weird is going  on with your system, the first thing you  should do
  439. is *back  everything up*, and  *not* over top  of an existing  backup.   The
  440. second thing  to do is  delete `ctdltabl.sys' and run  configur.   Hopefully
  441. this will fix things up.
  442.  
  443.  
  444.  
  445. 2.7  Command Structure
  446.  
  447.    Before  we start  with  particular  groups of  commands,  let's  look  at
  448. the  structure of  Citadel commands.    One design  feature  of the  command
  449. system is  ``orthogonality'', which is  a nice big  word that roughly  means
  450. ``consistency''.   Or, things look the same one  place as in another.   Keep
  451. this in  mind and it will  speed you on your  way to mastering the  system's
  452. complexity.
  453.  
  454.    Keep one other thing in  mind:  At almost every conceivable point  in the
  455. system where  it is waiting for  you to enter a  command, you can press  the
  456. `?' key to  see a list of the  currently available commands.   ``This system
  457. of menus  isn't quite  as convenient as  ones that  pop up automatically  as
  458. with other BBSes'', argue some people, but it is  another facet of Citadel's
  459. philosophy --- stay out of the way unless called for.
  460.  
  461.    And now, the two basic types of commands.
  462.  
  463.  
  464. 2.7.1  Single-key commands
  465.  
  466.    The so-called __single-key__ commands are the basic bread  and butter for
  467. you and your users.   They are the common functions that everybody  wants to
  468. use all of the time,  and they have been streamlined as much as  possible to
  469. permit people to do what they want without wading  though layers of barriers
  470. (what other  systems call  ``menus'').   These commands  are all invoked  by
  471. pressing a single key, and do not need to be followed by a carriage-return.
  472.  
  473.    To be  a successful Fnordadel  user, you  only have to  know five of  the
  474. single-key commands:
  475.  
  476.   o [G]oto the next room
  477.  
  478.   o read [N]ew messages
  479.  
  480.   o [E]nter a message
  481.  
  482.   o [P]ause reading
  483.  
  484.   o [S]top reading
  485.  
  486.    These five  commands, along with  the obvious need  to know [L]ogin,  [?]
  487. and [T]erminate, will satisfy most people who call.
  488.  
  489.  
  490.  
  491. Chapter 2:  Sysop Theory                                                  22
  492.  
  493.  
  494.  
  495.  
  496. 2.7.2  Multi-key/extended commands
  497.  
  498.    It  would be  nice if  all  functions of  the  software could  be  called
  499. up using  single key-strokes.    Fortunately---yes, that's  ``fortunately''-
  500. --there  are too  many of  them to  permit this.    For example,  there  are
  501. those  individuals who  will  want to  be able  to  do things  like  compose
  502. messages (probably long ones)  off-line and then upload them in one  shot to
  503. your board.    There will be  those people  who will want  to grab  whatever
  504. downloadable files you've got on  your board.  There will be those  who want
  505. to upload stuff  to your board.   (I know, it's  hard to believe, but  there
  506. is the occasional  altruistic soul around.)   And, naturally, there will  be
  507. those individuals  who will  want to  do some  odd variant of  any of  those
  508. things, or a  host of others.   Yourself, Co-Sysops, and Aides  are probably
  509. good examples of such people.
  510.  
  511.    To accommodate this  need, Fnordadel uses __multi-key__ or  __extended__,
  512. commands.    In  contrast to  the  single-key commands,  multi-key  commands
  513. start with a  mode character and are followed  by a number of  other command
  514. characters.   Some extended  commands also take  a user  name, file name  or
  515. date; these must be terminated by a carriage return.
  516.  
  517.    The mode character tells Fnordadel that you're using  an extended command
  518. instead of a single-key  command, and what type of extended command  it will
  519. be.   Normal  extended commands  that deal  with rooms,  messages and  files
  520. start with a period,  `.'.  Floor extended commands, which deal  with entire
  521. floors,  start with  a  semi-colon,  `;'.    Door extended  commands,  which
  522. permit the running  of other programs from  within Fnordadel, start with  an
  523. exclamation mark, `!'.
  524.  
  525.    Most extended commands will  either be ``enter'' or  ``read'' operations.
  526. Citadel defines any command  you use that results in data being sent  to the
  527. system as  an ``enter'' command.    Any command that  results in data  being
  528. sent from the system to you is a ``read'' command.
  529.  
  530.    Thus,  to read  new  messages in  the current  room,  you could  use  the
  531. extended command
  532.  
  533.       .rn
  534.  
  535. which the system will display as:
  536.  
  537.       .read new
  538.  
  539.    To download a file  `blort.txt' using the Xmodem file  transfer protocol,
  540. you would also do a read operation:
  541.  
  542.       .rxfblort.txt<CR>
  543.  
  544. which is displayed like:
  545.  
  546.       .read xmodem file blort.txt
  547.  
  548. followed by an ``are you ready'' sort of prompt.
  549.  
  550.  
  551.  
  552. Chapter 2:  Sysop Theory                                                  23
  553.  
  554.  
  555.  
  556.  
  557.    To get even trickier, you could download all new  messages in the current
  558. room from the user  ``Foobar'' since 90Jul01, to your own system,  using the
  559. Ymodem file transfer protocol, for leisurely perusal:
  560.  
  561.       .ryu+nFoobar<CR>89Jul01<CR>
  562.  
  563. which looks like:
  564.  
  565.       .read ymodem user after new - which user: Foobar
  566.       After what date: 89Jul01
  567.  
  568.    You may not  notice, but in  all these cases, there  is a pattern to  the
  569. command.   It  always starts  with a `.',  then specifies  the main  command
  570. followed by  some options, and  finishes with what  the command is  supposed
  571. to deal  with (``new'' implies ``new  messages'', while ``file''  explicitly
  572. means ``files'').   The system will then  prompt for further data  as needed
  573. by some of the options.  To summarize the structure:
  574.  
  575.       <mode> <main command> <options> <what to process>
  576.       <prompts for any additional data>
  577.  
  578.    In the final example above, `.ryu+n', we have:
  579.  
  580. <mode>     `.' for ``extended command''
  581.  
  582. <main command>
  583.            `r' for ``read''
  584.  
  585. <options>  `yu+' for ``ymodem user after''
  586.  
  587. <what to process>
  588.            `n' for ``new messages''
  589.  
  590. <prompts>  ``which user'' and ``After what date''
  591.  
  592.    This patterning,  which aids a  user in knowing what  to expect and  even
  593. helps him/her to anticipate  how commands should be strung together,  is the
  594. ``orthogonality'' mentioned  before.   Orthogonal command structures  always
  595. do  the same  or similar  things  in the  same  way, or  by using  the  same
  596. structure.   It is one of the strengths  of Citadel, and one of  the glaring
  597. weaknesses  of many  other  systems.    It  makes  your system  look  unlike
  598. anything you or  your users may have  encountered before, but we think  it's
  599. worth it.
  600.  
  601.