I just read a blog post from a former SQL Server architect explaining their original decision making process around the issue of porting Microsoft SQL Server to Linux. I have worked at Microsoft on SQL Server for about a year now. This answered some questions I have in mind for some time, and I just can’t agree more with his writing. I can share some of my own thinking here.
Before I join database group at Microsoft, I am a heavy Linux user. I played PC games on Windows 98/XP in high school and college; My first programming course used Visual C++ 6.0 on Windows XP; and, that is all. The rest of my projects are mostly done on Linux. My first encounter of Windows 7 and Microsoft’s server line products happened the first day I worked at Microsoft. How I adapt to the Windows environment is another story. (It is much less difficult than I thought, and I really begin to appreciate the amazing WinDbg.)
Since I began looking at the SQL Server source code, an obvious question came to my mind. How much work was required to port the code to Linux? After all, I was more familiar with GNU/Linux API than with Windows API at the time. To my surprise, the core database engine actually does not have so much OS specific code. Given the Wine project, I suspect it may only took one or two months of work to do the port. Then another question comes to my mind: how much work is required to support the alternative product? My conclusion is that it is almost impossible without changing how we current organizing the engineering effort around the product. For example, it will require a lot more efforts to develop test infrastructures that matches existing test tools on Windows. The only solution I can think of is to have an entire team that dedicates to this new product. The Linux product possibly also need a new business model. Then with so many open source alternatives on Linux, I am a little pessimistic such a product can be very successful in the market.