rjk (12/18/82)
The time has come when uucp has GOT to distribute job files into separate C, D, and X directories. It's ridiculous to have uucico timing out because of the directory search times. On top of all that, USG 5.0 uucp still has all of the old problems. Usenet has proven to be the best uucp systest ever. Is anyone out there attempting to centralize all of the fixes and enhancements to uucp? We ought to start distributing the latest uucp sources right with the netnews package. I think that 10 years of uucp Beta release is long enough. What is the concensus here? Randy King
swatt (12/20/82)
I proposed to a number of people (those who responded to Steve
McGeady's request for all known UUCP bug fixes and/or enhancements)
that we form a:
UUCP Module of the Month Club
Appended is the original letter; I never got enough response to
start the effort. Meanwhile, I have undertaken on my own to knock
off a module now and then when I have nothing better to do. I am
still interested in a joint effort as proposed in the original letter;
I would welcome any volunteers.
My own studies of UUCP indicate these things:
1) If you want to find bugs, look at ANY module for 30
minutes or so and you will find them.
2) You CANNOT just "fix" the bugs in UUCP -- the real problems
go too deep into the structure. Some very basic issues of
concurrency and naming disciplines need to be addressed.
3) Making separate subdirectories for "C." and "D." files is not
the answer, even if it does buy some performance gains. The
real answer is to impose a uniform queuing mechansim onto UUCP,
and package the functions now performed by "uuxqt" and "uucico"
as servers. This will go a LONG way toward making UUCP
portable to VMS, by the way.
4) It is possible to re-create a usable, efficient, supportable,
maintainable UUCP system that is packet- and protocol-compatible
with the present UUCP, but not by simply slapping bandaids on
the present version.
Here for example, are some problems with UUCP that need to be addressed
systematically:
1) Security. There are dozens of security holes in my version
of UUCP. Even worse, the provisions for security are NOT
explainable to mere mortals, who have to administer it. I
challenge anyone out there to explain how the specifications in
USERFILE really work. Aside from the glitches that need
fixing, a basic re-think of security needs is required.
2) Reliability. The present structure of uucico simply does not
allow it to handle errors properly. A lot of stuff is thrown
away that need not be; UUCP has no concept of "expectable"
errors.
How many people realize there is a namespace conflict in
certain "D.<mumble>" files created for export?
3) Maintainability. How many versions of UUCP are floating around?
How much of this is because a sensible set of options aren't
broken out into configuration files? How much of this is becuase
all UUCP code looks like it was written by people who don't LIKE
"C"?
======================================================================
>From swatt Thu Nov 18 18:07:08 1982
To: brl-bmd!dpk brl-bmd!guy cbosgd!mark cmcl2!salkind floyd!trb hp-pcs!peter
hplabs!kg ima!johnl ittvax!swatt mhtsa!lsc physics!gill reed!billst
seismo!stewart sun!shannon tekcad!ellis tekcrd!davec teklabs!clemc
tekmdp!grahamr tekmdp!steveg tpdcvax!bobvan ubc-vision!brent
ucla-security!lauren ucsfcgl!tef uiucdcs!essick utah-cs!lepreau
uw-beaver!jim
Subject: UUCP Module-of-the-Month Club?
Cc: swatt
I'm sure all of you are just as tired as I am of fixing UUCP bugs,
and keeping track of all the other people fixing UUCP bugs. Many
thanks to Steve Mcgeady for collecting all the known-and-fixed
glitches. I propose we form a:
UUCP Module-of-the-Month club
where each one of us undertakes to REWRITE a single UUCP module
so it conforms to standards of sanity. I will act to collect
all the re-written modules and build a totally sane UUCP system.
I won't presume to set the coding standards -- I'm sure each
of you adheres to some perfectly acceptable standard already.
However, for my benefit in putting it all together I suggest:
1) Functions in alphabetical order.
2) Access/Modification of externals at least
noted in comments.
3) Adequate notes (a README file will do fine)
on any internals aspects of module which are
either new as a result of the re-write, or
which aren't properly explained in the present
documents anyway and ought to be.
The modules in (my version) of UUCP are:
anlwrk.c getpwinfo.c pkon.c uucp.h
anyread.c gio.c prefix.c uucpdefs.c
assert.c gnamef.c sdmail.c uucpname.c
cfgets.c gnsys.c setline.c uudemon.day
chkpth.c gnxseq.c shio.c uudemon.hr
cico.c gwd.c strchr.s uudemon.wk
cntrl.c imsg.c sysacct.c uulog.c
conn.c index.c systat.c uuname.c
cpmv.c ioctl.c ub_sst.c uust.h
expfile.c lastpart.c ulockf.c uustat.c
gename.c logent.c us_crs.c uusub.c
getargs.c mailst.c us_open.c uusub.h
getcmds.c pk.h us_rrs.c uux.c
getopt.c pk.p us_sst.c uuxqt.c
getprm.c pk0.c uuclean.c versys.c
getpw.c pk1.c uucp.c xqt.c
Between all of us, this should amount to no more than a good day's work
or two apeace. I'm interested in people who will take responsibility
for understanding the workings of a given module and assuring the
correct and acceptably efficient operation of that module.
Once assembled, I would want at least the following test systems:
VAX 4.?BSD
pdp-11 non I&D
ONYX (shakes out byte-swap problems)
??? with System III.
Once tested, the system will be placed on deposit at central sites
(decvax, duke, ucbvax, etc.), and anyone who wants to get it can
do so from there.
Comments? Volunteers?
- Alan S. Watt
[decvax!]ittvax!swatt
ber (12/21/82)
#R:we13:-31800:harpo:6300005:000:985 harpo!ber Dec 20 19:39:00 1982 My most recent disgust with a spool directory over 100KB lead to make the following simplistic modification. For each site I distribute netnews to, I remade uucp defining /usr/spool/uucp/<EACHSITE> as the spool directory. There is now a /usr/lib/uucp/<EACHSITE> containing uucico, uuxqt, uux and uuclean. Each such site has an individual password entry whose shell is /usr/lib/uucp/<EACHSITE>. Approprite mods were made to the uudemon. files. Although mail is still spooled to these sites in /usr/spool/uucp, netnews invokes the site specific uux, thus eliminating 95% of my problems. A front end uux and uucp could make it consistent, but it's not necessary in my case. Now if one of my netnews neighbors goes off the air for a week, only their spool directory becomes unmanagable, and I continue to talk to everyone else. Although this 'solution' is trivial and requires no changes to code, some of you may find it useful while you're waiting for uutopia. brian redman
rusty (12/21/82)
From: rusty (Rusty Wright) (1) i think you should enforce a more rigorous coding standard. i don't like the idea of the various models being in different coding styles. i vote for the coding standards used by the ingres project, this was posted to the net a while ago. you might be able to get a copy from ucbvax!eric. (2) always use dynamic allocation (malloc/realloc) and don't use those stupid static arrays. i just don't understand why people continue to use static arrays especially in programs that are expected to be portable and behave robustly in a variety of environments. i have a package that implements dynamic strings for operations like strcpy, strcat, etc., if you want it let me know.