It need not always be after the fact.
Are you a lawyer? I've been reading the promise Microsoft made, and it's all gibberish to me. And I doubt that even the original lawyer who drafted it would actually understand what he had written.
As far as legalese goes, Microsoft's Community Promise is actually pretty clear.
Basically, they grant you the right to use their patents to the extent of implementing the standards they've released under the promise. But in order to qualify, you have to implement the whole standard. (This is not a 'gotcha' clause so they can sue you if you have a bug, it's a clause to ensure that you can't take the patent grant and use it in a totally different context by saying you started from the standard specification and removed functionality until only the patented piece was left, then re-expanded it out to a totally different thing.)
Once you've implemented the whole standard, you can even continue and add additional functionality to your implementation, so long as the original standard remains implemented. (This is in key contrast to Java's grants, which only apply if you implement exactly what they specify and nothing more -- that "and nothing more" part is what got Microsoft in trouble when they extended the syntax of J++ to include anonymous closures.)
If you ever sue Microsoft over any patents involved in the specification you're implementing under the promise, the protection of the promise and its patent grants to you dissolve. It's "don't sue us, and we won't sue you", just scoped to a single standard -- in other words, you could sue Microsoft over other patents not related to the standard without losing your patent grant.
It's also irrevocable. They can't just decide one day to no longer honor the (legally binding) promise.
Compared to Java's grant, which even ends up involving things like field-of-use restrictions once you get the TCK license involved, it's incredibly permissive. Under the Community Promise, had Google used C# in the same way they used Java, they would be completely in line with the terms of the promise.
You know that UAC thing people who use Windows like to complain about?
I have to laugh when I see self-proclaimed 'experts' disable UAC, solely because they're smart enough to know where the option to turn it off is; but apparently not smart enough to realize no matter how smart, competent, and safe of a user you think you are, it's never a good idea to run as root, even if you think you're Electronic Jesus who never makes mistakes. (There's considerable overlap between this group of 'experts' and the group of 'experts' who refuse to install MSE because they're 'too good' to need it.)
Microsoft can only go so far to protect its 'expert' users from themselves. At some point, the user's own stupidity is at fault. And a user's stupidity doesn't go away just because they're using a different OS.
> This attitude from Microsoft isn't new, but I don't really see them being able to execute the "extinguish" part of their normal plan on GPL/BSD/MIT licensed software. Instead I can see them at grassroots level trying to make their platform relevant and make sure people can hook into it, but they get left on the sidelines.
Microsoft is turning into IBM. Once the dominant player, but technology moved on and they didn't move fast enough to follow it and stay on top. IBM was blindsided by the PC revolution, Microsoft was blindsided by the mobile revolution.
I think it's the ultimate fate of any tech behemoth. As an organization grows in size, it naturally gets slower and less capable of rapid adaption to change; and in an ironic twist of fate, it also means the organization has enough resources to invest into research and toy projects that they end up pioneering the very paradigm shift that results in their downfall when they turn out to be incapable of embracing it.
IBM commercialized the PC and it spun out of their control when other people took the idea and iterated it faster and made it better. Microsoft has been toying with mobile/embedded/tablet ideas for well over a decade and in doing so undoubtedly laid the conceptual groundwork for what would become the iPhone and iPad. And unless the pace of technology innovation slows along with the fading of Moore's Law, Google, Facebook, and Apple -- today's behemoths -- will all likely end up in the same situation.
It's worth noting that Microsoft Research had the exact same idea back in 2007 with Volta, which was an implemention of the
> You mean as opposed to when he had the DoJ stand down over DOMA and got DADT repealed or used a tremendous amount of political capital to get healthcare reform?
A nearly full term presidency and you can only name three things he's done well (only one of which was a legislative 'victory', and I put 'victory' in quotes because healthcare reform should have ended up a lot less compromised than it ended up being; whereas DOMA and DADT were both Executive imperatives that he hemmed and hawed about for years -- and you can damn well expect the next Republican in the White House will just perform a complete about-face on DOMA enforcement and defense). So... talk about damning with faint praise.
Obama's problem is that he's been so anxious to compromise with the right on *everything*, that he starts the conversation with a compromise plan, which just ends up getting pulled even further to the right when the inevitable cries of "no that's not enough!" come out from the Repubs in response to it.
He needs to grow a backbone.
Who the hell thought it was a good idea to have dynamic content in a document description language?
Notice you never hear about exploits-of-the-week like this for LaTeX !
For the same reason your "web browser" can submit forms.
Take a look at the fundamental model. When you move a window in Windows, the app is notified and it has to respond. Try moving the window of an unresponsive app, it does not redraw because Windows is asking the app to redraw it.
Windows has had a retained-mode graphics system for the past 3 years as long as you don't disable desktop composition.
So really, even if MS adds the 2 standards to their Community Promise, that still doesn't mean you get anything useful - if you write a simple app that does nothing, you're fine. If you want DB access, or web serving, or a GUI.. you're still in the same problem as before.
Unless you're saying that you need Microsoft technology to provide useful software in the general sense, there's no reason to say that not being able to use ADO.NET makes C# any less useful of a language or Mono any less useful of a platform than the fact you can't use ADO.NET with C++ in GCC. Or with CPython. Or with Perl.
The CLI outlines a pretty thorough P/Invoke system which Mono supports, so you can use any DB library or GUI library you want with Mono. You're in no worse of a situation than you are with any other language.
GPL is certainly not the only free license. And what about people that go the "GPL\0for files in the \"GPL\" directory" way?
Well for the latter, obviously we'd fix the bug that allows poison null bytes to break a string, since that's a pretty serious security vulnerability in a web browser.
For the former, all of the following are valid in both HTML 4.01 Strict and XHTML 1.0:
<link rel="copyright" href="http://www.gnu.org/licenses/gpl.html"
<link rel="copyright" href="http://www.opensource.org/licenses/mit-license.php"
<link rel="copyright" href="http://www.microsoft.com/opensource/licenses.mspx#Ms-PL"
And all of the following work in any included ECMAScript file:
You certainly have the freedom to alter your user agent to require any set of licenses you're comfortable with.
Stallman is perfectly happy avoid using your service and resources. His issue is that he doesn't have an easy way to tell whether or not he *should* avoid you.
It'd be fairly trivial for someone to put together a browser extension that refuses to execute any code that doesn't come with a copy of the GPL attached.
If the fact that nearly every HTTP response would end up at least 17k larger if the idea were to take off is too large to swallow; then just include a link to the GPL in one of a page's tags. It'd be just as easy for a user agent to check that as well.
//GO.SYSIN DD *, DOODAH, DOODAH