Reflector

There has been a lot of uproar over Red Gate's recent decision to charge for the .Net Reflector tool. As a Microsoft employee that spends a lot of time with performance and debugging tools, Reflector is essential. When Red Gate bought the rights to Reflector from Lutz Roeder, I felt that it was only a matter of time before they realized they would have to charge for it. Initially, they promised everybody that nothing would change and that they would create new versions and features that would compel people to move from the free version to a commercial version.

The problem that I think Red Gate finally realized was that Reflector is already a fantastic tool. It does exactly what you need it to. So if it ain't broke, don't fix it. Reflector to me is very similar to windbg. It is extremely useful and it has all the features I need it to have. I don't want it to change. I don't wait impatiently for the next version to come out because I'm already quite satisfied with what I've got.

Microsoft has this NIH (Not Invented Here) syndrome, but with Reflector we just don't. A large portion of .Net devs at Microsoft use this tool. We haven't tried to create our own version that's "better". I believe there are two reasons for this: 1) Reflector works just fine the way it is and 2) Lutz obfuscated the code. It's not that Microsoft couldn't create their own version, there really just is no clear benefit for doing so. Lutz Roeder actually works for Microsoft now and there's still no push to write our own. Now, I doubt there's any connection between Reflector and Microsoft jumping on the JQuery bandwagon instead of trying to compete. But it's a nice trend to see.

It must seem odd that people at Microsoft would care that Red Gate would charge for Reflector, but we're developers too! Microsoft has deep pockets and the fee for the tool is really pretty small when you compare it to many other tools out there, especially the $15,000 VS2010 Ultimate license. I think this has more to do with the politics behind purchasing third party software than the cost. That's where the NIH mentality starts to crop up as well.

Thankfully, Red Gate eventually decided to reverse their decision somewhat:

https://www.reflector.net/2011/04/why-we-reversed-some-of-our-reflector-decision/

The damage to their reputation can certainly be fixed over time, but the most damaging aspect of this whole thing was that people began to look for alternatives. That opened the door for other companies to start competing. Telerik added a new product called JustDecompile, which they say will be free. It's currently not good enough to replace Reflector. For one thing, it cannot read nested classes.

The big standout though is ILSpy. This is very close to Reflector in decompilation and it's open source. There are two other things I love about this product: 1) It uses AvalonEdit for displaying the code and 2) the DLLs are accessible to be used like an API. While this may not apply to everybody, if you're generating code on the fly with something like Reflection.Emit, it's very hard to test, especially in an automated sense. If you can decompile an assembly in a test harness and compare the code, then you can verify you're generating the right code.

For those of us that have to get our work done, we can either pay Red Gate the license or wait for ILSpy to improve. In Microsoft's case, we just bought the licenses. But the benefits of ILSpy to test generated code are compelling.

That's my take on the situation. But what do you think?