I frequently hear complaints about CIOs in other companies. Complaints directed straight at Microsoft Windows. I've seen people go blue in the face when complaining about the assorted kinds of malware they've had to remove from the networks they manage.
But the mere suggestion of migrating to Linux, directed at those CIOs, is enough to trigger a bunch of emotional responses on them. "Our users won't go along", "We depend too much on Office to make the switch", "Linux costs more in the end" are common responses.
Today, I'll be telling the story of our own migration to Linux. As you can probably infer from the title of this story, it's been a success.
So, where did the story unfold?
These events took place at Amauta, a small Ecuadorian start-up focused on Web applications and network service integration for foreign markets. Though I no longer work there, I still keep in touch (four more partners and two full-time employees), because, through the last three years, we've endured hard times and we've been constantly forced into innovating. These are the kinds of events in a person's life that bond people together.
And when did Linux enter the story
Right at the beginning. Few people know how we started up.
We actually started up as a college project, for the Applications and Information systems workshops. Two other student groups competed with us in the same course; one even built an application geared straight at competing with ours.
My other four mates (Iván, José, Jaime and Luis Fernando) did know the fact that I had been using Linux almost exclusively since 1997 (though Iván had some personal experiences with Linux himself). So, it was a no-brainer to lobby them for Linux usage right at the beginning of the course. Remember that we, as college students, didn't exactly have the kinds of resources that an established company has. So we basically set up shop at Jaime's house, brought our own personal computers in, laid out a few yards of Ethernet wiring, bought a small hub, and connected. Little did I know that my own computer (an old Athlon XP 1500+) would be serving files, documents, and Unreal Tournament games for the rest of the trimester.
The assignment for the course was to build a Web application. Take note: While everyone else in the other two groups was using Macromedia Dreamweaver, Apache and MySQL for Windows (not the best choice, but a good one, discounting the OS foundation they used) to build their applications, we were using my old computer, with Apache and PostgreSQL, to build ours.
Remember — this is a Third-World country. Oracle and Microsoft licenses are out of the question.
So, what's so innovative about this? Everyone and their dog are using LAMP!
Yes. That's true. But I took the time to show everyone in my group the power of Linux (which, by the way, was Fedora Core 1 at the time). I made a point of showing them OpenOffice, the K Desktop Environment, GNOME, Valknut (named DCGUI at the time), Konsole and bash. Evidently, no one was particularly excited with bash at the time. That's, of course, perfectly understandable: with a Windows background, my friends had only known MS-DOS. It's a perfectly normal human response: you've seen one black screen with characters, and you think you've seen them all.
During the course of the first two weeks, our entire operation begun to change to open source and free software. We started using MyDMS (a lightweight document management system, which we improved for a customer) as our document management solution. When the other groups were passing documents around by using e-mail, thumb drives and a deficient course management software package (regrettably provided by our own college), we were tracking our progress with MyDMS seamlessly.
We shared our files with SAMBA. The other three computers in our small NOC were still using Windows, so it only made sense. But we worked with a central file share (we've since migrated to Subversion for all serious work) and set up Vixie cron to perform nightly snapshots of data and code, and publish our work into production periodically with weex. We also used phpBugTracker to keep tracks of any critters that crept in our work.
Three weeks into the course, my friends were using my computer regularly for work. They'd been using PHPEdit on Windows. While PHPEdit is a fine piece of software, it could never match the power and simplicity of KWrite (included with KDE). For KWrite alone, my friends argued for the use of my computer. Personally, I think KWrite's killer features are the very usable syntax highlighting, its usability (automatic tabs are a bliss, and the insert cursor seems to be "smart" yet predictable) and its speed.
And did they use the rest of the applications! Once they discovered the power of bash (especially the famous Ctrl+R shortcut) they started saying things like "command line interfaces aren't so bad" and "Boy it would be good to have bash on Windows". So I installed Cygnus for Windows on their computers.
They also got to know VMWare Workstation. The marvel of seeing a window onscreen, counting RAM and booting Windows (mainly for KaZaA) was quickly replaced with a few suggestions on how to make productive use of it.
Granted, when I pitched Linux, I met with very little resistance. My friends are all tech-savvy individuals. But I strongly suspect anyone can get used to KDE, or GNOME, or any other typical Linux interface. Of course, changing deeply ingrained habits is hard. But my friends didn't seem to have a problem with it.
During the entire course, my computer went down only once. That was the day when we got together with other friends from college to celebrate a birthday, and we took my computer out to perform for us with XMMS and its crossfading output plugin. XMMS didn't make it to the stage: the power supply died when we plugged the computer into the living room's wall socket.
So, either Linux has a power supply-killing ghost in it, or my friend has wiring faults in his house. Since I don't believe in ghosts, I went to a computer shop and bought myself a new case and an APC Back-UPS ES. After that, everything was back to normal.
OK, that was fine for a college project. What's that got to do with serious work?
Once we finished our college project, we poured our savings (really, not a lot of money) into the company, and set up shop in a small office behind Luis Fernando's house.
Around the time, we begun looking for new computers to buy and install in our office. Since I had known and successfully installed LTSP before, I suggested we went along that route, testing network boot and regular with our own computers first. That was a success. They were already used to the gorgeous GDM login screen, and by the time, everyone had settled on their favorite desktop (Amauta is mostly a KDE shop nowadays, though two of us, who are Ubuntu fans, use GNOME). Again, being able to power off a terminal, and having the login screen up in less than 20 seconds from power-on were great selling points. Plus, the simple fact that everyone else's information was centralized made us be more nimble. No longer were we depending on a particular computer because it had X or Y application or Z files. Log on to any computer, everything's there for you — exactly how you left it when you logged off.
We started to use Subversion for our projects. Software engineering is extremely dependent on technologies which automate repetitive tasks: when you're building something, there's literally no time to think of the small details — those have to be handled by software, or else you lose your concentration. Subversion was a boon: we started working on individual "jail" development environments, partially thanks to the configurability of Apache, so quality went up. Through Subversion, we also started tracking every modification of our assets. To this day, Subversion continues to be the most valuable tool in our toolset. Mind you, everyone uses the
svn command-line tool, because everyone agrees it's much faster than dealing with a GUI. Of course, when you need some visual help, there's always eSVN.
We also begun a full migration to OpenOffice. Since we own two ThinkPads, and one of them has Windows (for those times when you're visiting a customer and you really need Windows so he/she won't freak out), we downloaded and installed OpenOffice for Windows on that computer. Big download, sluggish package. But it's still better than the non-free alternative.
But the big productivity increase came from an unexpected open source gift. VNC. Virtual Network Computing turned out to be the best thing since sliced bread. Before VNC, everyone came in, logged in, worked, then logged off and went home. As you probably know, when you log off GNOME or KDE, most applications save their state, but a few don't. So, it's sort of painful to return to your office, endure a few seconds of login time, then prepare your desktop for work. VNC changed all that.
Now, everyone has their own private session and VNC port, open all the time in the background, and when they arrive to the office, a login to GDM with the "VNC client" session selected (which is a small shell script) is enough to start working again. Plus, we can do everything remotely. For routine work, there's no need to be physically at the office: Evolution, Subversion and aKregator are a few keystrokes away, whether you're at home via dial-up, or at a customer site with an always-on Internet connection. Even our CEO, which uses the Windows computer, also uses VNC — wait, that's an understatement! Most of the time, he does use Windows, for only one thing: starting up the RealVNC client, fullscreen mode enabled, and working directly with his session at the server.
We tend to manage our servers remotely with OpenSSH. Webmin has its uses, but for most work, SSH is plenty powerful. Being able to tunnel GUI applications through SSH has also come in handy. Being able to remotely invoke commands in a scripted fashion is also great: directly piping the contents of a local database or a tarball into a Web hosting server is probably the most fabulous use of this. Plus, the added security of SSH and SCP lets us tell our customers that their information will remain secure at all times.
But, at some point, you have to upgrade
Well, I'm getting sidetracked here. We couldn't continue working with our personal computers anymore (being a software engineer and not having a computer at home is kind of ironic). So we went to an used computer store, bought six used computers, six new IBM 17" monitors, threw away their hard disks, and flashed their BIOS so they'd boot with Etherboot. Total bill: under $1000, keyboards and optical mice included. Yes, you read it right: we got six Pentium II class terminals, which we use for serious engineering work as terminals, for under a thousand dollars.
We also had an ASUS K8V motherboard shipped in, and an Athlon 64 3200+, which we used to build a server more suited to our needs. The server ended up costing more than the six terminals together. After overcoming a few hardware issues, the server has been working straight for more than one year now (except for power failures). The UPS is still on the shopping list. But we aren't too worried for our data: an rsync script, started nightly by Vixie cron, moves everything that's new into an external USB enclosure, with an 80 GB drive (which also houses our music collection).
But what about your personal computer?
You'd think it retired after years of labor. No, it didn't. It still works, at home. It's been upgraded, of course: there's 768 MB of RAM in it now. And a $20 TV card, which, combined with MythTV, has freed me from TV commercials. Plus, amaroK and Joystick control let me enjoy music, without even turning the monitor on.
There are lessons to be learned here
No one can tell you that a business cannot be based on open source, and open source alone. Free and open source software is our bread and butter. I, for the love of God, will never understand why another company would knowingly give up the cost savings and productivity advantages of open source, to stay with Windows and assorted closed source software. I may understand that from someone who hasn't "seen the light". But, after seeing the possibilities that open source creates, turning away from that is short of irresponsible.
I know for a fact that "learning Linux" has been good for all of us. We are more knowledgeable know. Everyone in our company has boosted their troubleshooting skills and practical knowledge, to the point that our CEO himself is capable of diagnosing anything from a malfunctioning network gateway to securing a server using Linux
iptables. Our marketing and sales head is knowledgeable with Linux and uses it at home, where he sporadically sustains conversations with his wife, a stauch Microsoft supporter and Microsoft-using programmer. Oh, I nearly forgot: right now, he's actually near the Microsoft campus right now, taking a well-deserved vacation. Just yesterday, he was joking about him unfortunately not being as huge as the penguin from the Penguin Computing advert (remember it?
Hello, Mr. Gates... I'll be your server today). Two of our partners even used an open source topic as the foundation for their thesis work.
I know for a fact that it's possible to run a business entirely out of free software. I know for a fact, that it has enabled us to exist and make good money. I know for a fact that it has enabled us to compete against companies ten times our size, and win.
And after having worked like that for more than two years, I will never go back.