Thursday, July 3, 2008

Reinventing the wheel

This started as something of a comment to a couple of blogs about MS not shipping any open source with their flagship products, but it started getting longer and I didn't want to post the same thing in two places.

I'd be willing to bet that both Charlie (NUnit lead) and Jeff (MbUnit lead) would be more than willing to take a sizeable "donation" (perhaps as little as 10% of what the MsTest devs got paid) to their projects in order to provide a stable source version for MS to review line by line, under whatever license they decided they wanted (as a fork of the projects) in order to include their projects with the release of visual studio. I'd even be certain that both projects would have jumped at a chance to have pre-alphas of visual studio to integrate with (for full compatibility when the first beta hit the market).

The only thing that is stopping this level of cooperation is lawyers inside Microsoft (and the occasional prick of a developer), and for that MS deserves our pity. I think the only thing that will get MS to open up is if they were to come under so much financial stress that they could no longer afford the lawyers (and only open source appears to have that much power).

Some time ago I had a discussion where a developer within Microsoft explained provided myself and the others in the discussion what he felt was MS's viewpoint:
"From the Legal Dept's perspective, it's not merely the license the code was released under, it's also the heritage of the code. If some evil coder had stolen code IP from a source base, added it to a project with an open source, copy-reuse-repackage freely license, and I used it, the original IP owner could still sue me to get me to desist using their IP. So, in the interest of protecting corporate code from this sort of legal attack, Legal usually has to perform some pretty thorough (and thus also expensive) investigation before letting anyone see open source code; you can imagine that there generally has to be a good business justification before that kind of thing happens."
I think that opinion is rather unintelligent, but then again I'm not a paranoid lawyer who thinks everyone is out to get me (certainly I'll concede that there are a few people out there who are).

As far as TFS goes, what little experience I have with it tells me that it is too complex, has too many moving parts (all the more places for bugs to find their way in) and is too constrictive on my working habits. I'll stick with Mercurial, thank you. And wherever that isn't available, Subversion will have to do. I like my environment to be compartmentalized. That is why I'd suggest to use Mercurial, Bugzilla and CruiseControl.NET (all of which integrate nicely with each other or are easy enough for me to write my own integration).


tnsatish said...

but then again I'm not a paranoid lawyer who thinks everyone is out to get me

If you follow all the court cases of Microsoft, you will come to know that, Microsoft is paying hundreds of millions of dollars (or even more) every year as a fine in different cases. The lawyers in Microsoft do not want to pay even more. That's why they are so paranoid about everything.

Gazzonyx said...

Bill! Scott Lovenberg, here. How have you been? I saw your post on Coding Horror and thought, Bill Barry - couldn't be the Bill Barry I know! I was stuck in traffic yesterday remembering how you told me to drill a hole in to a Celeron, to unlock its multiplier, back in high school.

I wholeheartedly agree with your assessment. I use subversion for a number of reasons:

* It works
* I can interface it from where ever I happen to be, CLI, Eclipse, VS (ankhsvn plugin), vi, etc.
* I trust it to not silently corrupt my files
* It's extensible. I keep entire file systems checked in with fsvs.

I'm sure you use Mercurial for the same reasons. At the end of the day, though, many Microsoft products just fail my interfaceable, extensible, and trust test. They usually pass the 'it works' test, though. That being said, VS is a beautiful IDE.

I'm not sure how I feel about the "our lawyers won't let us do it" argument. Where were they when the TCP/IP stack was based on BSD from windows-3.1 all the way to NT-3.5?

Microsofts problem when it comes to open source is that their architecture is too rigid to work well within the open source unless they dedicated resources to being active members of open source projects. Their enterprise products are really made such that if you put component X and Y on their own box and stick to the licensing scheme, they'll support it because they know it will (mostly) work. Outside of that, you're on your own because they never said X and Y will work with Z. And support isn't paying their bills, per seat licenses and incremental upgrades are. Unfortunately their business structure conflicts with the realities of software development and technology in general. They have to isolate themselves because of it. I do pity them for that.

By the way, thanks for the tips on perl books awhile back. Object Oriented Perl was exactly what I was looking for.

fallout said...

Scott, yeah this is me. I've been good (Montana is awesome).

I use Mercurial because it does nearly everything that subversion does, plus it tracks merges very well (essential if you are working with others) and it is so much faster. If I can't be working on whatever is next within 30 seconds because I am dealing with some tool, I risk losing productivity and focus. Revision control isn't just for tracking changes, it is also for stating the fact that you are done with one thing and ready for the next. When it takes too long to do that, it is easy to be distracted by other things (email for instance).

Btw, on the stack, perhaps the lawyers weren't really around then. The same thing wouldn't happen these days. That quote is from a developer within Microsoft. Also I talked privately with another representative about a potential job opportunity some time ago and he said something very similar (needless to say I didn't pursue the job).