Date: Sat, 7 Jan 1995 15:49:33 -0500 (EST) From: Wankle Rotary Engine <wpaul@skynet.ctr.columbia.edu> To: freebsd-hackers@freebsd.org Subject: Graphical installations and such... Message-ID: <199501072049.PAA05164@skynet.ctr.columbia.edu>
next in thread | raw e-mail | index | archive | help
I know that what I'm about to say probably won't be well received, but this is how I really feel, so I have to say say it: All this talk of trying to come up with an X/Tcl/Tk/whatever-based installation system touches a raw nerve in me. I happen to feel that this is exactly the sort of thing that needs to be avoided. There's been a lot of discussion over how to maximize the chances of getting X11R6 up and running on a user's system on the first shot, what sort of workarounds to use if X can't or won't come up, and, in general, how to make things easy for (possibly inexperienced) users. Well I think this is the wrong thing to do. It sounds almost like people want to turn FreeBSD into Windoze. Well forget it: that's a horrible idea. FreeBSD (and UNIX in general) is *NOT* Windoze, pure and simple. Don't bow to the pressure of clueless users who whine about the lack of a nice, glitzy graphical installation program: you'll spend so much time trying to cater to their whims that you'll lose sight of the more important goal, which is producing a stable and robust operating system. I'd rather have a killer OS with an ugly (though reliable) installation program than a clunker with a pretty face (like Windoze). And it's just plain dumb for people to be concentrating on making the install look pretty when there are device drivers that need tweaking. I don't think a graphical install should be an option at all. (Sorry Jordan: I know the thought of a pretty Tcl/Tk installation script makes you all warm and squishy inside, but you can't paint with broad stokes when all you have are small brushes.) You need to take into account the lowest common denominator, and right now that's a text display. Supposing someone wants to set up a dedicated server and they decide to use a junky CGA display board and CGA monitor that they happen to have lying around. Or, better still, supposing they decide not to use a display at all: what if they want to hang a dumb terminal off a serial port? (As an aside, it would be neat if there were some way to tell FreeBSD to use a serial port as a console at boot time, instead of having to hardwire it with 'options COMCONSOLE.' Anybody working on this?) Sure, you could come up with both a graphical and non-graphical install to make everybody happy, but there's still the matter of cramming the extra software onto the install floppies. Everybody, whether they want a greaphical install or not, will have to carry a bunch of excess bagage around. And don't hand me that line about installing from the CD-ROM: there are still plenty of people out there who download FreeBSD from the Internet and who depend on the floppy install method to get it running. There are also plenty of people who own CD-ROM drives that FreeBSD does not yet support. Face it: the floppy install will be around for a while, so it's in everybody's best interests to keep things small and simple. (Also, you'd be surprised at the stupid things people will do when they have 600 Mbytes of space to play with: Sun's Solaris 2.3 install goes through all the trouble of loading OpenWindows 3.3 off the installation CD just so it can run a text-based installation program inside a shelltool window. I'm not making this up.) Look: the X server alone is big. The X libraries are big. Statically linked X binaries are very big. Tck/Tk is big. Just how were you planning on fitting those big things onto the boot disk, hmmm? Sure, if you mount a CD-ROM as your root filesystem you can get around this problem, but that won't be an option until FreeBSD supports more CD-ROM drives. The initial boot disk is needed to partition the user's hard drive so that the second stage of the install can be loaded. Once that's done, you could load all kinds of software from any number of 'cpio floppies,' but using a graphical installation just for the second part of the install is stupid: I refuse to believe that a memory-sucking X11-based monstrosity is really needed just to unpack a lousy bunch of tar files. That's what this boils down to, folks: burying a couple of otherwise simple operations under tons and tons of graphical manure, just to make some simpletons happy. It's been established that UNIX, in general, works, and works well. It's also been established that it isn't as maddeningly inscrutable as people alledge it to be. Hell, I learned to deal with it, and I'm an idiot. There's a reason for that (that I learned to deal with UNIX that is, not that I'm an idiot): I took C programming and UNIX internals courses in college. These didn't exactly elevate me to the same level of expertise as Ken or Dennis, but without them I'd probably still be fumbling around in the dark. (I'd also probably still think that VMS was cool, but that's another matter entirely. :) The point is that fancy shmancy graphics front-ends are no substitute for a couple of semesters of computer science courses. (Or reading a book.) There's only one cure for inexperienced UNIX users: experience. And they aren't going to get any if we hide all the neat stuff under some pretty pictures. Okay, so now you know that I personally don't want a graphical install. You want to know what I want instead? Okay, I'll tell you: I recently contributed some fixes that make swapgeneric.c work again. One of the things this does is allow you to choose what you want to mount as your root device, if you boot with the -a flag. (You need 'options GENERIC' and 'config kernel swap generic' for this to work. Check it out: it's cool.) This sort of brings us back to the days of the kernel-copy floppy, but not really. You don't actually need to copy the kernel from the boot disk onto the hard disk: you can just have it mount the hard disk and a kernel will be installed when the bindist is unpacked. This buys you a couple of things: - If you take the kernel off the existing boot floppy, you gain a bunch of extra room. (I always thought that doing away with the kernel-copy floppy was a bad idea). Ideally this extra space should be used for: o Splitting up the gigantic/do-everything/mega-huge install program into a couple of smaller pieces so that people with only 4 megs of RAM don't go insane. o Expanding/improving the existing install scripts so that they provide some new functionality and sanity checking. Make that a *lot* of sanity checking. o Possibly adding some extra utilities to make the scripts less arcane and more reliable. o Adding a *SHELL* for cryin' out loud! - The kernel could be moved to a seperate boot disk (making the existing boot disk a 'root' disk instead). You could use this boot disk to mount either the install floppy or a hard disk, or possibly a CD-ROM drive, without having to copy the kernel anywhere. This improves upon the functionality that the boot blocks provide: it's not perfect, but technically it could allow you to do strange things like mount non-SCSI CD-ROMs as root filesystems. You could then give the user the option of either mounting his CD-ROM, which could have a much nicer and more expansive install package on it, or mounting a second floppy (yes, you can take the boot floppy out and put in another one) which would have an *EQUALLY FUNCTIONAL* but possibly more conservative install package on it. - Installing the kernel would be done in the process of unpacking the bindist instead of copying it from the floppy. This means that the kernel on the boot floppy and the kernel finally installed on the user's hard disk need not be the same. The install kernel could be specially configured, if needed. - This boot disk can be used, in cases of dire emergency, to recover a system with a damaged/improperly compiled kernel image. Maybe you could make the boot disk into that fixit floppy that everyone's been asking for? That said, the picture I have in my head of the ideal install consists of the following elements: - A boot disk with nothing but the kernel and the boot blocks on it. (Or, at most, a shell and some utilities so that it can be used as a fixit floppy.) - A root disk that's basically similar to the boot disk we have now, only more bulletproof, less memory-hungry, better debugged and *FULLY TESTED*. (I don't care if this delays the 2.1 release: I'd rather we didn't imitate Sun and wait until 2.4 before we get it right. :) - Any number of cpio-floppies containing an equally bulletproofed and less memory-hungry second stage install package with numerous user- configureable options and more sanity checks than humans should be allowed to have. Note that I do not consider it bad form to increase the number of required install floppies: 3 or 4 would not be unreasonable. - The ability to use any CD-ROM drive that FreeBSD supports as a root disk instead of the floppy. This is a nice perk for people who can take advantage of it. (Be mindful of the fact that people who use this install method won't have any VM available, since you can't swap/page to a CD.) - The ability to do an install from a dumb terminal on a machine with no graphics hardware at all. You can do this with SunOS 4.1.x; why not let people do it with FreeBSD? - Slightly improved network configuration section. This is really a matter of completeness: if someone has several network interfaces, he/she should be allowed to configure them all from the install. - Copious documentation!! This brings me to my final point: documentation is far more valuable than graphical 'idiot-proofing.' Micro$oft assumes that users knows nothing, and they program their user interfaces accordingly. We should not do that. Rather than throwing our hands up in the face of dumb users and handholding them, we should instead try our best to turn them into something other than dumb users. To be blunt, UNIX is not for dumb users. That said, there should be ample documentation available for dumb users to educate themselves. There should be an install document that outlines the steps needed to install the software, explains briefly but completely (within context, of course) some of the concepts involved, and refers the reader to other more detailed documents for extra information. Be warned: the first person who says 'HTML' will be shot. Oh wait: I think somebody already said it. Make that the second person. There's a chicken-and-the-egg problem at work here: the user can't read an HTML document unless he/she gets an HTML reader installed, but they probably won't be able to get an HTML reader installed until they read the HTML document. Furthermore, there are a great many people (myself included) who feel *much* more comfortable with paper documentation. There are only a few kinds of formats I find acceptable for installation tutorials: - PostScript (which can usually be printed out easily and can include pictures and diagrams) - Plain ASCII text (for people who don't have PostScript printers or who wouldn't know what to do if they did have them) - Any source format that can ultimately be used to generate PostScript (for power users who can deal with oscenities like TeX) The installation tutorial should quickly explain: what FreeBSD is; why it is not the same as DOS and/or Windows (and why that's a good thing); what's involved in installing it (memory/disk space requirements, supported hardware, time required, disk partitioning techniques, etc...); and all the possible different installation methods. It should provide references to useful UNIX usage and administration books or documents, a truly useful troubleshooting guide (largely for helping people dig themselves out of disk partitioning problems), possibly a few pictures, and, most importantly, an index. This is not a simple 'README' file. This is a tutorial. It won't be easy to write, but many people will love you for it. All this talk of implementing another 'framework' is silly. The existing 'framework' is just fine: it just needs to be fixed up and debugged a little. Copying OS/half Warp isn't the answer either: IBM shipped OS/half with that Internet-access package to draw attention away from the fact OS/half itself sucks so badly. FreeBSD has the potential to be a high quality, professional OS that can more than stand on its own merits, without the need for glitz and hype. But for that to happen, people need to concentrate more on programming and less on marketing. Don't blow the budget on advertising before the product is ready to ship, okay? Well, I think I've gotten myself in enough trouble for one day. You can all quit cowering in the corner and uncover your ears: I'll shut up now. -Bill -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Bill Paul System Manager wpaul@ctr.columbia.edu Center for Telecommunications Research (212) 854-6020 Columbia University, New York City ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The Møøse Illuminati: ignore it and be confused, or join it and be confusing! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199501072049.PAA05164>