Duplication of Efforts
Scott Bellware brings up one of the most annoying habits from Microsoft, duplicating existing OSS stuff instead of promoting the use of the existing tool.
He ends up the post by asking how long it will take before Microsoft will have its own mocking framework. On the theoretical possibility that they would do such a thing, let me express my feeling about this in advance:
I would be extremely pleased if Microsoft came out with a mocking framework that completely and utterly kicked Rhino Mocks' butt.
I would be very happy because it would mean that I would get mocking for free, instead of spending quite a bit of time to make it work. That would mean that it would not look like this one, by the way. Somehow, I have my doubts that Microsoft would turn out something of Rhino Mocks' elegance. And if I say so myself, Rhino Mocks is one of the finest pieces of code that I have written.
That said, if they want a mocking framework, Rhino Mocks is FLOSS (free libre open source software), so they certainly have the possibility to just bundle it in (and even rename it to Microsoft Mocking if they really want to).
That is what I wish they would have done for NUnit, Cruise Control, etc. If integration is what they want to offer, it is certainly something that all those projects would accept gladly. I know that I would.
Comments
My co-worker and good friend, Steven Rockarts, recently asked me, "What about if Oren gets a job at MIcrosoft? Do you think Rhino would change?"
"I think it's more likely that if Oren gets a job at Microsoft, that Microsoft will change - that is, if Microsoft survives Oren ;)"
Another friend, Donald Belcham, recently asked me, "Do you think f I get Oren drunk at the ALT.NET conference he'll make out with me?"
Some questions are better left unanswered...
Justice,
It takes a lot to get me drunk, but when I am, I tend to really bubble. When I get more drunk, I get violent.
I tend to avoid this situation.
Microsoft seems to suffer from a weird case of Not Invented Here; that is, if they didn't invent they will either recreate the wheel, or they'll buy it and make it look like they invented it. Although MS is making some strides with OSS, they still have a long way to go. Unfortunately, due to the legal issues of integrated OSS with closed-source, I doubt we'll see good integration any time soon.
I've read several people discussing this topic over the past few months, and it seems that the main reason for this duplication of efforts is the legal issues with licensing the FLOSS stuff. And, for many companies, FLOSS is verboten and it must come from Microsoft. In fact, I seem to recall a Microsoft person actually explaining this on a comment to a Bellware post, but I could be wrong.
Anyhow, what I don't understand is why MSFT won't approach these people (like Oren, or the NAnt guys, etc) and ask if they'll license their code to MS under a non-GPL/non-LGPL license.
Perhaps they did and the NAnt guys flipped 'em the bird or something, I dunno.
Or perhaps MSFT should create a separate package like an ALT.NET add-on for Visual Studio that is all GPL/LGPL so it doesn't violate any licenses and is separate enough it doesn't threaten their other properties and licenses.
But MS hates anything GPL/LGPL as an ideological matter, so that will never happen unless the license holders convert or allow MSFT to convert their license to something similar to GPL but without the 'G' part.
Chad,
With the exception of NAnt, all the main OSS projects on the CLR are using commercial friendly licenses.
NUnit, MbUnit, Rhino Mocks, Castle - just take it and do whatever you want with it.
NHibernate - LGPL - which is a commercial friendly license.
I share your enthusiasm and concern in this area. I think LGPL is not commercial-friendly enough however (if one touches the library itself, as one may want to do).
Another concern for Microsoft is the provenance of the code. They are a big enough target where a problem about code provenance can be ugly, even when misrepresented. For example, is there anyone who can rightfully claim that NHibernate is entirely their own original work (in the copyright sense of original). If not, anyone offering Microsoft a license under different terms is not even an option.
Code under BSD-like licenses might be more appealing.
Still, the NIH is so strong at Microsoft that they will continue to produce bad we-did-it-ourselves versions of things faster than they get smarter for some time to come, I'd say.
ObDisclaimer: I am a Microsoft employee, but I don't speak for Microsoft. I'm not a lawyer, and nothing I said should be construed as legal advice. This is my opinion alone.
Here what I think is the problem in a nutshell.
Ayende says that he wrote Rhino Mocks (and I would believe that statement), but where is the proof? What if he didn't, and stole it from someone while violating their license? Or, more commonly, what if he accepted a patch into Rhino Mocks that was submitted by someone who stole it from GPL? Does he really and truly have a fully clear idea of where all the IP came from? What if he reused some bit of code from some job or contract and doesn't really own it any more? What if he used a work computer to write some of it while under an agreement which says that everything done on a work computer belongs to his work?
These issues are never as clear cut as people think they are.
Brad,
Assuming that all of those are valid risks, which is more of a lawyer-paranoia as far as I am concerned, it is still possible to package that as a separately, and rely on that, instead of rebuilding the wheel again, squarely.
Commercial OSS has a fairly stable history, and barring cases like SCO, it is rarely gotten to legal fights. The only case I can recall off hand was with Hibernate. An IDE for Java made modifications to Hibernate itself and refused to make the code public. But that is a clear violation of the license, and not a hidden bomb.
The Java world is a good indication that using OSS commercially is a valid and stable option.
So while I agree that there are things to consider, I don't agree with the final conclusion. Because the same reasoning can be used for any and all packages (Crystal Reports as one example)
I think Joel Spolsky has something clever to say about this (http://www.joelonsoftware.com/articles/fog0000000007.html), I tend to agree with him here.
Comment preview