How Windows Power Users Should Approach Linux.

3rd July 2004

This essay is a result of an email conversation I had this week with one of my juniors from my alma mater, K. J. Somaiya College of Engineering. This guy, Prasad, is what one would probably call a Windows “Power User”, meaning he’s used, tweaked, programmed in Windows for the past few years. He’s the kind of guy ordinary people turn to when their “computer is broken”, and no doubt his friends (all Computer Science undergrads) ask for his help too. Now, he’s giving Linux a try (I guess power users get bored of Windows too, some day!) So he borrowed my set of Fedora Core 1 CDs. The other day, he sent me (and his friends) an email, which I have quoted below. Please note that this email has not been edited by me in any way.

Anyway, it was the most honest evaluation of a Linux install/preliminary configuration I had ever read. Perhaps that is because I knew the reviewer and his skill level personally. Towards the end, he also included some humorous and sarcastic ‘advice’ to his friends, who were still Linux virgins. In my reply to his email, I commiserated with his genuine complaints, offered solutions and agreed with him when he pointed out Linux’s (specifically, Fedora’s) good points.

When I finished my reply, I realised that he, like all such potential converts to Linux, approach the whole phenomenon of Linux in a wrong manner, with the wrong mindset. They look for in Linux the exact same things they were used to in Windows, right from installation, to the desktop, to the tools, to additional software. That is why they are put off by partitioning, multiple desktop environments, editing configuration files – because they never have any of this in Windows, and are equally enthralled by the “built-in” security, eye candy, the included software, even tabbed browsing – again, because Windows never offered them these luxuries. I concluded that this is because they know nothing of the Linux “culture”, have had no exposure whatsoever to the Open Source Community, have never known that there existed a UNIX hertiage, a UNIX culture – all in all, the “Tao of Linux”. Only when they imbibe all of the above will they ever feel comfortable with using Linux on an everyday basis. They probably have to “unlearn” Windows, to an extent.

I continued my email, then, with my advice to him on how he ought to think of Linux itself, and using Linux, differently from Windows. As I wrote in the email, I “poured my heart out”. It was spontaneous – I had not thought about it, not jotted down points or organised my thoughts – but what resulted was a surprisingly lucid and hard-hitting piece of literature that seemed to convey everything I had wanted to tell the dozens of people who had asked me for help on how to “use Linux”.

Here is Prasad’s email, and my reply to him. Do let me know what you think of it.

Hi Rahul and others,

Please read on and reply with your views or experiences.

Why am I writing this in vi?

A few days ago I got my hands on Fedora core 1 installation CDs. As per the tradition I installed the brand new Linux system and started working on it. The first thing that I always have to do after installing Linux is adding my windows drives to automount by edition /etc/fstab. I wonder why has Red Hat not come up with something that automates this procedure as only a fool will install Linux onto the PC without any windows version (Only Mandrake 7.1, I guess…., does this identification and auto mounting of windows partitions for you.). After completing my traditional installation configuration which cannot afford to include luxuries like KDE as my system runs on a 64 MB RAM chip and with onboard 16 MB video memory, I happily logged onto my brand new Linux FC1 machine. It is always nice to listen to some music when you are really happy. What the heck!!! Xmms does not support mpeg anymore due to some licensing problems blah blah blah….. This did not surprise me though, as after every fresh Linux install I always wait for something shocking (In some earlier version they completely forgot to include xmms…..). The real fun comes after this…..

I needed text browser for some reason a few days later. I had to install it using add/remove applications in the control panel as it was not included in the basic installation schema. I also thought of adding a few more applications like mysql which is surprisingly not included in basic database support by default, etc. I selected approximately 25 new apps. to install and 5 apps. to remove. Now before you read next part I want to first give you a few tips and tell you about a few mistakes that people always do and then later curse innocent Linux developing team.

