LIBRARY.CTL   Microcomputer Diskette Library Control.

04/25/81.     T. McCormick.


	Control  of computer libraries is well developed in large 
computer  operations.  Only  tiny operations can get  by  without 
specific  rules for naming programs and data  files,  segregating 
test files from production, indicating as-of dates, etc.

	With the rapid growth of microcomputer use,  and with the 
continual improvement in disk storage capacity per  dollar,  many 
business  and  hobby users are discovering that with  no  library 
plan,  too  much time and effort are wasted looking for the right 
version, starting to run the wrong version...again, etc.

	It  is  possible  to acquire and  store  more  files  and 
programs than you can manage without some library system.

	Micro operating systems,  editors, and utilities offer an 
occasional  assist  in one way or another such as  creating  .BAK 
backup  file copies automatically.   But the user is left to  put 
his  library control scheme together by himself.  He often  lacks 
the  experience  which comes from years of grappling  with  these 
problems,  and  is  forced to discover solutions one at  a  time.  
This results in a weak start, and continual change.

	I have made many mistakes related to computer  libraries, 
and  have  seen many others.   As computer center manager  for  a 
nationwide accounting firm, we daily were working with files from 
all kinds of outside program libraries.   I would like to pass on 
a  few suggestions based on my experience with about 300 computer 
libraries over an eleven year period.

	The following is not intended as a exact prescription for 
you,  you will have to decide what fits,  and what doesn't.  I'll 
use  my library control methods as an example,  knowing that  you 
will have to adapt it to your circumstances.

	Here is a summary of important rules:

	1.  Never alter a "distribution" diskette in any  way.  A 
distribution  diskette is one you receive from someone else,  and 
for which you usually have paid money.   You may have to send  it 
back  to get a new release at the "update" price rather than  buy 
another  license!   You may not be able to read it next year  and 
you  want a fresh copy at nominal charge.  You may want to get  a 
bug fixed at no charge.  Do NOT change anything on this diskette. 
N O T H I N G . 

	2.  A program that is one bit, one byte, or one statement 
different  from another MUST have a different name.   There is no 
such thing as	"same as....,  except".  Resist the temptation to 
leave the names the same when they are "only slightly" different.  
Subtle differences are hard to sort out six months later!  Subtle 
differences may be much harder to find than large differences  or 
gross errors.

	3. Follow your system rigidly.

	4. Label things immediately, while they are fresh in your 
mind.  Little peel-off dots and labels are inexpensive,  and easy 
to use.  Office supply stores have a rainbow assortment (Avery is 
one  of the brand names) and they are cheap.   Color  coding  can 
segregate  test from permanent files,  release 2 from release  3, 
etc. without any writing.

	5.   Begin  library  control  at  once:  it  gets  harder 
geometrically as you acquire more stuff.

	6.  When you initialize/format a diskette,  place a small 
