I’ve not read any complaints about this yet (maybe I just missed it), but I think Microsoft has royally messed up with the recently released WPF Ribbon. Well, actually, if I’m reading things correctly, it’s also the native Ribbon and any third party Ribbons. What’s the issue? Licensing.
Licensing is almost always evil, IMHO. I’ll agree that it’s a necessary evil in many situations, but evil non-the-less. OK, that’s a rather dogmatic thing to say, and I know it. It’s a religious debate, and usually I hate such debates about technical things. However, in this case, I think almost everyone can agree that the particular license is draconian. Let’s go over the license.
3a. The design guidelines are confidential, and you may not disclose them. Absurd in the extreme. They’re published on the Internet, so claiming they’re confidential is ludicrous. The only thing even half way justifying this requirement is that to download these “confidential” guidelines, you have to agree to this license. But really, what purpose does this serve? This is a hassle, with no reasonable purpose.
3b. Your Licensed UI must comply with the Design Guidelines. Oh, what utter crap. Microsoft is trying to legally enforce design GUIDELINES. Just ignore that there’s reasons to violate guidelines (otherwise they wouldn’t be guidelines). Ignore the fact that this legally prevents you from innovating. Ignore the fact that the guidelines can change and then there’s a huge legal question about which version of the guidelines your bound to (I’m sure it’s cut and dried, but do you want to possibly deal with the potential legal troubles when you’re developing an application that doesn’t produce much, if any, revenue?).
3c. Legalese. Go read it yourself. I hate legal clauses like this, that require lawyers and judges to evaluate things on a case by case basis. Who’s to say my new Frazzle application “meets or exceeds relevant industry standards”?
3d. Fluff. Serves no purpose, as far as I’m concerned. Why must licenses spell out what they DON’T grant, when it’s not ambiguous that they don’t grant that right with out the clause?
3e. See 3c. We wouldn’t need such a clause if we didn’t have the stupid license to begin with.
3f. See 3d. You mean I must obey laws? If I don’t sign this license, do I have to?
3g. No sub-license rights. Read it for yourself, but this seems to me to absolutely disqualify the use in any Open Source project. If Microsoft wants to do that, I don’t have any problems, it’s their choice. However, if that’s the case, should it be on CodePlex?
The worst part, however, is that EVERY PRODUCT THAT USES THIS MUST BE LICENSED WITH MICROSOFT. Are you kidding me? Not only is this not appropriate for Open Source projects, it’s a hassle at best for any project, especially non-commercial projects. What’s the point? Why would Microsoft do this? This is a dangerous trend, as far as I’m concerned. It would be one thing if Microsoft were selling this as a product (though even then, most such commercial licenses wouldn’t require you to register every application the control is used in), but this is a control that they are going to include in the OS and the BCL. What the hell?