tim@csvax.caltech.edu (Timothy L. Kay) (03/30/89)
[Moderators note:- I am real hesitant to post this. I mean, to be honest I can safely say that I disagree with most everything stated. On the other hand, Mr. Kay brings up some salient points. I'd rather not see this degenerate into the average "MSDOS compared to UNIX"-type discussion/war. So, try and avoid the inclination to react violently one way or the other. Please, please, please! Don't turn this into a flamefest! - Der] It is a fact that Unix is too complicated to be maintained by most PC users, while MS-DOS is not. I have been thinking about reworking Unix to be more like MS-DOS from the system management point of view. What does it take to make Unix easy to maintain? It seems to me that, assuming that all the hardware works correctly, people never have problems booting the kernel. I claim that the Unix kernel is quite maintenance free. The maintenance problem comes with all the parts of Unix built above the kernel. For example, let's get rid of passwords. Certainly, the average user can learn how to log in (we hope). The trouble is that I have never seen an absolutely fool proof way to make accounts. So why bother with the added complexity of accounts? When you boot the machine or hook up a terminal, why not simply get a logged in shell? How about the complexity of divvying up a hard disk? Why do people do that!?!?!? It makes things 10 times more complicated. True, it makes the filesystems more robust; if one partition gets blown away, you can still get your data. The ideal solution is to harden the file system (even if it costs in terms of performance.) After all, why does Unix sync? Why can't the buffer cache be implemented as a write-through cache? Not only would the file system be more robust, but the system wouldn't come to a screeching halt every thirty seconds. Unfortunately this requires kernel modifications. I don't even need to mention the complexity of packages such as UUCP or sendmail. Get rid of them! Let third-party software houses write new, easy to use packages. Sure there will be a lack of standards for a short time. The point is that having complicated standards guarantees that they will never get accepted. One could have an MS-DOS shell. This would be fairly simple to write. It doesn't even need to understand multitasking. If it is really going to mimic MS-DOS, piping could be implemented in the same way as MS-DOS, via writing a file. If somebody wants to use things the right way, they would pop into sh or csh command first. Otherwise, you would say "copy" and "rename" rather than cp and mv. I'm sure I've made some of you gag. After all, we all know that UUCP is implemented *the* correct way. I just hope there are some of you out there that see it my way. Some company should contract with AT&T to supply a Unix without all the crap. In its place, they would provide a bunch of simple utilities like the MS-DOS shell. Installation would involve putting in the boot floppy and turning on the machine. Then you would be up and running. You could copy /unix to the hard disk partition if you want to be bootable off the hard disk. (The boot sector would be replaced with automatically one that looks for the first bootable /unix or MS-DOS disk. There are lots of other ways to simplify things. For example, why is it the practice with Unix to put all the binaries in one place and their associated data files in another!? Why can't I simply have a /commands/gnuemacs directory that contains all the emacs files. I load this directory from a tape or floppies or something. I then add /commands/gnuemacs to my path, and it is installed! Wow! Magic! The application should look at argv[0] (plus the PATH environment) to figure out where its datafiles are. I shouldn't need to recompile the application to tell it where it should look for the stuff, and I shouldn't have to have any "standard" place (ala /usr/lib) for it to look either. Is there anybody out there that thinks I'm onto something interesting? Any comments? Tim Kay tim@csvax.caltech.edu