Linux can work for You!
My first encounter with Linux was during my college sophomore year. Since then, Linux has redefined the vision of an "operating system"...
Typical beginnings
I sat in the operating systems course during the fifth semester. Ahead of which we had an introductory course on system software (SS). SS dealt with programming tools like the assembler, compiler, linker, debugger and so on. But operating systems were not handled in depth. In our department, almost all machines were running the operating system from Microsoft called Windows. And Windows had probably become so popular only due to its user-friendly environment. For non-computer people in India, Windows, (along with the hardware of course) is the computer. In the late 90's Windows was the OS running on 95% of all Personal computers. PC manufacturers shipped the computer with Windows factory-installed.
So as students we expected that we would study mostly about the Windows Operating System in the OS course. We had OS lab concurrently with the course. At the lab, we were sitting at win2000 systems. The instructor asked us to use a program called "Telnet", giving us an IP address, which we were to understand as a dotted decimal number with four parts (eg. 62.101.199.4). This brought out a screen, and we were excited to see the words "Linux 7.4 (Valhalla)" before a login prompt. The first commands we learnt were ls, cd, mkdir and cat. At the end of the lab,we were given the prescribed instruction book -- "The UNIX programming environment" by Kernighan and Pike.
That is how I started with UNIX. And students started looking for installation disks for the so-far unknown operating system. I spent time with the telnet console, and I was very impressed at first by the power of the command line. The book provided a wonderful programmer's introduction to the UNIX operating system, and students like me were very excited and wanted to do great new stuff with the commands of UNIX. Our knowledge was fast growing because of the man and info commands, coupled with the UPE book. That semester, we were to learn bourne shell scripting, but we went very far into the system, and had mastery of several Linux administrator commands in our repertoire.
I see the light
So far I had been doing programming in C using compilers in the DOS environment like compilers from Borland and Microsoft. During lectures we came to know that UNIX and C were developed hand-in-hand. We wanted to find the relationship by ourselves, and set into reading on the subject of C programming in UNIX. Some of the annotations and statements of the man command were becoming clearer. We dealt into regular programming in C in the UNIX environment, and I discovered that most code I wrote previously could directly be compiled in UNIX using the cc compiler, if the proper libraries have been #include'd.
I found myself slowly refraining from using Windows. The UNIX in my point-of-view was more powerful for programming. Everything we had done in previous semesters could be done on the UNIX. The writings of Eric Raymond on the UNIX environment were eye-openers.
The next semester, I sat for an elective course called UNIX kernel internals. By now I had acquired access to several Distributions (a.k.a distros) of Linux, like Debian, Gentoo, Mandrake, Redhat and SuSE notably. The textbook for this course was "The design of the UNIX operating system" by Morris Bach In the same semester, we studied Network programming, and compiler design. I used C programming in the UNIX throughout. I used to imagine what I would be doing had we not learnt about the UNIX. It was not only the ideal programmer's operating system, but also excellent in an academic perspective.
Programmer to techie
Prior to semester 5, we knew how to write programs in C and some other languages. In just one semester, students came to know all about operating systems - the file system, the concept of processes, networking and the client-server model, remote login, and a whole lot of administrative commands. Some were so taken into it, they wrote simple device drivers and elementary file systems demonstrated on the floppy device drive, parallel port controllers and so on. This is when we felt we learnt something proper, and immediately effective about computers.
The students in the hostel took to Linux like bees to honey. And this made us really good, for we used the shell (or console) most of the time, and we learned to fix problems that were occurring by ourselves. Everything was so transparent in the UNIX.
UNIX was good for servers. Really good. I understood first-hand why Apache on Linux is powering 45% of all websites on the WWW (more than twice the nearest competitor), when I volunteered to take care of the department's Internet server- which ran Apache, postfix (a mail server), and had about 800 users. (which means I zoomed from newbie to admin in 4 months, an enviable speed) UNIX is really strong on the Internet too. The first servers of Arpanet were Unices.
A new beginning
And it stayed that way, a programmer's operating system, and a server operating system, until the advent of the Minix clone created by a man from the University of Helsinki, Finland, named Linus Torvalds. It was kind of a pet project for Torvalds, and the kernel he created was named Linux, after his first name. Now Torvalds released the source code of the kernel he developed on the Internet. This enabled many people to study the code, and make improvements to it. Soon the Linux kernel was rapidly improving, under the development model called "Open Source Development"
The GNU environment was being built at that time, and Linux provided the ideal kernel to integrate with the GNU libraries, and create a proper operating system - the Linux operating system as we know it now was born. GNU stands for "GNU" is not UNIX. (Gnu btw is a big ram-like animal) GNU indeed is not UNIX because it provided only the libraries. The libraries provide all the functionality of the entire UNIX "environment". But for GNU to be used, it needed some fundamental things, like a system call API, and other things that a typical Kernel should provide.
I remember spearheading a campaign in college to welcome more Linux machines into the University, along with my friend Sridhar. Our key point to drive home was that with Linux, students can learn about computers in general, rather than about specific software products (what happens if such-and-such button is clicked, etc). We did not see success instantly, but we are glad that 80% of the undergrad degree project work of 2005 in our department was done on Linux. My project on Distributed File Systems used the Andrew File System, deployed on Linux, and our work was 100% Linux-based.
Everyone's operating system
Linux has grown into everyone's operating system. The interfaces provided by linux are nothing short of eye-candy -- fully customizable, and accessibility support being fluently incorporated. It provides a good UNIX for the student and programmer community, an affordable gaming station, a wonderful web access terminal, media center,... Linux has its presence felt everywhere.
I have known folks from the Chennai LUG (Linux Users Group) who have just 32 MB RAM and 8 GB hard disk. But run up-to-date distros, with kernel 2.6.8. An impossibility for the competition to squeeze such power into such limited resources.
Linux has also entered the domain of mobile and pervasive computing. Embedded programmable devices and controllers, mobile phones and such devices running Linux are growing in popularity. And behind all such development were a few good programmers who did it for the fun of it , and made their developments available gratis on the public domain.(only recently have organizations taken to the phenomenon of Open source development)