Always see to it that you have plenty of time to do any system changes or installing Linux
for that matter as some unforeseen situations may arise which even linuxers (this term a references those people who claim to have a very satisfactory working experience with Linux) cannot explain. It took me 4 iterations and 3 days to install a basic Linux configuration on a PC in my college (Ah college PCs…..Always problematic. Isn’t it?). Every time some a new error message would flash on screen (that too after 25/30 minutes when the installation is almost complete) informing me that I am a fool and don’t know even the basics of installing an OS and that perhaps I should read a few reference books before trying something as adventurous as this. In an other incidence the installation simply refused to detect the extended secondary memory on my friend’s computer. The poor fellow did not upgrade his BIOS and so his BIOS could not detect the newly added 40 GB HDD. Windows though did not even complain of such a problem(Ah, these windows guys……I dont know how do they manage to be that over smart). Apart from these minor things Linux installation is fairly simple and even a novice could manage it.

Take a few hours’ rest before attempting to upgrade a Linux system.I will explain this later…but probably this is the most important tip as otherwise you may end up losing your beloved PC or have a nervous breakdown.

Forward this to everybody you know and ask them to please reply to me if anyone has any answers.

Now the rest thing. I selected all add/remove applications, put FC1 CD in my CDROM drive and decided to spend next half an hour watching Indianapolis GP as system was being upgraded. As this thought struck my mind my CDROM drive ejected and a message flashed on my screen indication to put the 2nd FC1 CD to continue installation. I was amazed at the speed of upgrade and thought of first completing the upgrade (as I thought it would take 5 minutes more at this speed) and then watching schumi. I was correct I guess, in less that 15 seconds my CDROM drive ejected out again and a message informing me to put in FC1 3rd CD into the CDROM drive to continue installation. Frankly speaking I was impressed by this upgrade speed. I put in the CD for upgradation to finish and again the same thing happened. My CDROM drive ejected out and a message informing me to put in FC1 1st CD flashed again. Believe me people this fun continued for next 20 minutes and involved at least 12 ejections and reinsertions. I have nothing more to say….Have Fun. the only question to be asked here is “Why am I writing all this in vi?”.

Prasad R. Shahane.

My Reply

Venky (Prasad is known as “Venky” in college; why is a long and irrelevant tale: Rahul) – please forward this email to all those to whom you sent the original email – Saket, Alhad, Mandar et al. I am not certain if they want Linux-related emails from a senior in their inbox directly!

UPDATE: I have not sent you any of the attachments I have talked of in this email – apparently your account is over quota, my original email was returned. Please clear up your acct, or give me some rediff address, so I can send you 1,) the IceWM article, 2.) The Art of UNIX Programming. For now, read my email:

Hi!

I am thrilled to read such an honest evaluation of a Linux newbie’s attempt to get a working Linux install! I am so used to the sheer indifference and lethargy that my classmates/seniors showed towards Linux, it’s refreshing to find juniors who at least take the first tentative steps towards trying Linux out. Please read my opinions on this below. Remember that I am not trying to defend Linux’s shortcomings – as an experienced Linux user, I am only too aware of them!

Installation Pains:
Well, everyone goes through this kind of trouble when they’re starting out with Linux. Venky, let me tell you that you’re very lucky to start with FC1 – Think of the 6 months that I spent unsuccessfully in trying to get my graphical configuration working with RedHat Linux 5.2 in May 2000!

Windows partitions:
Come on, Venky – during the partitioning procedure, did it not occur to you to mount your Windows partitions then and there? Just click on your Windows partition, choose the “Leave Unformatted” option, and mount it as /mnt/win2000 or something. That simple! In fact, this is an advantage over Mdk as Mdk chooses complicated names like /mnt/hdb1 or similar. This is something that any linux newbie with basic concept of mounting will get!

MP3 Support:
OK, the exclusion of xmms in previous versions (was it RHL 7.3?) was a blunder. The RHL team acknowledged that. And the exclusion of MP3 support in all subsequent versions of RHL/FC is a real pain. At least they should include clear instructions on how to download/install the plugin, rather than some bombastic statement about licencing issues that the end-user does not give a shit about. In case you haven’t figured out already how to install the plugin, here is the rpm:

http://dag.wieers.com/packages/xmms-mp3/xmms-mp3-1.2.7-0.rhfc1.dag.i386.rpm

