Reading source code considered harmful ?
Every software developer will tell you how frustrating it is to trace problem in your application up to the point of third party library call (jar file or .dll / .so - make your choice) - and then have to resort to trial and error exploration, because you have no source code for that particular library module. For this very reason, most developers always prefer working with libraries or toolkits that comes with source code attached - if they have a choice. As a side benefit, these libraries are often free as a beer as well - but being able to understand the module is much more important as whether you have to pay license fee ...
Couple of days ago there was an announcement about Microsoft publishing the source code for parts of the .NET framework 3.5. Few years ago such announcement would be a big deal. Now it was received mostly as "yet another me-too move on MS behalf" yawn - when many other really big companies are opensourcing many products, what options does Microsoft really have ? Robert Scoble calls it a "defensive move" and notes that as many times in last few years, Microsoft follows, rather then leads industry:
... this isn’t open sourcing .NET, just releasing the source. That’s even lamer cause the other two have actually open sourced and are accepting submissions from the community. Cool, but when you’re last to do something does it really matter anymore?
Indeed, what was done was not really opensourcing, only publishing the source - because license under which the code is available is none of accepted open source licenses (you are e.g. not allowed to modify the source). But regardless of the legalese details about the license, it is a good thing that developers are able to read the code and use it while debugging, right ? This was my first thought after reading the news. But as several people pointed out, you should be really careful before you look at the code. Steve Vaughan -Nichols even considers this to be an deliberate, malicious attempt to trap open source development - especially the Mono project.
At first it sounds crazy - why would Microsoft want to stop the Mono that exports the .NET technology to other platforms and this way helps to remove one of its main disadvantages against Java ? The one possible explanation - sounding a bit like conspiracy theory offers Kevin Hoffman (btw, it is really readworthy blog) in this post:
Microsoft is going to shut up a lot of whining Open Source people who claim that MS is just a big closed system. At First. If you ask me, the real reason for them releasing this source code is to make it more difficult for the mono project to create replicas of WPF, WinForms, and ASP.NET. With the source code available for all to see, it is far easier for Microsoft lawyers who might potentially engage in law suits in the future to claim that the people working on the Mono project stole their WPF code or their WinForms or ASP.NET code from the public BCL instead of building it on their own.
What if, let's just say, Mono suddenly became as feature-complete as the regular .NET Framework. You think Microsoft wants to start losing server business (where it makes all of its real money...) because a bunch of .NET developers decided to run Linux .NET instead of Windows .NET?
This may sound pretty wild speculation, but unfortunately just few days after release the source code, a patent infringement lawsuit was filed against RedHat and Novel. Not directly by Microsoft, but one cannot help to suspect some involvement from Redmond, considering the remark of Steve Ballmer that
People who use Red Hat, at least with respect to our intellectual property, in a sense have an obligation to compensate us ..
Now is this really a plot to derail open source project(s) - or just a symptoms that Microsoft became so large that two groups do not coordinate their steps and while one group ("techies") trying to evolve their platform and push .NET adoption release the source, other group ("lawyers") at the same time goes after money and very real threat of open source competition. Is it a malice or just an exceptionally bad timing ? Should we trust that it is actually OK to look at the source code ? Should we really trust a company that claims that open source software violates 235 their patents ?
Make your own conclusions - but note that Mono development team contribution policy explicitly disallows even looking at the .NET source code.
If you have looked at Microsoft's implementation of .NET or their shared source code, you will not be able to contribute to Mono.
That may indicate something. Even if you never plan to contribute an open source project, consider what impact would have a potential legal dispute regarding intellectual property for your company, your product or your project - should it happen - and should you or your team have been using the source code in question, even if for debugging. IP lawsuits and very hard and very expensive and guess who is better prepared for a long legal fight :-).
As for myself, I will stay away from the hot source potato and use just the .NET documentation, however bad it is.
There is, after all so much great elegant and free source code to read (even in C#) ...
Author Miro Adamy
License (c) 2006-2020 Miro Adamy