Opensource licenses have always been a major cause of confusion, but Microsoft has outdone everyone – they created an opensource license that does not allow use of opensource software.
Although Microsoft is traditionally seen as an enemy of the open source, they seem to have realised that opensource community support is now a major factor in the success of any software platform. Look at Java – the community support is so significant that almost all serious projects in the last five or six years included some piece of opensource software – from logging and connection pools to web frameworks, template engines and application containers (not to mention that Sun has recently opened the source for the JVM implementation). The community played a significant role in providing the plumbing for standard tasks, which .Net platform is still lacking. Many opensource Java projects have .Net ports, but the available products for .Net are not as nearly ubiquitous and good as their Java counterparts. Microsoft has tried to play a more active role in forming the community by providing the Enterprise patterns and practices library and by starting Codeplex, an online incubator for .Net opensource solutions.
Having all those free tools for Java has spoiled me. I now expect to find plumbing tools of at least decent quality somewhere on the Internet, for free. I was recently looking for dependency injection1 configuration engine for .Net, and stumbled upon Microsoft’s ObjectBuilder. And the license for it was a bit strange:
2. That you have no right to combine or distribute the Software or modifications with other software or content that is licensed under terms that seek to require that the Software or modifications (or any intellectual property in it) be provided in source code form, licensed to others to allow the creation or distribution of derivative works, or distributed without charge.
I am not a lawyer, but to me this sounds like directly prohibiting the use of this open source tool in the same application (combine or distribute) with most other open source tools. I tried to get clarification from the project authors, and only got a Sorry, I’m not a lawyer reply.
I don’t think that it is realistic to have a big project without some piece of opensource software or some opensource library – so “cannot mix with other opensource” effectively means “cannot use” for me.
Another point in the license caught my attention:
11. That you may not disclose to anyone, without our prior written permission, the results of any performance tests on the Software.
So the tool is there, but I cannot use it, and even if I could, I cannot discuss it without written permission. Though Microsoft should be applauded for providing free tools on Codeplex, this half-hearted attempt seems a bit pointless. If you decide to open a tool and let it have it’s own life, do it properly. Allow people to use the tool and discuss it, so that it can gain support. If it is not performing good, but is interesting, someone will improve it. Free tools and libraries succeed because of the community support, not because a big company is standing behind them.
Image credits: jjvargas/sxc
1 I found Castle project, a mix between Spring and Rails concepts implemented in .Net – I just recently started using it, so I cannot yet recommend it, but it looks very interesting – check it out if you are looking for .Net plumbing.
I'm Gojko Adzic, author of Impact Mapping and Specification by Example. To learn about discounts on my books, conferences and workshops, sign up for Impact or follow me on Twitter. Join me at these conferences and workshops:
Product Owner Survival Camp
Specification by Example Workshop
Conference talks and workshops