peel-off  label  (I  use  one-inch  dots  on  it  indicating  the 
operating system version you used, date, and density or format if 
you have more than one. Eventually, you will have more than one.

	7.  Specifically  label backup copies,  and write-protect 
them.  Store them separately from daily-use diskettes. Store them 
inside,  where the humidity and temperature are fairly  constant. 
Exchange  backup storage with another user,  if you can.  Do  not 
store diskettes or cassettes in your car trunk!

	Why bother with backup?   Have you ever entered 

	A>ERA *.*     instead of    A>ERA B:*.*    or

	A>PIP A:=B:*.*[V]  instead of
	      B:=A:*.*[V]

	HUMMMM?

	You say you're not that stupid??   OK.


	8.   Establish  categories,   and  label  your  diskettes 
accordingly.	For example, Proprietary software such as MBASIC, 
CP/M, etc could be replaced by a dealer.  Your modifications, and 
custom programs could not.  They should be protected to a greater 
degree.

	9. Never keep all your backup in one place. Two suitcases 
ten  miles  apart  is  more secure  than  one  bomb-proof  vault.  
Remember, with all the electrical equipment in one computer room, 
a  small  fire could destroy alot of diskettes in a  hurry.   Bet 
you've got 'em stored close by so they'll be nice and handy too!

       10.  Data-file diskettes change periodically.  Use a peel-
off label to indicate clearly the filenames,  and as-of date.  Do 
not  store  backup  of  data files on  the  same  diskette  under 
different filenames.  Diskettes can become unusable no matter how 
careful you are.

       11. I recognize three flavors of diskettes:
		a. never used.
		b. initialized/formatted, not used.
		c. in use, contains one or more files.

Come  up with a scheme to indicate each of these.  I do not put a 
peel-off file label on never-used diskettes.  If I see a diskette 
with  no  peel-off  label  at  all,   I  know  it  has  not  been 
initialized/formatted.   When I initialize/format a  diskette,  I 
place  a  one-inch  colored dot on it  indicating  the  operating 
system  version,  today's date,  and the recording format/density 
with  which it was initialized/formatted.  Such diskettes have  a 
directory,  but  do not have any files.  Every diskette  of  mine 
which  contains a file has a large peel-off label indicating  the 
name(s),  or something else indicative such as "SYSTEM",  "WORK", 
"MBASIC", etc.

	Never  write  on a distribution copy,...the diskette  you 
received from someone else.  If you alter such a diskette in  any 
way, you usually void any warranty. Do not add to it, delete from 
it,  or rename anything.  Do not even write a .DOC file, a volume 
serial  number,  or  anything else on it.   You should  label  it 
"DISTRIB", and make a complete fresh copy from which to work.  If 
you have to send it back for an update to the next release, or to 
get a bug fixed,  or because you can't read it anymore,  etc. you 
can not expect the people you got it from to listen to your story 
of how "..it's exactly like when you sent it to me,  except....". 
It  is  bound  to  cost you money sooner or later  if  you  alter 
distribution diskettes.

Since you will not be altering them,  you must count on  peel-off 
labels to identify your distribution diskette contents, etc. 

		A. Apply a peel-off label saying
		   "DISTRIB".

		B. Write the date received on that
		   label.

		C. Write protect the diskette.

		D. Make your working copy from which
		   you will begin tailoring.
		   Clearly label this copy.
		   I call mine "DISTCOPY".

		E. Make a 2nd copy of valuable stuff
		   for an off-site location. This
		   might be your office, or another
		   user. It should NOT be your car
		   trunk, or other outside storage.
		   Humidity will ruin your diskettes.

		F. Store the "DISTRIB" diskette with
		   other "DISTRIB" diskettes, not with
		   the working copies of that system.
		   Physically separate backup copies
		   from those you use daily.


	Now that we have secured your distribution diskette,  and 
made  a working copy,  we are ready to tackle one of the cruelest 
problems in using a computer.  Give some thought to the NAMES you 
apply to programs in the process of being changed.

	One  scheme is to add a "suffix" to the filename,  or  to 
change the filetype to .001  .002  etc.

	You  want to keep some consistency so that the names  are 
meaningful,  and wildcards can be used with utilities   (example:  
PIP  B:=C:PROGM???.BAS[V]).   But  you  must  name  your  changes 
differently  from the distribution filename,  and from your other 
changes. How will you know which is your latest version? How will 
you know which is your latest version which works?

	It  is a mistake to count on keeping the  same  filename, 
and using different diskettes.  The trend is rapidly toward large 
capacity,  non-removeable hard disks.   In a few years,  everyone 
will  have  5 or 10 MB disks!  Anyway,  it is easier to  learn  a 
disciplined approach,  and follow it,  than to spend alot of time 
making  gobs  of  filecopies and then trying to  remember  what's 
what.

	If  you begin changing a program called  BUDGET.BAS,  you 
might  call your first  modification  BUDGET01.BAS,  BUDGET1.BAS, 
BUDGET.001, BUD1.BAS, B1.BAS etc. It is a matter of taste, and of 
how large your library is.   The larger it is,  the more specific 
you have to be...you might have more than one budget program.  If 
you  have an editor,  and you save the basic program as an  ASCII 
file  (ie.  SAVE "B:BUDGET01.ASC",A),  you may want to adopt  the 
.ASC  filetype naming convention to clearly identify it as  ready 
for your editor, or to be modemed to another user.  Be aware that 
some operating systems have a limit of six character names.

	As  you  modify  programs,  add remarks in the  front  to 
indicate  the as-of date,  version,  etc.  Professional  programs 
display this information as they are read in to be executed:  for 
example,  note  how MBASIC clearly identifies it's  version/date.  
In  that  way,  the  user knows from looking at the  CRT  if  the 
correct version of the program has been loaded. Many programs are 
dependant  on  the  release/version  of  the  operating   system. 
Unfortunately,  the  program names often do not change,  but  the 
programs  are  different.  Some will not run with  new  releases. 
Peel-off  labels  will help with this  problem  also:  ie.   "1.4 
depen", etc.

	After  you have migrated to a new release/version of your 
operating system,  a new set of problems appear.  Programs  which 
used to work,  now do not. You may have to rename some of them if 
you  are  going  to  retain old  versions  (everyone  does).  For 
example, you may want to rename CLIST to CLIST15 or CLIST16 if it 
runs  on ver 1.5 or 1.6.  Then you can use CLIST for  the  latest 
version.  This  approach  requires  you to rename a  lot  of  OLD 
programs  that do not run on new releases.   I prefer this to the 
next  method because I do not mix much among different  versions. 
If I did, I would do as below.

	Another approach (please do not mix this with the  above) 
is  to  identify  the release in the name  (CL15  or  CL16),  and 
perhaps shorten the names at the same time.   But this starts you 
talking a "different language" than the documentation,  and other 
users.  You  have to translate their conversations to your naming 
scheme.  If  you  are bright and independent,  or  shorten  names 
anyway,  then this has the advantage of avoiding a lot of  donkey 
work  at  conversion time.....you rename on your working copy  of 
the DISTRIB diskette,  and then PIP them as you go along.  You do 
not have to go back and rename a dozen copies of every program.

	There  is no right or wrong way;  it is a matter of  your 
style.   Remember though,  you can't avoid the work.  It's just a 
matter of when and how you prefer to do it.   I prefer NOT to mix 
different  releases if I have a choice.   I would rather generate 
entire new diskettes for the new release.   In this way,  I  have 
complete diskettes to go back to if I want (or need) to.  No half 
this,  and  half  that.   I avoid having to flip something  on  a 
diskette  to tell it which flavor I want to run.  If you get very 
many of these "switches" on a diskette, it is a long process just 
to  find out where your beginning from!   I make specific  copies 
and  label  them  as  to options in  effect  on  that  particular 
diskette.  Saves me time and nerves.

	I hope one or two of these ideas are helpful.  Good luck.

	*********************************************************