As root, type rpm -Uvh xmms-mp3-1.2.7-0.rhfc1.dag.i386.rpm

KDE? GNOME?
Venky, with your kind of PC configuration, I think running a full-fledged KDE/GNOME desktop is out of the question. Perhaps you should try IceWM. Maybe use XFce. Find my XFce article at http://www.osnews.com/story.php?news_id=7002 . I have written a comprehensive article on IceWM, which I am still in the final stages of editing. I’m sending you the HTML page as attachment. Give it a try.

Use Mozilla Firefox instead of Mozilla – find it at www.mozilla.org/products/firefox . Use xterm instead of konsole/gnome-terminal. Use the command-line instead of konqueror for browsing the filesystem. Do research on using applications which use low memory instead of the default ones. Use a tiled wallpaper – the ones found in /usr/share/backgrounds/tiles/Propaganda – they are good ones. Finally, log into your graphical desktop using runlevel 3 + startx rather than boot into X directly (runlevel 5). Saves the memory of maintaining the Login Manager. Turn off all unwanted services. There is so much you can do to conserve memory! I am writing an article on this too.

As far as your repeated insertions/ejections go, this is a truly hilarious situation which I have never encountered – but really funny! What I normally do, is to copy the contents of all 3 CDs into one directory hierarchy on my HDD (kya yaar – 40 + 8.4 + 2.1 GB ke teen hard disks hain). then if I want to install say mysql, I cd into that directory, and type rpm -Uvh mysql-.i386.rpm. It usually fails, giving me a list of dependencies which must be satisfied. I then install them from the same rpm cache, and lastly install mysql. No, it is NOT time-consuming – it is much quicker than add-remove program.

Finally – why are you writing this in vi? Hmm – could be because you haven’t got your graphical system to work yet? But you would have mentioned that. Why not use Kwrite/Kedit/Gedit/Kate/Nedit? Hmm – nope – I can’t answer!

After replying to your email, I want to give you – a person who is an experienced, “power user” of Windows and is now giving Linux a try – some advice. Almost none of this advice is technical – most is psychological. Read on, and share this with poor Saket before he becomes totally anti-Linux!

Do not ever approach Linux with the mindset that everything will be the way it was with Windows. You might have the same sort of desktop – start button, menu, wallpaper, Control Panel, and so on – but underneath all that it’s still UNIX. Linux is fortunately/unfortunately still a techie’s OS. It needs experience before you can use it as a normal desktop OS. I began to use Linux full-time only 3 years ago – a full 12 months after I gave Linux a try. Till then I was constantly dual-booting, most of my data on Windows.

Approach Linux with a mindset – this OS is going to help me understand my computer better. I am going to learn about how an OS functions. By this I don’t mean learn about the scheduler/filesystem design or interrupt handling – not the kernel level – we learnt that in Engg. But we totally ignored the user level. For example, the entire booting-up procedure. We take for granted that we have the NT Boot Loader that will present us a choice of Windows OS, we will get a pretty graphical screen and soon a desktop will appear. How? Why? We will never get that chance with Windows. But with Linux, we first see /etc/inittab to see what file the “init” process looks for (rc.sysinit), how each service is started (you know services exist in Windows NT/2K/XP too) – in Linux that is via the “rc” script. Look thru these files, make simple changes, observe how stuff works – enjoy the experience of just exploring the OS itself. Even after 4 years and two months of first using Linux, I still discover new stuff EVERY DAY. Change your mindset – the moment you find a graphical utility to perform a task, say to yourself – I am going to find a way of doing this via the command-line.

See, UNIX (on which Linux is based) was designed by utter geniuses – Thompson & Ritchie – in 1969. From that time till today, the user-level OS has remained relatively unchanged for 35 years. Think of the hardware that was available in 1969 – the first PC was still 12 years away!! So the design decisions made by the two were so technically sound that they are viable even today! I want you to read this article (mini-book?) by Eric S. Raymond, one of the most respected figures in the Open Source Community today – “The Art Of UNIX Programming” – it’s already a classic. I have sent you a tar.gz of this book (taoup.tar.gz) . Read it – it is one of the most important texts you will read – far far more important than engg. notes!!

