Platform Limitations Harm .NET

code 0 comments suggest edit

UPDATE: The .NET team removed the platform limitations.

Let me start by giving some kudos to the Microsoft BCL (Base Class Library) team. They’ve been doing a great job of shipping useful libraries lately. Here’s a small sampling on Nuget:

However, one trend I’ve noticed is that the released versions of most of these packages have a platform limitation in the EULA (the pre-release versions have an “eval-only” license which do not limit platform, but do limit deployment for production use). At this point I should remind everyone I’m not a lawyer and this is not legal advice blah blah blah.

Here’s an excerpt from section 2. c. in the released HttpClient license, emphasis mine:

a. Distribution Restrictions. You may not

  • alter any copyright, trademark or patent notice in the Distributable Code;
  • use Microsoft’s trademarks in your programs’ names or in a way that suggests your programs come from or are endorsed by Microsoft;
  • distribute Distributable Code to run on a platform other than the Windows platform;

I think this last bullet point is problematic and should be removed.

Why should they?

I recently wrote the following tweet in response to this trend:

Dear Microsoft BCL team. Please remove the platform limitation on your very cool libraries. Love, cross-platform .NET devs.

And a Richard Burte tweeted back:

And that pays the rent how exactly?

Great question!

There is this sentiment among many that the only reason to make .NET libraries cross platform or open source is just to appease us long haired open source hippies.

Well first, let me make it crystal clear that I plan to get a haircut very soon. Second, the focus of this particular discussion is the platform limitation on the compiled binaries. I’ll get to the extra hippie open source part later.

There are several reasons why removing the platform limitation benefits Microsoft and the .NET team.

It benefits Microsoft’s enterprise customers

Let’s start with Microsoft’s bread and butter, the enterprise. There’s a growing trend of enterprises that support employees who bring their own devices (BYOD) to work. As Wikipedia points out:

BYOD is making significant inroads in the business world, with about 75% of employees in high growth markets such as Brazil and Russia and 44% in developed markets already using their own technology at work.

Heck, at the time I was an employee, even Microsoft supported employees with iPhones connecting to Exchange to get email. I assume they still do, Ballmer pretending to break an iPhone notwithstanding.

Microsoft’s own software supports cross-platform usage. Keeping platform limitations on their .NET code hamstrings enterprise developers who want to either target the enterprise market or want to make internal tools for their companies that work on all devices.

It’s a long play benefit to Windows 8 Phone and Tablet

While developing Windows 8, Microsoft put a ton of energy and focus into a new HTML and JavaScript based development model for Windows 8 applications, at the cost of focus on .NET and C# in that time period.

The end result? From several sources I’ve heard that something like 85% of apps in the Windows app store are C# apps.

Now, I don’t think we’re going to see a bunch of iOS developers suddenly pick up C# in droves and start porting their apps to work on Windows. But there is the next generation to think of. If Windows 8 devices can get enough share to make it worthwhile, it may be easier to convince this next generation of developers to consider C# for their iOS development and port to Windows cheaply. Already, with Xamarin tools, using C# to target iOS is a worlds better environment than Objective-C. I believe iOS developers today tolerate Objective-C because it’s been so successful for them and it was the only game in town. As Xamarin tools get more notice, I don’t think the next generation will tolerate the clumsiness of the Objective-C tools.

There’s no good reason not to

Ok, this isn’t strictly speaking a benefit. But it speaks to a benefit.

The benefit here is that when Microsoft restricts developers without good reason, it makes them unhappy.

If you recall, Ballmer is the one who once went on stage to affirm Microsoft’s focus on developers! developers! developers! through interpretive dance.


Unless there’s something I’m missing (and feel free to enlighten me!), there’s no good reason to keep the platform restriction on most of these libraries. In such cases, focus on the developers!

At a recent Outercurve conference, Scott Guthrie, a corporate VP at Microsoft in change of the Azure Development platform told the audience that his team’s rule of thumb with new frameworks is to default it to open source unless they have a good reason not to.

