Vincent Danen takes a closer look at Microsoft's announcement that it is submitting code for inclusion in the Linux kernel. What exactly are they making available and what does it really mean for Microsoft and Linux?
In what looks to be an unprecedented and generous move, Microsoft announced on July 20 that it is providing 20,000 lines of code for the Linux kernel in the sum of three drivers. This is the first time Microsoft has sought to place code in the official Linux kernel, which makes this a pretty big deal. Or does it?
The Linux kernel and licensing notes
Before getting in too deep, there are a couple of things I want to clarify. First, when I say the "official" Linux kernel, I'm referring to the main, or upstream, kernel and not the variations based upon it that constitute the kernels of different distributions of Linux: i.e., Ubuntu, Fedora, etc.
Next, I want to explain a little about the licensing options. The Microsoft code is being released under the GNU General Public License version 2. This makes sense on two fronts: first the Linux kernel itself has never adopted the GPLv3 for a number of reasons, and is released under the GPLv2.
Secondly, Microsoft (and quite a few others) have problems with the GPLv3 and it's explicit patent protection clauses. Finally, GPLv2 and GPLv3 are incompatible with each other, and depending on whom you ask, that could mean a GPLv3-licensed kernel module would not be accepted in the Linux kernel (this is a particularly hazy area, unfortunately, with differing opinions). Keeping the drivers as GPLv2 removes any possible questions or contentions on that front.
Submission of code does not mean acceptance
One thing to note here is that while Microsoft has made this code available and is pursuing inclusion in the Linux kernel, it does not mean that the code will ever get into the official kernel. There will likely be a fair amount of time involved in just examining the code to make sure it is fit for inclusion, such as satisfying all legal and technical requirements.
No doubt the current 20,000 lines of code on the table right now will change, perhaps in drastic ways. It remains to be seen how Microsoft will work with the Linux kernel developers; there has never been any real interaction between Linux and Microsoft other than a great deal of bluster, posturing, and threats (the patent deal with Novell fits this description quite well). So to work together on something like the Linux kernel should prove interesting.
What will also prove interesting is if this means the end to all the anti-Linux FUD Microsoft has been promoting for years. After all, how can they continue to act the way they have been when they are aiming to become a contributor to the Linux kernel? Finally, how will this play out with all the patent threats against Linux? I am not a lawyer, but you can bet some people are keeping a keen eye on this aspect of things as well, particularly since Microsoft has claimed that open source infringes on over 200 of its patents (most recently, the TomTom suit).
The bottom line remains that there is no guarantee that the proposed code will ever make it into the Linux kernel. For example, consider code provided by IBM, a long-standing contributor to the kernel. The code for EVMS (Enterprise Volume Management System) was never placed into the kernel; instead, LVM2 (Logical Volume Manager) made it into the kernel. Granted, that's a much bigger project than a few drivers, but it shows that despite great efforts and intentions — not to mention a prominent kernel contributor — code submissions do not guarantee acceptance.
What is Microsoft providing?
Specifically, Microsoft is providing code for its Hyper-V drivers. These drivers are exclusively used to enable better performance when using Linux as a guest on Microsoft's Hyper-V virtualization technology. You guessed it, these drivers will make Linux run better as a guest on Microsoft's Windows Server 2008 operating system.
That isn't a bad thing by any stretch of the imagination; it works for both Microsoft and Linux. But don't make the mistake of thinking there's anything altruistic about this move by Microsoft. It exists solely as a way to make Windows Server 2008 more attractive to run Linux as a guest, which ultimately translates into more Microsoft licenses sold.
The other major player in this area, VMware, also has Linux drivers to make Linux guests run better virtualized, but they are not in the upstream Linux kernel. This causes problems; for instance, in the case of a new guest that uses a kernel that VMware-supplied drivers do not compile against (such as a different distribution of Linux). Microsoft's move, on the other hand, is smarter. By having its driver code in the upstream kernel, they are guaranteed compatibility regardless of what version of Linux the guest happens to be. In that area, Microsoft will be one up on VMware and other proprietary solutions.
So the end result is that this probably benefits Microsoft more than it benefits Linux. But, all things being equal, the trade-off isn't bad. It gets Microsoft's foot in the waters to actually interoperate with Linux more than it ever has in the past. It forces Microsoft to work with a community where it doesn't have all the power and can in no way dictate any rules. It may even make them realize that standards and interoperability with the "competition" is good for its own bottom line.
It has certainly taken a lot of work, and a lot of time, but I think this is a good first step for Microsoft, in particular, and the entire open source community in general. Let's hope it works out, and maybe we can see more cross-development in the future. There are many areas in which Linux working with Microsoft could be mutually beneficial.
It looks as though this may have come about as the result of a violation of the GPL. The drivers had previously been available, but consisted of both open source components licensed under the GPL and a closed source component due to static linking of binary bits. So, in a typical Microsoft PR move, they may have pulled a "look how cool we are" instead of simply fessing up to the GPL violation.
Regardless of the fact that the code "donation" was probably due to Microsoft being found out and trying to save itself some embarrassment, I still think it's a good move on Microsoft's part — giving them a leg up on the competition and helping to sell more Windows Server 2008 licenses. It's too bad that it couldn't have been less underhanded, but this seems to be the road Microsoft walks best.
Delivered each Tuesday, TechRepublic's free Linux and Open Source newsletter provides tips, articles, and other resources to help you hone your Linux skills. Automatically sign up today!