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 [EMAIL PROTECTED]