Linux Ground Rules
I recently overheard a somewhat heated thread on a Linux mailing list between an experienced Linux user and an apparently experienced Windows user. The new user felt the experienced user was elitist and condescending. The experienced user felt the Linux newbie was unwilling to ``start over'' again learning a new operating system from scratch. The newbie wanted to carry his Windows expertise directly over into his new Linux system, which isn't possible. I'd like to talk a bit about some ground rules for all who would ``give that Linux thing a try,'' and for all who might volunteer to help them.
Unix is not Windows. About the only way in which Linux resembles Windows is that it is an operating system, and it does have a windowing environment. It does help you do your work, but it does so very differently, and therin lies the rub.
If you're not willing to learn to crawl, then walk, then run, you'll likely run into a lot of problems with Linux. Turnkey Linux systems are not the reality, yet. Until they are, you have to embrace a fundamental paradigm shift. If you are unwilling or unable to do this, you're better off sticking with what you know. No offense or condescension intended here.
Those of us who have been using Linux or any Unix for several years remember the frustration of our first steps. But though we can answer questions of new users, no one can instill the ``beginner's mindset'' necessary for this learning process.
If you're an experienced Windows or Mac user, there's a fair amount you have to ``unlearn'' to successfully migrate to Linux.
Multi-user Systems. One of the first and most pervasive culture shocks for the Linux newbie has to do with Linux being a true ``multi-user'' system. Now, you've heard this term before, but unless you've used a large time-sharing network in a single userspace for an extended period of time, you probably have an inaccurate idea of what ``multi-user'' means.
Windows can give the appearance of being a multi-user system by offering a ``network logon'' prompt, and Novell has offered similar functionality for years, and NT is a large step in the right direction, but Unix is still way different. NT is a genuine attempt at being a multi-user system, because it tries to segregate user space and memory and processes from those which the system and other users control, just as Unix has done for 30 years or so. But Windows 9X can't begin to do this because it is merely an extension to DOS, which was always intended to be a single-user system.
DOS was a hack of CP/M, which was originally designed for a 4-bit microprocessor. (Today's PC microprocessors are usually either 32 or 64 bit processors.) Tim Patterson of Seattle Computer Products tried creating QDOS (Quick and Dirty Operating System) by copying CP/M around the late 1970's. Bill Gates et al bought this in 1980 for $50,000 for it's historic deal with IBM as the OS for its Personal Computer.
For Microsoft to acquire and maintain its legendary market position, software upgrades had to promise and deliver compatibility with previous versions. This could only be achieved at the expense of not altering its underlying (primitive) architecture much. So, most all of the early limitations imposed on DOS by early hardware restraints had to be duplicated in later versions of DOS and Windows 9X to retain compatibility, even though modern hardware was much more powerful. Even today, Windows 9X can only try to look like a multi-user system. But it's like putting Nike's on a cow and entering her in the Boston Marathon.
A true multi-user system has to allow perhaps hundreds or thousands of users to simultaneously access various databases, run networked applications, compile programs, access shared disk drives, communicate with many different types of hardware, and much more, all without crashing or requiring the entire system to be rebooted. This requires that all processes run in their own private spaces and not trample other users spaces or the system's spaces. To accomplish this, each user has a user ID and associated permissions that the system tracks and uses to schedule and prioritize tasks. The system itself has numerous IDs for its jobs, such as administration, house cleaning and scheduled self-checking. All of these tasks must operate without impinging on one another or endangering system stability. If the system becomes unstable, it's not just a single user whose work is jeopardized; it's everybody's! Therefore, the needs of the many offset the needs of the one on a multi-user system.
Convenience vs Stability. DOS and Windows would have been too inconvenient for the home user to incorporate multi-user functionality in early or even recent versions. Being a single-user system, everything operates in basically one space. Processes and memory spaces are not segregated and protected from one another as they are under Unix and its ilk. This makes things like accessing modems, network cards, sound cards, CD-ROMs, floppy drives, and hard disks much easier and less complicated under Windows than under Unix or Linux. But the instability of Windows in this day and age of multi-media computing stems from this very ``feature'' in Windows. Its ease of use and convenience are also the reason for the frequent BSOD (blue screen of death). Because these processes and memory spaces are accessed with insufficient protection from one another, conflicts often result in a system lockup.
So, Linux and Unix are just a different animal from DOS and Windows, and even from NT. When you set out to learn Linux, you're dealing with a real multi-user system, with all its complications and built-in safeguards. Once you get used to these ground rules, you'll be much more comfortable with Unix/Linux than with Windows, because you'll recognize that you literaly can do anything with it. Windows and DOS compromised stability and flexibility for convenience. Unix compromised simplicity for strength, flexibility, and the ability to do move any sort of mountain you want.