Well-a, wella-a, the internets are a-buzz with the news that Microsoft has submitted GPL code to Linux!
The code covers drivers for virtualizing Linux on Windows. It’s all thanks to Novell, with a strangely bitter PR release, check out the last bit:
Today’s announcement is further vindication of our partnership and is great news for Linux, open source and especially for customers.
At least Novell acknowledges the partnership needs “vindication”. I wouldn’t have put it like that if I were the PR man on point for this, myself. Yes, dude, everyone hates your company. You might as well change your name to Judas Microsystems, but no need to point that out in your own press releases!
Don’t get all excited up in here, though. This isn’t anything at all more “Open” or “Free” about Microsoft.
Why they did it
Novell and Microsoft have long stated that virtualization is one of the goals they are working together on. Microsoft wants you to use Windows; but, if you must use Linux, at least run it on top of Windows. So, they are releasing this code to help make that happen.
Customers have told us that they would like to standardize on one virtualization platform, and the Linux device drivers will help customers who are running Linux to consolidate their Linux and Windows servers on a single virtualization platform.
Nothing altruistic here – if one must use Linux (or Open Source in general), Microsoft certainly wants it running on Windows. Of course, you can’t have a truly Free system running on top of Windows; but in general corporations are not interested in Freedom (until they are stormed by the BSA), so they aren’t looking at things that way.
Why they used the GPL
Because they had no option. If they hope to get it close to the kernel, it must be GPL. It’s not like Microsoft chose the GPL, there was no choice about it at all.
Compare and Contrast
As a humorous exercise, actually read the Microsoft press release and compare with say the reaction on Groklaw.
Microsoft:
The OSTC has a deep technical expertise in Linux, UNIX and open source technologies, along with strong social connections into open source communities.
First Groklaw comment:
Rules to live by:
Rule #1: Don’t deal with Microsoft
Rule #2: See Rule #1
Microsoft has “strong social connections” alright, so long as you consider large cash payments “strong social connections”. I suppose disgust and distrust are “strong social connections” as well, when you get right down to it.
Anyway, not really much to see here: Microsoft contributes some code to Linux to help Windows in the server market, where it is not doing near as well as it is on the desktop. Nothing shocking. The value will come at watching the spin fly: those who portray this as some sort of victory for Linux, or express wide-eyed surprise, or point to it as some proof of a new direction for Microsoft reveal ignorance or dishonesty. There’s some value in knowing who not to trust, I suppose.

