Saturday, February 22, 2014

Why Linux?

Why use Linux?  Why not just get a Windows PC or an Apple Mac?

Good question.  When frustrated, I even ask myself that question, only to kick myself in the head and realize that I made the decision to adopt and support Linux over 20 years ago (darn, I'm getting old).

It all stems from my love to make computers do "interesting" things, not just play games, play music or videos, or do word processing/spreadsheets.  Yes, computers excel at all of those tasks and many more, but I like to make my computers do cool things beyond the ordinary.

However, before discussing Linux, some background is in order....

While studying for my BSEE, I took many software and computer classes including a graduate classes in microprocessor design and a graduate class in software engineering.  I realized that to make digital hardware really do cool things, it needed good, flexible software.  Software really interested me!

After college, I joined a company building telecommunications devices and PABX systems (computerized phone switches for small offices). There, I spent most of my first 10 years writing embedded software in assembly on 8-bit computers with very-limited capabilities.  A PABX system has to do a lot from reading the state of phone lines and trunks (for example every 10 ms), reading the state of DTMF detectors, controlling speech paths, parsing dialing strings and dial plans, controlling ringing circuits and relays, and logging calling information. These were implemented using a 1 MHz Motorola 6809, 8-bit CPU with about 32K of RAM and 32K of EPROM,  much less processing power than a $3 Arduino Mini.

In the mid 1980s, I first learned about  UNIX and I realized here was an operating system that actually allowed me the freedom to do multiple things with the computer, AT THE SAME TIME. Friends/coworkers were using PCs with DOS for small projects, but back then you had to buy or write your own serial port library, do your own multi-tasking, and write your own drivers for just about any project.   Your DOS program ran in a loop polling, and polling, and polling....  UNIX abstracted most of that, allowing you to focus on the tasks you wished to achieve (and do it without polling).

In the mid-1980s, I took an 8MHz 68000, 32-bit system running Xenix (a subset of UNIX originally by Microsoft) and designed a system where we ran many critical tasks at the same time. These tasks included a custom database, a reporting suite, a data collection task, and user interface controller for 18 terminals. Soon afterward, I tried to make a much faster PC running DOS do a subset, only to become VERY frustrated.  I tried writing code in early versions of Windows expecting to be able to easily multi-task like on UNIX, only to become even more frustrated (was this progress?).

I realized UNIX was far superior, technically.  However, UNIX and Xenix COST A LOT.  In the mid-1980s, SCO XENIX cost $400 for the O/S and another $400 for the development system (roughly $1700 in 2014 dollars).  This was FOR EACH COMPUTER.  If you built 20 systems and had 4 development workstations, the cost would be $11K (roughly $23K today).  That was the salary for an engineer and it added up fast.

Basically in the mid-1980s I had a full 32-bit system, partially supported by Microsoft (they owned part of SCO) and ran lots of tasks in a protected environment, but had to pay a lot of money to do it. Even more difficult was when we ported our applications to 32-bit PCs running the new 80386.  We had to PAY FOR DOS even if we did not use it, then pay for Xenix for the computers we were shipping. This added up fast and management did not like these costs.

The up side was that in 1985 I had a reliable, stable, 32-bit environment on inexpensive hardware running code built with Microsoft 32-bit compilers.  The same level of performance and stability was not available in the PC world until the release of Windows 2000 15 years later (how's that for progress from Microsoft?).

At the request of my customer, I moved one mile East of I95 to one mile East of I95, 1000 miles due North and began working on projects in the DC area.  Early that first year, another contractor showed me Free BSD.  A few weeks later, a co-worker showed me Linux.  When I saw both of these free UNIX-like operating systems I realized they were game changers.  Linux seemed to be more complete and have more traction, so I began experimenting with Linux.

My first Linux install was on a Dell 486/66 running SLS or Slackware and Kernel was 0.99-pl13 (released on September 25, 1993).  At that time I said Linux would be a game changer as it was a free, stable UNIX-like operating system running on cheap Intel hardware.

I realized that free 32-bit, protected, stable operating systems on commodity hardware would allow the creation of all types of systems, applications, and even businesses.  We used it for test systems, demonstration systems, software development, and prototype systems.  I even built a few clusters for processing large sets of data.

I also realized that Linux would be a major player in the embedded space once embedded hardware became cheap enough but powerful enough to run Linux.  In the mid-1990s a friend and I wanted to create a company to focus on embedded Linux and even came up with a name, LinuxEmbed.

The rest is history.  Small companies like Google got their start because of Linux.  Large companies like IBM were able to re-make themselves and revitalize existing markets (like IBM mainframes) because of Linux.  New companies started by leveraging Linux including Red Hat, Facebook, and Twitter.  Linux is now in your Android phone, wireless router, DVR, and BluRay player.

So why use Linux?
  1. Powerful, stable 32-bit or 64-bit operating system.
  2. Wide selection of free, state-of-the-art development tools.
  3. Support by most of the major players in technology today (Google, Amazon, IBM, RedHat).
  4. Wide selection of platforms including:
    1. Embedded (Raspberry Pi, BeagleBone, etc.)
    2. Phone (Android, Ubuntu, Firefox)
    3. Tablet, Laptop, and desktop Linux (Android, Chrome, Fedora, Ubuntu)
    4. Server (RedHat, CentOS, SuSE, Oracle)
    5. Virtualized enviroments (RedHat, CentOS, many others)
  5. Because it's fun!
Try it if you haven't!  If you need help, e-mail me!

No comments:

Post a Comment