The Azure team recognizes that a strategy that requires total Windows hegemony will only lead to tears. Microsoft can succeed without having Windows on every machine. Hence Azure supports Linux, and PHP, and other non-Microsoft technologies.

I think the entire .NET team should look to what the Azure team is doing in deciding what their strategy regarding licensing should be moving forward. It makes more developers happy and costs very little to remove that one bullet point from the EULA. I know, I’ve been a part of a team that did it. We worked to destroy that bullet with fire (among others) in every ASP.NET MVC EULA.

Update: It looks like I may have overstated this. Licenses for products are based on templates. Typically a product team’s lawyer will grab a template and then modify it. So with ASP.NET MVC 1 and 2, we removed the platform restriction in the EULA. But it looks like the legal team switched to a different license template in ASP.NET MVC 3 and we forgot to remove the restriction. That was never the intention. Shame on past Phil. Present Phil is disappointed.

At least in this case, the actual source code is licensed under the Apache 2.0 license developers have the option to compile and redistribute, making this a big inconvenience but not a showstopper.

Next Steps

I recently commented on a BCL blog post suggesting that the team remove the platform limitation on a library. Immo Landwerth, a BCL Program Manager responded with a good clarifying question:

Thanks for sharing your concerns and the candid feedback. You post raised two very different items:

​(1) Windows only restriction on the license of the binaries

​(2) Open sourcing immutable collections

From what I read, it sounds you are more interested in (1), is this correct?

The post he refers to is actually one that Miguel de Icaza wrote when MEF came out with a license that had a platform restriction entitled Avoid the Managed Extensibility Framework. Fortunately, that was quickly corrected in that case.

But now we seem to be in a similar situation again.

Here was my response:

@Immo, well I’m interested in both. But I also understand how Microsoft works enough to know that (1) is much easier than (2). :P

So ultimately, I think both would be great, but for now, (1) is a good first step and a minimal requirement for us to use it in ReactiveUI etc.

So while I’d love to see these libraries be open source, I think a minimal next step would be to remove the platform limitation on the compiled library and all future libraries.

And not just to make us long haired (but soon to have a haircut) open source hippies happy, but to make us enterprise developers happy. To make us cross-platform mobile developers happy.

Found a typo or error? Suggest an edit! If accepted, your contribution is listed automatically here.



