During Build Microsoft clearly demonstrated that they are dedicated to bring cross platform and cross device development to the Windows 10 platform. The most applauds came from the IOS and Android ports and the Windows 10 “universal” app platform was well received by the community. With this investment, Microsoft takes what the likes of Xamarin and PhoneGap have been doing, incorporate it as a native part of Windows and makes a leap forward.
But does this mean that we now have solved the riddle of cross platform and device development? That we now, mostly, will have one code base to manage and develop?
It depends on what you think the challenge is. As I see it the challenge is not the lack of frameworks or technical possibilities. It’s politics, platform differences and application purposes.
Even in the logical world of IT, not everything is a 1 or a 0, not everything is logical. You can have the best intention in the world. The best technology, and yet no one will use your stuff. In the world of apps and os platforms, this truth is cast in stone. In the back waters of Xamarin, PhoneGap and Sencha there have still not been a significant shift to truly universal apps. Some apps are just available for certain platforms or devices. Not on all of them. This is the politics of the shop that made them (or tech-religious beliefs in some cases), people are people and are not prone to change.
The differences in platform and device capabilities means that any app that wants to be truly universal needs to be created with the least common denominator as a basis. A fact that the java community have struggled with the last decade or two. To really shine on a certain platform, there will have to be differences in the app. An example of this is the Windows 10 “continuum”. An awesome feature not available on other platforms. So while a core can be shared, the app can’t truly be universal if it also wants to be truly awesome.
The last hurdle for truly universal apps is the purpose for it coming to life. While you can argue that doing universal apps for IOS, Android and Windows Phone have great potential, it does not mean that I use the apps in the same way, or even the same apps, on my desktop, laptop or XBOX. The purpose of the device is different and thus the purpose of the apps I use on them are different. With my laptop, desktop and XBOX, most of what I do is seated (well except a Kinect game or two). With my phone or tablet, most of what I do is mobile. It matters for my choice of device for a certain activity.
In addition to that, the form factor is different. 3,7,12, 50 – in this case every inch matters. A great experience on 3” will not automatically be a great experience on 50”.
So do I not believe in frameworks like Xamarin, “Project Astoria” or Windows “universal” apps?
On the contrary; I absolutely do.
These technologies bring a lot of value to the development community; for the cases where cross platform and cross device development is feasible and desirable.
I am however very cautious in declaring that this is always, or even most commonly, the case.