Since 1995, my friend Tristan Louis has run his Web site TNL.net on Microsoft Windows. He started his site on Windows NT using Microsoft IIS. In late 2000, he moved to Windows 2000 and continued to run on this until recently, when he switched to Linux. Why did he decide to change things? Here is his story.
First were upgrade issues. With the introduction of Windows 2000, Microsoft started upping the price of Internet servers, requiring a separate set of licenses for the Internet services as an add-on to the operating-system costs. As my site grew in popularity, I was going to need more horsepower than just Microsoft Access, so I purchased a license for SQL Server. That was the first problem: I quickly learned that I had to start worrying about another set of patches on a weekly basis. As new security patches were released weekly for Windows 2000, IIS and SQL Server, I found myself spending more time doing basic administration of the box and less and less time doing development on it.
Then came licensing issues. Microsoft made changes to their licensing structure, drastically increasing prices and forcing me into yet another upgrade cycle, whether I liked it or not. Microsoft was essentially telling me that if I wanted to play long-term, I would not only be forced to pay more, but also be forced into buying software on a subscription basis. This would not do. I was already an eager Microsoft user and, having paid for all my licenses, had already laid out a substantial amount of cash to stay with Microsoft.
More than the money, however, was a question of independence. I wanted to still have control, and the new licensing terms Microsoft was offering were clashing with my own view of how much control they and I could have over my system.
Third was a difference of philosophy between myself and the folks at Microsoft. One of the things that allowed the Internet to grow as quickly as it has over the past decades is the fact that most people are willing to share. However, in the Windows world, the logic is that what you create is your own and you charge for it. This left me in the odd position of being one of the very few open-source Windows developers in the world. If I had a cool piece of an active server page (ASP) written, you just had to ask and I would send you the code.
Meanwhile, the open-source community was making products that were growing more stable by the day and at a fraction of the cost asked by Microsoft. Most of the products were running on Linux, using Apache as their Web server. In the last couple of years, they had grown mature enough to be considered enterprise grade. I decided enough was enough, and it was time to move on over to the open-source world.
The first step was to investigate the alternatives. The question became what operating system, which Web server, whether to use another application server, what language to use for developing my back-end and whether to use a database (and if so, which one).
Should I go with Linux or BSD or something else? If I go with Linux, which distribution should I pick? In the end, I decided to settle on Linux because of its wide level of support. With backers like IBM, Oracle and even (grudgingly) Sun Microsystems, I feel that Linux is here to stay, and will continue to grow not only as a hobbyist OS but also, increasingly, as one of the foundation tools for Web businesses of the future.
However, looking at the different Linux distributions was a much more complicated matter. I wanted something that would require little day-to-day administration and could be easily and quickly patched. At the same time, I had to ensure that the operating system would run on the new TNL.net box, a dual 1.3Ghz Pentium configuration with a SCSI RAID array. Unfortunately, I learned one of the tough lessons of the Linux world very quickly: Linux hardware drivers do not always get upgraded at the same speed as the rest of the OS does. In the case of my box, I discovered that, while there is a new kernel patch coming out every few weeks, it is impossible to keep a machine up to the latest kernel if you have a proprietary set of RAID drivers. In the end I decided to pick up RedHat Linux 7.3 because my RAID vendor supported it and because it offered superior auto-updating features through the RedHat Network.
Next was to pick my Web server. This decision was a much easier one to make as the Web server from the Apache Foundation has become the de-facto standard for anyone who is serious about delivering Web content on an open-source platform. I did not go very far in my research on alternative servers. The only decision point on the Web server end was whether to use Apache 1.3 or Apache 2.0. Influencing this decision was the module architecture that Apache offers, but version 1.3 offered a much wider set of modules than 2.0 (some of them more important to me than others), so I decided to hold back on using the bleeding-edge version.
Coming from the Microsoft world, I have had extensive experience with ASP and could have kept using it thanks to a helpful module developed to run the Microsoft technology on Linux. However, I had already made the decision that I would rewrite substantial parts of my code so I decided to completely abandon ASP as part of the migration. My choices were therefore choosing among Perl, PHP, Java and Python. Each of the languages was equally good for what I wanted to do. I ended up picking PHP.
PHP seemed to have managed the proper balance between extensibility and ease of use. The only trouble was that I had not played with it. The big question on my mind, though, was whether it could support large amounts of traffic.
At the time of the migration, TNL.net was already received upward of three million page views a month and growing slowly toward four million. As if someone had read my mind, Michael Radwin made a presentation highlighting how Yahoo had come to the decision of using PHP. Reading their analysis of the different languages, I felt that someone else had gone through the same thought process I did. Their conclusions were that PHP was solid enough to run large portions of the Yahoo site. If that was the case, there was now no doubt in my mind as to which scripting language I would use.
My final step was in assessing which database I should use. After careful consideration, I decided to use the MySQL package, largely because of its tight integration with PHP. Furthermore, investigation showed that this is a relatively standard configuration known as LAMP (Linux, Apache, MySQL and PHP) and is being used by people all over the world.
Moving to an open-source package was much easier than I had expected. With a complete rewrite of the back-end TNL.net code, I was able to clean things up and make sure that the site was optimized to support the traffic it's been getting to date, and still have some room to breathe in terms of supporting more traffic. I have already seen some dividend in my joining the open-source community, as some of the code implemented by other people served as a blueprint for the new TNL.net. All in all, count me on the list of people who have made the switch from Windows to Linux. I don't think I will look back any time soon.
Thanks for the migration diary, Tristan. You can subscribe to Tristan's occasional newsletter and view his weblog at his site, TNL.net. I will be writing about Linux migrations in an upcoming issue of VARBusiness -- those of you who would like to share your tales and wisdom, feel free to drop me an email in the next week or so.