Thursday, July 3, 2008

Come On, Microsoft, Isn’t This a Little Ridiculous?

Copyright 2008-2009, Paul Jackson, all rights reserved

Update July 22, 2008: There've been some clarification and updates that make this a non-issue.

I started this blog last month with a series of posts on Microsoft Source Analyzer, or StyleCop, a new product released on Code Gallery and which can best be described as fxCop for source code.  Where fxCop works on the compiled binary, StyleCop works on the source code itself.  Since we’re currently reviewing our coding standards here, I jumped on this product because checking source code for naming, spacing, etc. standards is a royal pain.

The first thing I ran into was a conflict between our standards and those that ship with StyleCop.  We require an underscore start the name of private fields.  So, assuming that StyleCop was extensible, as fxCop is, I did a quick Google for “customizing stylecop rules” and found nothing.  So I did a little digging (with Reflector) in the public interface of MSA and figured out how to do it.  Since the information wasn’t already out there, I figured I now had something to contribute to the community other than long-winded discourse on the need to learn how do do Manycore programming well.  And to let people know about it, I responded to posts in the StyleCop forum about custom rules.

In response, I caught some crap from the Microsoft team about violating the license agreement by using Reflector.  A few of my posts were deleted.  The community argued the whole license issue, because there are two license agreements involved – the Code Gallery one that pops up when you download and the StyleCop-version when you install.  I don’t think anyone had a reasonable expectation when installing the product that these would be different. 

In any case, the whole discussion about licensing disappeared from the forum and no more was said about it.

Then today I see this thread in the forum.

Apparently, someone wanted to integrate StyleCop with the Team Foundation Server build process.  So he did a little digging with Reflector, figured out how to do it, and blogged about it.  Then he responded to a forum query on how do this.  Sound familiar?

Where his story differs from mine, is that he apparently had more communication with Microsoft than I did.  His blog entry now reads only:

“This MSBuild task has been removed per request by Microsoft.”

Hey, Redmond!  What were you thinking?

You released this product to a community of people interested in how technology works … customization and integration with other tools are critical to our work process … how could you not know we’d try to figure it out and make it work for us?

Yeah, maybe these things will start breaking with a future version of StyleCop, but the community wants them now.  We’re not idiots, we know that if the API changes our stuff will break … that’s a risk we’re willing to take because we want the functionality now.  We want to use the product now because it’s useful to us, but not without these features.  Fine, you didn’t have time to provide them in this release … let us do it!  That’s what “community” is about.

Or are you seriously suggesting that our use of Reflector somehow endangers your intellectual property.  Gentlemen, if it’s truly that important to you, then I submit to you that .Net was the wrong environment to write it in. 

There are a lot of smart people out here who are willing to take your work, build on it the things you didn’t have time to, and make your products more useful and better.  By making things like custom rules and MSBuild tasks available now, StyleCop becomes more beneficial to more people … people who, without those things, would shrug and say, “Nice idea, but it doesn’t do what I need”, and delete the whole damn thing.


kick it on


Troy Goode said...

This is incredibly disappointing. Microsoft has been making great strides over the past couple years to really open up and make the right decisions to endear themselves to the community, but from time to time the 12 layers of management and bureaucracy rear their ugly heads and we end up with actions like this.

ashmind said...

Now that's some bad publicity.

Punishing most interested and motivated developers is not what a developer-target company should do ever. I hope some people will get some managerial karma decrease.

Scott said...

I will ask around and see what's up.

Anonymous said...

Well yeah. Pretty much every MS product says you can't decompile it. For example it's REALLY hard to figure out what Sharepoint is doing in a lot of cases. It would be nice if you could use reflector to look at that. I've seen a lot of blogs where people say they're doing that, but I suspect Microsoft hasn't had the chance to take their blog posts down yet. Yeah, it's pretty stupid.

Ragoczy said...

I don't think it's the bureaucracy in this case; I think it's the project team.

And I can see their point, to a certain extent; after all, this project is their baby and all of a sudden these strangers are poking and prodding and violating it.

Maybe they're right and I should have to register as a reflection-offender and stay a hundred yards away from all compiled code ...

On the other hand, they're not charging for the product, so there's no potential revenue loss. And damn it's some nice code -- very clean design and easy to understand -- they should be proud of it.

alexdresko said...

I just wanted to add my name to the list of confused/displeased developers out there. This makes no sense at all.

Jason Allor said...

As the lead developer on the StyleCop project, I would like to let you all know personally how exciting it has been to see the level of enthusiasm in the community around this tool. We're very proud of it and we're glad that some of you are getting some good use out of it.

After the tool was initially released, there was some confusion about the license agreement. The tool ships with its own license, and the MSDN Code Gallery site also displayed its own, different license. This issue has been resolved, but it led to some early confusion, and some posts\threads may have gotten deleted as a result of this.

We've been getting some great feedback and ideas from the community, and we'll soon be releasing a new version of StyleCop which we hope you'll enjoy.

Thank you!

Ragoczy said...

Hi Jason,

Thanks for taking the time to comment. I think you guys have every right to be very proud of the tool and I recommend it to everyone.

What I'm confused about, and I think a lot of the others talking about this, too, is that as early as this morning, there're posts and blogs where extensions have been pulled, purportedly at Microsoft's request, due to licensing issues.

Now, don't get me wrong, it's your product, your license, your rules ... if you guys ask me to pull my custom rules pages, I will.

But we're just all saying we don't like it much and there must be a better solution.

Bill said...

I hope they shut it down tighter than a drum. Now maybe C# developers can feel left out like VB developers.

Ragoczy said...

Bill! LOL But you VB guys get that cool XML in code thing I really like. :D

Seriously, though, you can use the tool with VB if you write your own rules. Or maybe that next release Jason mentioned will have VB rules.

sidarok said...

Somehow I remembered about Testdriven .NET issue on Visual Studio Express...

Anonymous said...

I am issuing a Vote Of No Confidence on Microsoft Source Analyzer/StyleCop.

Anonymous said...

Looks like that freetodev post is back up again...

Anonymous said...

VS2005 at work, VS2005 Express at home. Wanted a tool that would work in both environments and found out StyleCop isn't it. Guess I'll look to non-MS for the truly useful tools (yet again).