Given this craze for Linux, soon everyone is going to start offering courses for Linux, and many will then know how to install Linux, and use KDE + Mozilla, and connect to the Internet and so on – but is that Linux? No! We have not even scratched the surface! Using Linux like “another Windows” is stupid!! People will say there is a “trend” towards Linux, Linux has “scope” – say bullshit to all of this. Linux may or may not become the world’s most popular OS, it may or may not destroy Microsoft, but one thing is for certain – people who have truly “understood” Linux and the UNIX philosophy become the best computer professionals. Why do you think IITs and Universities abroad use Linux/UNIX throughout their campus? Because it’s cheap? Nonsense. In the 80s and early 90s, when Linux was not viable, univs purchased expensive UNIX licences. Why? Were they mad? No! The only way to teach true Computer Science was to expose students to an OS they could “play about with”, not something which is shut, sealed, packed and where a company decides how YOU should use THEIR OS. Please- I am not bashing MS – but it is true. How much can you learn about Windows by using Windows? Nothing! Windows does not have a heritage, Windows does not have a culture, Windows does not even offer any incentive WHY you should attempt to find out more about it in the first place!! That is why the first question that must be popping up in your minds is “Why do I need to know about my OS in the first place?” You will find out.

To Saket I say – try and try till you succeed – take it as an insult that you cannot get Linux to work on your computer. It is an insult to your skills that Linux refuses to install. Do whatever you can – even upgrade your BIOS – it can be done via DOS (go to your BIOS manufacturer’s site, download the exe, make bootable floppy, and run the exe from the floppy.) It is risky, but I have done it twice and nothing untoward has happened. You have a non-standard monitor – find your monitor specifications, edit the XF86Config file. You will never know about the X Window System if you want to stay hidden behind pretty graphical tools all your life. Sooner or later some “Computer Institute” will teach its students these tools – after all they are in the menu.) But what do these tools do and how? No one but you will be able to answer. Don’t have XConfigurator? Go into Windows, download the rpm or even source (actually source is better), reboot into Linux, compile it yourself, run it and get your monitor working.

You must have a sound technical knowledge of whatever tools you use. Trust me – Mihir’s and my knowledge of Linux has helped us on many occasions when we were giving job interviews. They really quiz you on such fundamental matters in computing that you realize that without a thirst for knowledge about UNIX, it will be very difficult. The fact that you are so experienced in Linux also gives you an instant edge over others.

Finally, I come to the programming side. I have used VB 5 extensively and VC++ 5 a little, in 1998/99. I know intermediate VBScript. So I do have experience of programming on Windows. Since 2000, it has been nothing but Linux. Believe me when I tell you that the programming environment on Linux – vi/emacs + gcc + make is the BEST way you can learn about project management, about good coding practices, about programming techniques, about how your applications should interact with the environment – because you don’t use all the advanced features that VStudio offers you. You are “on your own”. When you are a student, there is no use learning “industry standard” tools. These can always be picked up later. But no one is going to teach you the kind of things I have mentioned above. These are things you are supposed to learn in your undergrad education. But are we taught them in Mumbai U? Never. How else are we going to learn this? If we use VB/VC++ where automatic memory management, garbage collection, easy-to-use APIs are given to you, along with drag-and-drop interface builders, when are you going to learn ACTUAL programming? Surely you should be able to allocate/free/keep track of memory on your own. Surely you should be able to do low-level I/O, use actual system calls, to build your own interfaces (command-line or otherwise). Do it the hard way now, you will be KING when you have such a solid base! LEARN TECHNIQUES TODAY, TOOLS TOMORROW.

After pouring my heart out to you, I end this email. Apologies if I bored you. But you see, I never had seniors or classmates who were computer enthusiasts, who truly loved computers, who saw computers as tools, not just machines. You guys – Venky yourself, Saket, BP, maybe Akash, Alhad… are like that. The only hitch is that you have used computers/technology extensively, much more than your peers, but have not bothered to learn more about the tools you use. Maybe I am wrong, but that is the impression I got.

Anyways, hoping to hear from you guys.

Rahul.