Xamarin + Portable Class Libraries
I haven't watched any of the Visual Studio 2013 launch event yet. But I have been following posts and articles on Twitter from people who did. And while I think Visual Studio Online is a huge thing, especially when you consider my rants about modern mobile OS's are eroding the availability of development platforms, I think for Microsoft the news about the partnership with Xamarin is far more exciting.
Once I can get access to something functional on the Visual Studio Online front, expect a blog post on that. But for now, I'm going to focus on Xamarin supporting portable class libraries.
I only just briefly read what someone else had said about PCL's in Xamarin, so I don't have the details yet. I know that Xamarin is similar in some ways to Mono .Net, but in other ways one might call it an extension or even a divergence of that idea. So, how PCL's and Xamarin actually work is a bit of a mystery. In the Mono-like context, this could truly mean that with Xamarin a PCL developed in Visual Studio would be supported inside of Xamarin based apps running on Android and iOS in addition to Microsoft's own platforms (and potentially vice versa). Or, it could also mean that Xamarin is introducing its own concept of a PCL like library that would serve the same purpose (though I fail to see how that would be any different than anything that Xamarin is doing today).
As you can guess, my money is on Xamarin actually supporting Microsoft's PCL's directly. And that is potentially a pretty big deal. Especially for investment into PCL dll's. Prior to this, I would have said to avoid PCL unless you were invested solely in the whole Microsoft eco-system. Now there would be a reason to shift as much code there as possible even if you aren't that invested.
For Xamarin, it makes their platform that much more desirable to any one thinking about developing for iOS and Android in addition to any single Microsoft platform. In fact, in a lot of ways it helps to even further blur the lines of cross-platform development. And this is where that benefit to Xamarin becomes reciprocal and becomes a potential benefit to Microsoft as well. What makes Xamarin a more popular choice for developers indirectly has greater potential to make Microsoft a more viable target for developers.
It is far from a 1:1 ratio though. Xamarin, last I checked it out, licenses the ability to build for each platform separately. Add to that Microsoft's fees for becoming capable to publish to their stores. Even if it is just $19/year now on Microsoft's side, it isn't free. And if the ability to target Microsoft platforms from inside Xamarin is also not free, then there will still be a lot of people who might have otherwise, but still won't target for WP8 and Windows 8.
And, even for those who find the price palatable, Xamarin isn't like the others out there that just use HTML or some other lowest common denominator set on controls. UI is still platform specific. And then there may of course be platform specific features you want to take advantage of.
So, even though I think Xamarin's approach of generating native apps and simply re-using as much as possible is the ideal mix cross-platform compatibility and native platform support, many still see this as being more involved than the cheap alternatives adhering more strictly to the WORA principle (Write once, Run anywhere). And that means that even if development is completely free in monetary terms, it still isn't "free".
But, all of that negativity aside. I think this is great news. I think this definitely will bolster the availability of apps for Microsoft's platforms, and in the short term, I think it will have minimal positive effect on the Android and iOS market places. At the moment I think for anyone who chose to target just Windows Phone and/or Windows 8 devs that they wouldn't find this a help at all in motivating them to release an Android or iOS version. So, any gains from this are purely in Microsoft's favour.
[update]
I just got an email which seems to confirm that Xamarin is indeed support Microsoft's PCL libraries directly and not just some bastardized representation.
[/update]
Once I can get access to something functional on the Visual Studio Online front, expect a blog post on that. But for now, I'm going to focus on Xamarin supporting portable class libraries.
I only just briefly read what someone else had said about PCL's in Xamarin, so I don't have the details yet. I know that Xamarin is similar in some ways to Mono .Net, but in other ways one might call it an extension or even a divergence of that idea. So, how PCL's and Xamarin actually work is a bit of a mystery. In the Mono-like context, this could truly mean that with Xamarin a PCL developed in Visual Studio would be supported inside of Xamarin based apps running on Android and iOS in addition to Microsoft's own platforms (and potentially vice versa). Or, it could also mean that Xamarin is introducing its own concept of a PCL like library that would serve the same purpose (though I fail to see how that would be any different than anything that Xamarin is doing today).
As you can guess, my money is on Xamarin actually supporting Microsoft's PCL's directly. And that is potentially a pretty big deal. Especially for investment into PCL dll's. Prior to this, I would have said to avoid PCL unless you were invested solely in the whole Microsoft eco-system. Now there would be a reason to shift as much code there as possible even if you aren't that invested.
For Xamarin, it makes their platform that much more desirable to any one thinking about developing for iOS and Android in addition to any single Microsoft platform. In fact, in a lot of ways it helps to even further blur the lines of cross-platform development. And this is where that benefit to Xamarin becomes reciprocal and becomes a potential benefit to Microsoft as well. What makes Xamarin a more popular choice for developers indirectly has greater potential to make Microsoft a more viable target for developers.
It is far from a 1:1 ratio though. Xamarin, last I checked it out, licenses the ability to build for each platform separately. Add to that Microsoft's fees for becoming capable to publish to their stores. Even if it is just $19/year now on Microsoft's side, it isn't free. And if the ability to target Microsoft platforms from inside Xamarin is also not free, then there will still be a lot of people who might have otherwise, but still won't target for WP8 and Windows 8.
And, even for those who find the price palatable, Xamarin isn't like the others out there that just use HTML or some other lowest common denominator set on controls. UI is still platform specific. And then there may of course be platform specific features you want to take advantage of.
So, even though I think Xamarin's approach of generating native apps and simply re-using as much as possible is the ideal mix cross-platform compatibility and native platform support, many still see this as being more involved than the cheap alternatives adhering more strictly to the WORA principle (Write once, Run anywhere). And that means that even if development is completely free in monetary terms, it still isn't "free".
But, all of that negativity aside. I think this is great news. I think this definitely will bolster the availability of apps for Microsoft's platforms, and in the short term, I think it will have minimal positive effect on the Android and iOS market places. At the moment I think for anyone who chose to target just Windows Phone and/or Windows 8 devs that they wouldn't find this a help at all in motivating them to release an Android or iOS version. So, any gains from this are purely in Microsoft's favour.
[update]
I just got an email which seems to confirm that Xamarin is indeed support Microsoft's PCL libraries directly and not just some bastardized representation.
[/update]
Comments
Post a Comment