31 responses

  1. Avatar for Damien Guard
    Damien Guard June 24th, 2013

    Claiming "we're loosing money right now but it will pay dividends in the future" is an easily claim to make and incredibly hard to prove even after the fact.

    Did your product really help drive adoption?
    Did it drive sales?
    If you add up all the projects claiming to have helped sell X is there enough profit left from X to pay for them all?

    Isn't this the same "business model" we saw in the DotCom bust?


  2. Avatar for jvr
    jvr June 24th, 2013

    Right, but what's the cost of literally removing a line of text from your license?

  3. Avatar for nicwise
    nicwise June 24th, 2013

    "And that pays the rent how exactly?"

    How does the BCL, or .NET in general, pay the rent now? I suspect it doesn't - and doesn't need to, directly.

    It's an awesome piece of software, used to make awesome software, but it's power is in what it creates and enables, not the BCL itself.

    I write C# code on iOS, Android, Windows, Mac and Linux. Decisions I've made over the past 10 years of using .NET have directed maybe 10-100x my cumulative salary to Microsoft. Not a large number in the global-enterprise stakes, but I'm just one developer. So, indirectly, my decision to stick with C# DOES pay the rent in Redmond - and the however-many-million+ developers like me.

    and Richard is from Ranui! Awesome, bro! ;-) #kiwi

  4. Avatar for Jonathan Channon
    Jonathan Channon June 24th, 2013

    I agree and in a round about way what I discuss here - http://blog.jonathanchannon... There is a wider change of mindset needed by companies/enterprises and MS facing devs

  5. Avatar for martijnhoekstra
    martijnhoekstra June 24th, 2013

    This assumes that when a development team that prefers to write in C# has a choice between developing in a different language which is easier to port cross platform, or not developing for platforms other than Microsoft platforms, they will choose the former. I believe this to be a fallacy.

  6. Avatar for Damien Guard
    Damien Guard June 24th, 2013

    My comments are written from the perspective from the team writing free .NET libraries under the guise that it will eventually contribute financially towards Windows and Visual Studio licences. That's a hard thing to justify at the best of times.

  7. Avatar for Nicolas
    Nicolas June 24th, 2013

    I can't believe we have such unsophisticated arguments about that. That is worrisome for both basic feature that do promote the platform, and for all those other features you mention which just suck blood.

    Good, focused, science, and building block is never a waste.
    Stupid feature no one cares for is always one.

    Btw, how do you print to a PDF in windows 8?
    How much money went there ?

  8. Avatar for Erick
    Erick June 24th, 2013

    I'm probably exposing my ignorance here. I don't know much about IOS development. But how would you be able to run a precompiled binary System.Net.Http.dll on an IOS device?

  9. Avatar for haacked
    haacked June 24th, 2013

    Erick: We're talking about the Microsoft.Net.Http.dll. It's a PCL (Portable Class Library) assembly.

  10. Avatar for Nicolas
    Nicolas June 24th, 2013

    And how adding a stupid bullet is going to help make a case for that?

    .net is the core programming entry point.
    The competition is heating up, the bar is raising.
    Tolerance for stupid bullet is not an option.

    Good engineering, vision, and smart option is what dev and enterprise want, not the latest stupid clippy or unusable windows 8 stuff.

    The role of a business like msft is to look up the value chain and have a consistent vaporization story, not imagine that adding annoyances in BCL will make more biz.

  11. Avatar for katokay
    katokay June 24th, 2013

    This problem is felt 10-fold for those supporting OSS projects and *they* want to support multiple platforms always having to work around the platform restrictions for nuget binaries. Mind you that these people are actively trying to make the .NET ecosystem better. It is a huge waste of time and the community would be so much better off without the platform restrictions. One example for which there are many.

  12. Avatar for haacked
    haacked June 24th, 2013

    Great point and one I wish I had made. ReactiveUI is another example of an open source .NET library that's going to primarily be used on Windows apps, but would like to be fully OSS. It makes it hard when we have to work around these stupid restrictions.

  13. Avatar for Khalid Abuhakmeh
    Khalid Abuhakmeh June 24th, 2013

    The future of .Net is OSS. The only question is, whether Microsoft will realize it before it is too late for it to matter.

  14. Avatar for Mouse123
    Mouse123 June 24th, 2013

    The math that most companies do is to figure out what the cost of acquiring developers and the long-term value that each one of these guys bring to the platform.

    For example, if bringing a developer to the Windows platform costs 500 dollars, but in the long term it brings 6,000 dollars worth of sales, you have a net gain of 5,400 dollars.

    I get the feeling that ultra-successful companies like Microsoft do not have to do this math anymore since they are just so used to people adopting their platform by default.

    The arrival of the Web, Android and iOS worlds have started to turn this around. For the first time in Microsoft's history there are major platforms that Microsoft no longer controls and have created their own ecosystems.

    The platform limitations are a reminder of the philosophy of protecting Windows over anything else, but it does not take into consideration that (a) existing .NET developers are abandoning the platform for Ruby, Python, JS on the Web and Java and Objective-C on mobile and (b) that once they go, the price to get them back the math of the long-term value to the platform shifts from Microsoft to someone else.

    Microsoft seems to be oblivious to the fact that every developer they loose to Android and Objective-C is a developer that will be very hard to bring back. And every roadblock they put that slows down .NET on other platforms is undermining their own long-term goals.

    Microsoft seems to be planning only their next move, unable to play chess.

  15. Avatar for Craig Deubler
    Craig Deubler June 24th, 2013

    It makes me sad to see this sort of thought process still going on.

    Death by a thousand cuts. As long as it feels their commitment is to their own pockets developers will go elsewhere.

  16. Avatar for Andrew Nurse
    Andrew Nurse June 24th, 2013

    Just FYI Phil, MVC still has this restrictions on it's BINARY distributions (and to my knowledge has always had it): - It's almost universal on all Microsoft EULAs for Binaries. The _source_ is totally open and you can do what you want with it, but the MVC binaries Microsoft builds and signs are Windows-only.

  17. Avatar for haacked
    haacked June 24th, 2013

    I updated my post. ASP.NET MVC 1 and 2 did not have the platform restriction. Then we changed to a different license template and we must have forgotten to take it out. Trust me, it was never supposed to remain in there.

    Hopefully the PMs on the ASP.NET team can fix it. :)

  18. Avatar for hollywoof
    hollywoof June 24th, 2013

    I think the tweet you got back is misleading.

    In my recent experience, the more likely reason for the limitation is ms legal. I've recently - for 3 months - been trying to get the same platform limitation removed from the kona/prism sample projects on codeplex. The blocking point here seems to be Microsoft legal teams - the technical teams seem genuinely keen to help, but the legal team requires a very thorough review over the code and ip included.

    I guess that there are genuine legal issues here - I guess ms really do have some patent licenses which mean that they need to check what they release where.

    However, I too hope that the situation changes in the near future :)

  19. Avatar for Scott Barnes
    Scott Barnes June 25th, 2013

    You know the story better than most Phil :) it has little to do with qualitative reasoning & more to do with fear / compete paranoia.

    If we give stuff away for free without being able to face a "business review" in the executive building whilst not coming up with a monetization strategy it simply ends abruptly before it starts.

    Every aspect of Microsoft has to have "pull through" and it really comes back to creative accounting to show a money trail for why the company should invest in a team of engineers to write code for free - even though with the amount of cashflow in reserve it would probably take 2-3 years for the company to start noticing a negative loss should they actually shut down the company (given how much revenue is squirrelled away).

    I like Guthrie, he's always managed to find a way to navigate the "monetization" mess and when we had Silverlight / WPF on the books we also faced such questions as to why should the DLR be made, why should the plugin work on Mac, why should we expand our borders further and further... all it came down to was us spinning a lot of crap to get past the executive branch and tell them lies like "Oh it will mean X% pull through on SQL / IIS server licenses which translates further into Windows etc etc" basically creative accounting.

    Developers never came up in conversation, as for them they just assume the 10million+ .NET developers that purchase MSDN subscriptions that get baked into Enterprise Agreements "automatically" just happens despite in 2008-2009 the data showed there was around 4-5% drop-off in .NET developer numbers due to failures in seeding Academia etc given Universities stopped pushing Microsoft C# as part of the class criteria and doubled down into PHP/LAMP world given the cost was and that is the punchline to this sad joke because from that point onwards Bill's IIS team were told to drive Server-share further and wider from not just ISP adoption but also get PHP devs back on side... the irony of how free cost the company so much.

    Imho this is why Scott Guthrie should be Chief Architect or whatever. At least he has a strategy and has shown he can execute whilst not alienating the developer horde...

  20. Avatar for haacked
    haacked June 25th, 2013

    > You know the story better than most Phil :) it has little to do with qualitative reasoning & more to do with fear / compete paranoia.

    True. But I also know that sometimes an outside influence can help get the ball rolling faster. It's another thing to "fear". Miguel was very successful with helping the MEF team have the firepower to make a strong case to remove the limitation.

    I'm hoping the strong reaction this post has received does the same. It should be clear to any bean counter that this is important to their customers.

    As for Guthrie as Chief Architect, that's a good start! I'm not sure he wants the job, but I'm rooting for him as a future CEO. ;)

  21. Avatar for haacked
    haacked June 25th, 2013

    Well there's two different issues. The platform restriction on the compiled binaries is a no-brainer. There's really no patent issue to be concerned about there. The patent issues come into play when you want to release the source code under an OSS license.

    The problem I see is that LCA isn't very well coordinated. We were fortunate to have a great LCA team that understood the issues well. But other teams don't and they have to train their LCA.

    Also remember, the lawyers work for the business, not the other way around. Their job is to present the risk, but it's ultimately a business decision.

  22. Avatar for Timothy Meade
    Timothy Meade June 25th, 2013

    Interesting. I recently attended a talk on Writing Portable C# Applications given by an MVP here in the Cleveland area. I was disappointed that "Portable" meant only to Windows, Windows 8, and WP 7 and 8. There was a cursory mention of Xamarin for porting to iOS and a solution for Android, but that was not given as a demo.
    I did learn that it is possible to build an assembly that runs on all three platforms (limited to Win/Win8/WP as above), and that ModelViews can then be crafted for each of the targets on top of that portable assembly.
    I would very much like to build cross-platform mobile applications, and I really like C# as a language. I would think it would be in Microsoft's best interest to embrace Xamarin and actually support building applications for iOS and Android in their development tools. I can see how it would bring in additional SQL server and Server licenses, especially if it allowed focusing on the API on the backend which could be built on Azure or deployed in a data center on Windows servers. The tight integration between C# on the client (mobile in this case) and server would make it the obvious choice for both in enterprise platforms. The ability to simultaneously support Android and iOS as well as Windows Phone means less trade-offs where the more popular platforms are targeted to the exclusion of Windows Phone.
    Why should a mobile developer have to build all of the logic, server sync, protocol stuff more than once? We can encapsulate that into a single C# library that can be used on Windows, Windows 8, WP 7/8, and IOS and Android devices. We can then build ModelViews that give it a native look on all of those platforms. By the way, neither Apple nor Google offer that flexibility in cross-platform development, only Microsoft can if they want to.

  23. Avatar for Developer Dude
    Developer Dude June 25th, 2013

    How does making any development platform/tool/lib cross-platform "pay the rent" for MS?

    Fairly simple in my case; if it isn't cross-platform then most of my clients will not want it. If my clients don't want it, I don't want it. If I don't want it, I don't buy the tool/lib (or if it is free, use it) and I don't use it in development or distribute it or any of the nice downstream things that eventually lead to "paying the rent" for MS - I use something else.

    This is why Java and OSS continue to eat MS's lunch.

    Until MS comes to grips with this, they will continue to be a bit player in the server, cross-platform and phone/tablet world and continue to lose market share (albeit slowly) on the desktop.

  24. Avatar for Scott Barnes
    Scott Barnes June 25th, 2013

    Agreed on all fronts.

    I've also noticed that when ex-Microsofties speak their mind post leaving the information they give to the audiences is 10x more useful than the ones that are still there.

    That thought will fester.

  25. Avatar for Scott Barnes
    Scott Barnes June 25th, 2013

    Its not simple as you have a general ledger and until you can attach a product teams effort to that ledger you're in this DMZ that's filled with "potential vs reality" ... yes you have the potential to have strong pull through but in reality sales figures aren't spiking... so now comes a culling exercise when the $$ dont stack in your favor.

    Getting rid of something because its popular isn't something they are worried about, as to them this is a long-game not a short game. Microsoft doesn't think in terms of "how can i grow current dev sat levels up by 20% this fiscal year" ... they think often "how can i drive student adoption so in 10 years they are addicted to me.." which is the long game.

    OSS only serves a purpose in around making newcomers to the development fold adopt their technology or at times tick a box that shows you are great community citizens but only if it funnels into a tool or platform strategy in play.

    For instance anything ASP.NET related being "Free" isn't actually free, as in reality the % of adoption around ASP.NET are likely to be investments in Windows so the obvious win there is simply "Windows pull through" given im yet to see any offerings out there that gives you a Linux Box running ASP.NET.

    Java doesn't eat MS's lunch its actually quite a close call and the only reason why Java numbers picked up in the last 3 years is due to Android development which the irony there is because Microsoft decided again developer sat levels *currently* aren't important thus resetting the entire WPF/SL stack with no transition plan whilst at the same time trying to increase SL adoption through Wp7 but at the same time saying SL is effectively dead... so any lead they had on Mobility was destroyed and replaced with iOS/Android development etc.

    Anyway, there are so many cascade of failures but in the end the mindset of those in charge inside Microsoft aren't thinking about "How do i make you all happy" ...there's only a handful at the executive level that get it and as Phil etc know one of them is Scott Guthrie as the reason he gets it is because he has no issue getting on a plane and visiting .NET devs etc (his audience) where they live, listens to their feedback and executes on it.

  26. Avatar for haacked
    haacked June 25th, 2013

    At least for me, there's a good reason for this. In fact, I was thinking of blogging about it. :)

  27. Avatar for Developer Dude
    Developer Dude June 26th, 2013

    What MS does and why they do it doesn't really matter to me.

    What matters to me is what *I* do and why *I* do it. Over 15 years ago I made the break away from the MS monoculture and proprietary tools and went the Java and OSS route.

    The major reasons were:

    1) WORA - or something approaching that (I understand that the idea of WORA can at times be more of a goal than a destination - but even if I only get 90% there it makes my life and work a lot simpler - I can concentrate on *what* I want to do instead of the *how*). This made my life a lot simpler and widened my target audience, whether the "audience" is an end-user or an employer or client.

    2) I got rather tired of MS changing their collective minds every few years about what the newest programming API/SDK/lib or OS was to be. Everytime that happened I needed to stop, learn the latest fad/API/SDK/OS (sometimes all of the above at the same time) so that I could be current and marketable.

    If MS wants developer mindshare, and that seems to be what the original article is about, then they have to get inside the head of the developers and look at it from our perspective.

    If MS *doesn't* want that mindshare, or they feel it is a lesser asset in their ledger/strategy/whatever than their ability to "pull through" something so they can sell more copies of Windows or other MS products - then that is MS's issue/worry/strategy - not mine. I am not going to adjust my tasks/career/interests to align with their strategy as that is not my goal.

    FWIW, I do both Java and .NET development (about 95/5% division). I do .NET development because my current client (one of the largest corps in the world) for some reason drank a sip of MS Koolaid when it comes to web services and started off with VB6 for those services (they have been ported to C#).

    I like some features of C# over those of Java, and if I were tasked to do dev work that would only ever and forever run on Windows, and needed tight integration with Windows, then I would probably go with .NET. Interestingly, for my current client, I think they would be better served with Java on their servers and .NET desktop apps - but for some strange reason they do it the other way around (Java Swing on the desktop and .NET on the server).

    I like to think of myself as platform/language agnostic - using the tools that make the most sense for the job at hand. Trying to foresee the future, I still see the JVM platform (whether it uses Java, Scala, or some other JVM language) dominating the server market, and either dominating or having a very large share of the mobile market. For UI clients I see web or RIA clients dominating, especially in the world of enterprise client apps - I don't see .NET dominating there and I do see Java having a very large role to play in that market.

    In short, IMO, MS is limiting the appeal of the .NET dev platform by restricting it to Windows targets. This in turn limits Windows adoption, although not directly. As I said, MS is losing market share in both the platform and developer (mindshare) worlds. If MS is interested in the long term health of MS and wanting to keep MS relevant, then MS needs to turn around some of their thinking on this issue. No longer will most orgs accept vendor lock in - the market is getting more sophisticated and it sees that for what it is. MS will have to evolve or die.

  28. Avatar for dantheother
    dantheother June 27th, 2013

    Yeah, what he said.

    Go hard, make c# and Visual Studio (hands down best IDE in the world) *the* way you develop 'droid and ios apps, and you'll get accidental winphone and win8 apps out the tail end. Everyone wins.

  29. Avatar for JeroMiya
    JeroMiya September 18th, 2013

    What we're missing is a package manager that can grab the source directly from git and build it for you automatically. This is the direction newer package managers are going. For example, look at bower. Bower can install packages directly from git, versioned with semantic versioning. A similar tool for .net (or preferably an extension/enhancement to NuGet), would allow you to configure either in a nuget package itself, or via a local override (e.g. if you wanted to use your own fork of a library in place of an official one, without breaking other packages' dependencies), a git repository to download source from and and a build script to compile it into a binary locally. In this case, Microsoft may not be willing to configure their packages for from-source downloading, but you could configure it locally, even from your own forks.

  30. Avatar for Konaju Games
    Konaju Games September 26th, 2013

    Microsoft have been long time supporters of Xamarin (MS was a major sponsor of Xamarin's Evolve 2013 conference), so the platform limitation in the EULA makes no sense in that it excludes Xamarin customers. As you state, it most likely left over from a license template, and Richard's "rent" response is simply a knee-jerk reaction without looking at the wider picture.

  31. Avatar for Chris Meyers
    Chris Meyers October 8th, 2013

    I think the issue is that this is being looked at from the wrong perspective, and the question isn't really about open source. If Microsoft thinks limiting choice and forcing developers or users to do things actually makes the developers and users happy and loyal they are severely mistaken. People like options and choice, not the other way around.

    Lets say for example the Xbox team comes out with a restriction that any game put out on Xbox has to be exclusive, across the board EA or Activision or whoever included. They cannot release on PS3 or PS4 or PC or iOS or Android or whatever, only on Xbox, or not be on Xbox at all. Now can anyone honestly say that would be something the game developers and companies would go along with and that Xbox would automatically win with that approach? Of course not, they would quickly disappear as all they would have is the few first party games and virtually no sales from lack of titles as well as bad press and as a result and quickly be left in the dust. The game developers, especially smaller ones, don't really care about the success of microsoft, or sony, or apple, or any of the companies directly, what they care about is having a platform on which to provide their game and make sales. Being on more platforms means more users and theoretically more sales, so they have no real reason to limit themselves and thus why most games are cross platform that aren't first party or paid exclusives (where the payment makes up for the lost revenue of not being cross platform). The companies/developers also will want to support any platform where they can easily do so without a big investment and think they can make sales, because that is just a bigger usersbase, so if there aren't restrictions they will come to you.

    So now apply that same reasoning to what Microsoft is trying to do with Windows Phone and Windows 8 and licenses such as this. Do they really think that limiting developers to only windows phone is going to magically make windows phone win and make developers happy, especially given the huge lead in market share that iOS and Android have? Well newsflash it isn't, its far too late in the game to try that. What they should instead concentrate on is being the best development platform across all options, Windows, iOS, Android, etc. If C# was the development language of choice, then you would have people who create an app for iOS or Android because of their market share, and then can put it out on Windows Phone essentially for free because of C# and expand their market and potential userbase. That is a free win for Windows Store as it gets apps there that might not have otherwise been there, and having C# be ubiquitous would hardly make them lose any apps. So something like that can drive revenue simply by the cut of money from sales on the Windows Store, as well as people using the best C# development environment in Visual Studio. It also lets adopters of Windows Phone have more apps available on the store and not have to worry that by picking the phone with the best features and platform, which is what the phones should be competing on, they have to give up their favorite apps.

    It is also drives positive brand recognition and positive word of mouth, instead of people complaining and saying I would use C# but can't because it only supports Windows, whether via licensing or whatever, and so I am using Ruby or Java or Objective-C or only developing for the current top mobile platforms, they could instead say I am using C# and it is great and expands the reach of my app to all the platforms. They can start looking at and talking about Microsoft as the company that allowed them to become successful and be looked at in a positive way instead of always being associated with limitations and vendor lock-in. If Windows Phone wants to have a chance this late in the party it should be by providing the best phones with the best features and platform, not by trying to lock down developers to developing only on Windows. The climate has changed and in the long run they are going to lose that battle.