Linux

Microsoft aims to be a Linux kernel contributor: What's in it for them?

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.

Update

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!

About

Vincent Danen works on the Red Hat Security Response Team and lives in Canada. He has been writing about and developing on Linux for over 10 years and is a veteran Mac user.

21 comments
kilikopele
kilikopele

Those 20000 lines of code only added "Clippie" the MS Office Assistant to AbiWord.

feenberg
feenberg

The new code allows MS Xen to compete better against VMware. If accepted, it could help both Linux and MS. However, my understanding is that currently in order to support VMware hardware vendors need to support Linux. If Xen dominates, that might free them of the incentive.

csmith.kaze
csmith.kaze

But no one else. This is great, and I don't think this can effectivle smother Linux like some bloggers seem to think. I am not afraid of people writing code. I am afraid that the outcry from the super anti-Ms crowd has scared away some people. If I was an MS only shop admin and saw that now my Hyper-V could support Linux better, I might look into it. With the screams of paranoia, I would just as quickly stop looking into it, because obviously these Linux guys are crazy. What we need is more people like Linus and less like Stallman, really and truthfully (not that Stallman's contributions are not important, just he is a bit off putting in his attitudes). Let Ms write a driver for Linux. I hope it is a good one, and I hope it leads one more Admin to try out Linux.

esalkin
esalkin

I was a big fan of Bills contributions to OS/2 and we know how that worked out...

ibnsuleiman
ibnsuleiman

Like almost everything, there are bound to be more than one reason and here are a couple to ponder. Microsoft employs so many people in software development that there must be a significant number who, to some degree or other, like Linux. That is, unless the paranoid are correct and, on hiring, they are asked "Are you, or have you ever been, a member of the open source community?". Like its earlier investment in Apple, a company whose focus has continued to drift way from the desk/laptop and its OS toward allied products, contribution to the Linux kernel serves to maintain a competitor at a level where they cannot truly compete. With a market of that type buyers are likely to favour its products, regulators can see there is a degree of competition fostered the dominant player and, possibly most importantly, it is more difficult for any potential new market entrant to get started.

MikeGall
MikeGall

It is somewhat about their customers too. If the code is added it will make their software work better for virtualizing linux. I'm sure people that use Hyper V to virtualize linux would like the fact that it would work better. I'm sure MS likes the PR and potential new customers they'd get by having a better product. But anyways, companies are run by people, a lot of the stuff they do is geared to profit, but sometimes you do something just because it is a nice thing to do that helps your customer (eg. Sun open sourcing their stuff, customers still buy stuff from them but Sun was nice enough to trust them looking at the source).

goldenpirate
goldenpirate

So which future version of Windows will be pure proprietry Linux? Just thought i'd ask

TBBrick
TBBrick

To figure out a variety of ways to sneak BSOD bombs in the various Linux flavors.

DaemonSlayer
DaemonSlayer

They already did that once with IBM and OS/2. Grabbed what they felt was the best of OS/2 while partnered with IBM, made sure the rest of it sucked while developing NT and renaming bits of it (NTFS... sounds awefully like HPFS, although I'm not sure of all the differences and similarities, I'm sure just enough difference to have kept IBM from suing and winning.) For those who watched and used OS/2, the real improvement only happened AFTER MS made their excuses and left. Of course, then, it was too late, the damage was already done.

TBBrick
TBBrick

Not that IBM was a real treat to work with. They would charge six fortunes and a small govt budget for tech support and put out a small amount of stupidly gibberish documentation. Oh my, doesn't that sound like M$. Looks to me they learned a great marketing lesson from I've Been Mauled.

kraterz
kraterz

This is akin to the US donating nuclear missile parts to China. Would China use it?

rfolden
rfolden

I want video of the MS 'team' that provided these to linux. Maybe even make a documentary out of it. Hey, Steve! Did you hear? Did you hear that some of our code may be inluded in the Linux Kernel? Yeah, Mike... of course I heard... I couldn't take another minute of being stuck here at Microsoft. (fap-fap-fap) Wow, Steve... me, either. It was so great that our project manager celebrated diversity and allowed us to work on our real love, not those pesky MS products! (fap-fap-fappity-fap) mutual diverse codebase fapping ensues: (fap-fap-fap) (fap-fap-fap) (fap-fap-fap) (fap-fap-fap) (fap-fap-fap) (fap-fap-fap) (fap-fap-fap) (fap-fap-fap) (fap-fap-fap) (fap-fap-fap) (fap-fap-fap) (fap-fap-fap) (fap-fap-fap) (fap-fap-fap) (fap-fap-fap) (fap-fap-fap) (fap-fap-fap) (fap-fap-fap) (fap-fap-fap) (fap-fap-fap) (fap-fap-fap) (fap-fap-fap) (fap-fap-fap) OK, Steve. I'm done now. Gotta get back to work!

jlwallen
jlwallen

the only reason i can think for anyone to use Linux as a guest on a Windows Host is for trying Linux out. but for that you can just use a Live CD. so i can't really think of a good reason for this.

jck
jck

Gates is on the boards of how many tech firms? How many things has he influenced to go the "Windows way"? Microsoft now probably wants to get Linux to play with Windows as nice as possible, and even facilitate some of their special features. It's their way of leveraging into another market. Play buddy-buddy, then aggressively move to put their product to the forefront.

MikeGall
MikeGall

Small business. The "main" program on the server runs on windows and you want to keep a MS stack to virtualize it "just to be safe", more vendors just equals more opportunities to point the finger at the other guy if something goes wrong. Secondly: someone might just like Hyper V server better then ESXi for some reason. Neither of these have a host OS, just a hypervisor, so it isn't like you are choosing to virtualize linux on top of Windows. Personally I like choice, I'd love to see both have good support from Linux and be able to compare and use whichever one is best for my needs. Not sure if I'd push stuff down to the kernel level, though am an old school UNIX less is more philosopher :-)

CharlieSpencer
CharlieSpencer

I can't save changes to a Live CD.

Painterman
Painterman

You could to a live usb.

wdewey@cityofsalem.net
wdewey@cityofsalem.net

Using a live CD or USB requires use of the whole computer. With a VM I can start and stop without affecting my main machine. I have used live CD's in a VM just to look at them before. Bill

vdanen
vdanen

I really have no idea why someone would want to do this, to be honest. But... vmware sells virtualization products for Windows, and has done so for years, and continues to do so. So obviously there is a market for it. I've read plenty of comments that Hyper-V is better/faster than VMware as well... not quite sure I buy that though. Honestly, I'd rather run a bare-bones Linux for the host and then virtualize everything else (Windows, other Linux installs, etc.). Some people like Windows and are more comfortable running it. I also know of some apps that absolutely require Windows and direct hardware access, so virtualizing that is out -- but if they're running on heavy hardware and have spare cycles and want to re-use the hardware to run another OS, this might be their only real option. Not saying it makes sense to *me*, but I can understand there are probably plenty of scenarios where this would make sense to someone else. =)