Orville Write Homepage
Version 2.55
Jan Wolter
Orville write is a
reimplementation of the Unix write program adds many nice
features while remaining close to the standard Unix program in spirit.
It has been very heavily used on M-Net since 1985 and on Grex since 1991, as
well as a few other systems.
It is a ground-up reimplementation using no proprietary code.
It's available under a Berkeley-style license (no charge, no restriction
on commercial use, just don't take my name off of it).
The current version is very portable and should be easy to install
on most Unix-flavored systems.
Orville write was written for use on M-Net and Grex,
both public access unix systems in Ann Arbor, where writing to each other
was a popular adjunct to the conferencing and chat areas.
As such, many of the features are designed to support a system
featuring a delicate mix of novice users and hostile pranksters, plus a lot of
people who just want to talk. It's user interface is pretty much identical to
the normal write program, but it offers many low-key extensions and
improvements.
We strongly recommend installing Orville Write on any system where 'write'
is heavily used. The added complexity is probably not worth the trouble
on systems where there are few users or where talking to each other is not
a big part of the culture.
Features
-
It is always possible to write someone who is writing you,
even if his permissions are off.
-
Doing "write" without arguments replies to whomever is writing you.
Similarly, if you do "write whoever" and whoever is logged in more than once
it will always write to the tty he is writing you from.
If none of his logins are writing you, the one with the shortest idle time
is selected.
-
If you write a person who is writing someone else, you will be asked if
you want to interupt them before the connection is made.
-
All control characters you type are expanded before sending them to the
other user.
-
When you disconnect, the user will receive an "EOF (your-login)" instead
of a simple "EOF". (This is done to aid users in identifying who just
did a "write whomever < /etc/termcap" to them. The identification at the
head of the messages scrolls off.)
-
It is possible to set up a link to write (called, perhaps, "jot") that will
send each character to the other user as you type it. This is less boring
for the other user, since he doesn't have to sit there waiting for you to
finish a whole line before he has anything to read. However, it will not
go into character-by-character mode until the other person has replied.
(Since it's really annoying to have loose characters from someone jotting
you getting mixed into the output from other programs you are running.)
-
It is possible to set up a link to write (called, perhaps, "tel") to send
quick one-line telegram messages to other users. Many people like to use
this as a way to hold a conversation by sending telegrams back and forth
while still doing something else on their terminals. You can always write
or telegram a person for up to four minutes after he sent you a tel, even if
his permissions are off. There are provisions to prevent flooding people
with tels, limiting the number of telegrams that can be sent within a specific
period of time.
-
You can set message permissions to allow only selected people to write you, or
to block out only selected people. Doing "mesg ye" or "mesg ne" means
"yes, with exceptions" and "no, with exceptions" respectively. If you set
"ne" then no one can write you except the users whose logins are listed in the
.yeswrite file in your home directory. If you set "ye" then everyone can write
you except the users whose logins are listed in the .nowrite file in your home
directory.
-
Setting "mesg -bn" will case the bell not to ring when people write you.
-
Doing "write ." writes again to the last person you wrote. This is
especially handy with the "tel" command, where you often send a sequence
of messages to the same person.
-
There is a facility for users to designate themselves as "helpers". Then
if a novice does "write help" he is connected to one of the helpers
currently not busy writing someone else. If there is more than one
candidate, one is selected at random to distribute the workload. It is
possible to configure the system so only users listed in a file may
designate themselves as helpers. Helpers can do "mesg -h y" to turn on
their helper status, or "mesg -h n" to turn it off. This is our main
mechanism for helping newusers on M-Net and Grex. We also have the "finger"
program display question marks by the names of users who are helpers,
though source for finger is not included in this package.
-
The "helpers" command lists helpers currently on the system.
-
There are two additional shell escapes. Doing "!ls" at the begining of
a line does the normal shell escape. Doing "|ls" sends the output to the
other user instead of to you. Doing "&ls" sends the output to both of you.
These are useful in instructing users about Unix commands through write
and for including files into your conversation (with "&cat file").
-
When you receive a message from someone who is su'ed to some other account,
you are notified of both of his identities. The name from /etc/utmp is, of
course, the one you reply to, but in many circumstances this is not as
reliable an indicator of the identity of the person who is writing you as
his uid, so mentioning this name as well can reduce confusion.
-
There is a configuration file which an administrator can edit to, among
other thing, disallow piping files through write by disabling the & and |
shell escapes and requiring standard input to the program to be a tty.
This is meant to be turned on when you have a temporary excess of twits
annoying other users.
-
The "mesg" command may be used to set a flag telling the system to record
telegrams sent to you. If you have this turned on, the "huh" command will
redisplay the last message sent. This is useful when telegrams get
swallowed by other activity on your screen.
-
It is possible to separately set "write" and "telegram" permissions with
the "mesg" command. Thus you can depermit telegrams being sent to you,
without depermitting writes. You can also specify a preference for being
written in character mode or line mode.
-
The "mesg" program may optionally be compiled to allow a disconnect
option. Doing "mesg N" (as opposed to "mesg n") will not only turn you
message permissions off, but disconnect anyone who is currently writing
you. Doing "mesg d" disconnects the other user without turning your
permissions off.
-
There is an "amin" program (that's "am in", not the Ugandan guy), that lets
you do "amin vi filename". This runs "vi filename" normally, but if anyone
writes you while you are running that process, he will be told that you are
running "vi" and asked if he still wants to write you. "amin -n vi file"
just turns your message permissions off for the duration of the vi session,
restoring them when you are done.
"amin -np vi file" will record any telegrams anyone send you while you are
editing, and automatically display them when you are done editing.
Caveats
This program must run SUID-root. (Otherwise you couldn't write
people who are writing you even when their message perms are off.) However
I believe it is secure. Of course, I also believed that before I
found and fixed some significant security holes.
As mentioned in the HELPERS discussion, we have made some associated mods
to the finger program. I'm not currently supporting any version of finger,
so you're on your own if you want to do things like flag helpers on the
finger screen. We've also adpated ntalkd to respect Orville write permissions.
A copy of our modified ntalkd is available, though not fully supported.
Our original purpose in rewriting write was that our old system (before
you were born, kid) had people's
tty's writable to others when their message perms were on, and this led to
too much "cat /etc/termcap > /dev/tty04" kind of stuff. This write
program supports a choice of two different workarounds for that problem, but
neither is simple to install. You either have to modify login (and possibly
finger and other programs) or you have to live with some inconveniences. Of
course, no modern Unix systems have this problem
(tty's are owned by some "terminal" or "tty" group and only group
permissions are ever turned on).
So this is really academic these days and
there should be no problem installing write.
Getting It
Orville write source:
orville-write-2.55.tar.gz
Ntalkd-0.10 (not the latest version) modified for use with Orville write:
ntalkd-0.10ORV2.tgz
Someday I'll redo this, working with a newer version of talkd.
Tue Sep 28 23:43:54 EDT 2004
E-Mail Jan Wolter