#1 by zekopeko on July 21st, 2009
Jason you’re right!
What message does it send when your main “competitor” writes code for you?
Oh, and on the notion of altruism; I’m so happy that we have those not-for-profit organizations like Novell,Red Hat,IBM,Intel,Canonical etc. contributing code to the Linux kernel/ecosystem.
Were would we be without those great altruistic contributors?
#2 by Jason on July 21st, 2009
:rolleyes:
The message it sends is exactly what I have said all along: we can deal with Microsoft on our terms. We do not need them; they need us.
I do not reject Microsoft on the face of it, rather I reject any concession to Microsoft – no matter how small or seemingly insignificant. So long as they contribute to the community under the exact same terms and conditions that a respected company does, fine.
The main thing of interest to me about this is to see which idiots begin piping up using this event as some sort of “proof” that Microsoft has changed.
#3 by zekopeko on July 21st, 2009
:rolleyes: x2
Perhaps you missed the part were MS is implementing ready-to-go FLOSS solutions into it’s products. Or where they contribute code to FLOSS projects. Or are involved in development of Apache.
This certainly is change, even if you don’t see it.
Even MS acknowledges that is “a break from the ordinary” in the first line of it’s press release.
Don’t get me wrong. I’m not defending their douche bag moves. But give credit were credit is due.
#4 by Magice on July 21st, 2009
Here is the first thing comes to my mind: only fools touch that code from Microsoft.
Let’s see, the whole Minix 3 code base consists of (as reported by authors) 4000 lines of executable kernel code. Coyotos claims to have 12,000 lines of code. The code donated from Microsoft, which is only the driver for something that we would never use, has 20,000 lines of code.
Think about it. Just for one driver, 20,000 lines of code. How many drivers are in the kernel again?
By pumping more and more and more code into it, Microsoft may be hoping to eventually bring the kernel to a point where it is impossible to manage. After all, isn’t that the state of Windows? It took 3 YEARS to clean up code for Vista and release Windows 7. That’s 6 cycles of Fedora! (btw, Ubuntu ceases to exist a while ago, so let’s not count that in). Heck, that’s longer than Debian average and CentOS/RHEL release cycles. Gosh, and that’s “rushing” for ya.
In conclusion, let’s stay away from that code. Gosh, I am still amazed. 20,000 lines of code for non-sense?
#5 by Jason on July 21st, 2009
@zekopeko,
Microsoft has included ready to go FLOSS solutions in past Windows releases. Microsoft has no problem with MIT/BSD style code – quite the contrary as it represents free and likely higher quality code than they can produce in-house.
TCP/IP stack anyone?
This is a “break from the ordinary” is a sense, true. But i think you if read the press release you’ll see Microsoft themselves acknowledging it is customer demand driving this. Again, this is because Microsoft needs us – we do not need them.
If we simply continue to do as we have done, we will enjoy what we have enjoyed: constant growth, improvement and acceptance. Linux has done that since the start despite Microsoft, and will continue to do so long after Microsoft is knocked off the top of the heap.
So, I don’t think there is much credit due. Microsoft it doing what it must, because of customer demand and economic realities. The credit goes to the Linux developers and the FLOSS community, not Microsoft.
#6 by zekopeko on July 21st, 2009
@Jason I never said that it’s not customer driven. They are a business. Who do you think propelled Linux as THE server OS on the market? Businesses, that’s who. Most of the contributions to the kernel were from companies that needed to strengthen Linux for their use case, drive by customer demand.
“Microsoft needs us – we do not need them.”
I wonder why then do KDE developers release apps on Windows? And why Firefox is suckier on Linux then on Windows? It must be because we don’t need them.
We do need them if we want to spread Linux. Sorry too burst your bubble but that’s how it is.
#7 by Jo Shields on July 21st, 2009
4 drivers. Let’s use the only source tree I have to hand, the 2.6.28 kernel, and take a peek, shall we? And do it NICE AND PROPER, so Jason can’t accuse me of being evil. Let’s analyse what we REALLY have, rather than making comments which are wrong from the outset (”1 driver”)
The HyperV source drop can be found here: http://git.kernel.org/?p=linux/kernel/git/gregkh/patches.git;a=tree;f=staging;h=ca18474218c7f5b2adfaa8b59404ca3d5cedd242;hb=master
It appears we have four devices – a virtual network card, a virtual storage driver, a virtual bus driver, and a virtual block device. let’s compare the 22k size against some drivers of those same types already in the kernel, shall we?
staging-hv-add-the-hyper-v-virtual-block-driver.patch is about 1600 lines of source. How big are some typical block drivers in 2.6.28?
1098 xen-blkfront.c
4582 floppy.c
1588 loop.c
606 ps3disk.c
1147 umem.c
406 z2ram.c
7249 DAC960.c
216 cryptoloop.c
Answer: between 216 and 7249 lines.
staging-hv-add-the-hyper-v-virtual-bus.patch is about 7100 lines of source. How big are some typical bus drivers in 2.6.28? This one’s actually hard to fully define, as busses aren’t generically abstracted in Linux. However, let’s look at a couple of smallish busses:
dma: 10114
virtio: 1946
Again, I’d prefer more numbers, but it’s hard to compare properly – the closest comparison is virtio, which here provides a virtual bus, (for a different set of virtual devices). However, I think we can all agree that Microsoft’s virtual bus is larger than virtio.
staging-hv-add-the-hyper-v-virtual-network-driver.patch is about 3500 lines of source. How big are some typical network drivers in 2.6.28? This one’s much easier to compare:
ps3_gelic*: 5362
atl1e: 5223
xen-netfront: 2917
virtio_net: 670
e1000e: 20136
r8169: 3849
sis900: 2811
sky2: 6797
I think you need to be hard-pushed to declare this one as outlandish. And, hell, the Sky2 driver is crap too – loads of hard lockups from that one.
staging-hv-add-the-hyper-v-virtual-storage-driver.patch is about 2400 lines of source. How big are typical storage drivers in 2.6.28?
megaraid: 18096
aic94xx: 13606
3w-9xxx: 2909
aacraid: 10801
I really REALLY don’t see how you can declare this one to be oversized. And I’m using RAID controllers here largely because SATA driver sizes are very difficult to isolate (as they sit on top of a shared ATA driver core), whereas like the Microsoft driver, the RAID controller drivers are independent citizens.
So. Debunked. I’m making NO comment as to the quality of the code (that’s up to the kernel folks to decide), but your size arguments are intended to deceive – attack them for the things which are true, not fabrications
#8 by Jason on July 22nd, 2009
@Jo
Actually, I think this is one point where we are in agreement. Let the kernel people decide on the quality of the code. They have the expertise and respect to make that sort of judgment.
Personally, I would think Microsoft made sure this was the nicest damn code anyone had ever seen, because you know people are going to be looking at it closely!
#9 by nlp on July 23rd, 2009
According to some of the kernel engineers at lwn.net who’ve looked at it, this code is low-quality junk:
http://lwn.net/Articles/342341/
It’ll be interesting to see how long it takes for this stuff to move from -staging to mainline (if it ever does). Some interesting discussion on the motivations for this code release can be found here:
http://lwn.net/Articles/342470/
#10 by woods on July 23rd, 2009
It seems MS didn’t have much choice but to contribute those drivers:
http://www.theregister.co.uk/2009/07/23/microsoft_hyperv_gpl_violation/
#11 by Jason on July 23rd, 2009
I can’t say I’ll be surprised if it turns out this was even less honestly motivated than I originally thought.
It seems like Microsoft can certainly fumble a possible good PR move.