Licensing Restrictions Plague the new Portable Class Libraries
Lately we’ve been talking a lot about Microsoft’s Portable Class Libraries. Some really important and interesting libraries including the BCL Portability Pack, Async, Stream Compression and ZIP Archives, and Microsoft HTTP Client Libraries all offer Portable Class Library support. And with the newest version of Mono also supporting PCL, one would think this would be a huge win for cross-platform developers. But that’s not the case.
The versions of these libraries that are production ready have licenses that restrict them to just the Windows platform. This means you can’t create your own portable libraries that relies on one of these and deploy it on an Android, Linux, iOS, or OS X device.
Phil Haack argues that having a good C# story on the iPhone is important for the long term success of Windows Phone and Tablet.
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 is a strong possibility that Microsoft will change course on this matter. Over time the restriction was removed from the ASP.NET MVC and MEF libraries. And departments at Microsoft have gone even further:
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.