[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: /home/user/var ?



On Tue, May 16, 2000 at 08:23:43PM +0200, Tomasz Wegrzanowski wrote:
> Hurd is not only a kernel/OS. IT is also a place where UNIX design
> mistakes are fixed o be used wider.

... which is something I'd like to see being done more. [This should be
sufficient advance warning that whatever follows is likely to be mildly
incoherent. It's late at night and I've had a long week, so bear with me.]

Not that Unix has any particular problems with what it's designed to do. But
we could certainly make use of a slightly wider viewpoint; most of the new
work being done in the free OS world at the moment seems to be cloning what
the commercial Unices or Windows can do.

I think that the real problem is that there isn't much documentation or
chance to experiment with other OSs. The typical free OS developer (like me)
has probably used a couple of versions of Unix (or clones), Windows, and
that's about it. In many cases, this is because we have the opportunity to
use anything else; most of the other environments---such as ITS, Multics,
TOPS-10, TENEX, VM, VMS, Genera, NeXTStep, Plan 9 etc.---will only run on
expensive, obsolete or difficult-to-emulate hardware, and the software is
rarely available. There's also little available documentation about any of
these systems (multicians.org being a rare exception---well worth a visit).

The Unix bias here does tend to limit the sort of ideas we come up with. For
instance: one of the easily-available bits of documentation about ITS is a
paper about what ITS called "PCLSRing", which pretty much blew me away when
I first read it. Under Unix-like systems, if a system call gets interrupted,
it will return an error code, so it's necessary to write programs that are
capable of restarting failed system calls. Under ITS, when a system call was
interrupted, ITS would modify the arguments to the call so that it would
continue where it left off, and reset the PC so that the call would be
executed again with the new arguments when the interrupt handler returned.
It makes userspace code much simpler. But there's no way that that would
ever get implemented in any of the existing free OSs, because it's
completely different to Unix.

Take a look at some point at some of the features that RMS was thinking of
back in 1985 in the GNU manifesto. Although many of them have been
implemented in the GNU tools or in other free software (such as long
filenames, journalling, filename completion and terminal independance),
there are a few interesting ones that, while available in the early 80s,
aren't common today: such as file version numbers.

What this means is to have versioning built into the filesystem, rather than
done as seperate programs (a la RCS). This was available under ITS. The
commercial version-control system ClearCase does this (by using a custom
FS); you can see the most recent version of a file by using its filename
("foo"), or previous versions by using "foo@@/version". (The @@ directories
don't appear in directory listings, by the way.) This would be very nice to
have in a free OS, particularly for config files and similar; a Hurd server
which allowed you to apply versioning transparently over an existing
filesystem would be a sensible implementation.

Another idea would be combining the debugger and shell. This would mean that
when a program segfaults (like w3m just has on me), I would be in the
debugger immediately, and could find out what was wrong and fix it.
(LISP and Smalltalk systems often do this, and Hurd's suspend-on-crash
server has similar functionality.)

This is just one example; I'm sure there are plenty of other features in
"forgotten" OSs which would be useful to us. So, essentially, my plea is
that if you've got any information about interesting (or not-so-interesting)
things in other OSs, then try to make it available to others to pick ideas
from.

Hmmm. Rant over. (By the way, does anyone know if it's possible to get a
working ITS image from anywhere? Apparently there were snapshots of MIT-AI
and MIT-MC available at one point, but they were taken down. There are
images of the bootloader and of the DDT shell/debugger, but that's hardly a
full system. And yes, I know I'd need an emulator, but I'd be willing to put
some effort in to help get e10 working.)

ObOnTopic: I think ~/var is _really_ ugly. If you want to be Unixy, it
should be ~/etc. But I've got that kind of namespace pollution in my home
directory from GNUstep, Netscape, Mutt and Apache already---I'd rather keep
the dotfiles, or at least move them to a .config directory so they don't
show up in normal dir listings.

-- 

Adam Sampson
azz@gnu.org



Reply to: