Monday, August 17, 2015

Why the Windows 10 Universal Windows Platform Bridges are a GREAT thing!

At the build conference earlier this year, one of the more controversial announcements were the "Bridges" that were introduced.

These "bridges" are new ways of building apps and involve using tools and languages that are different from the "native" methods of C#, C++, VB.Net or F# for the code and XAML or Direct-X for the UI.

They allow the use of Objective-C to build UWP apps, or repackaging Android APK bundles, Native Win32 apps or websites as Windows 10 apps.

Recently the iOS bridge has been open sourced and made publicly available. There's also been a leak of Project Astoria (the Android bridge).

Some people (mostly developers) think these bridges (for Android and iOS in particular) are a bad thing. I don't.

I suspect that negative reactions to the bridges are mostly reactionary and come from a place of fear, elitism and uncertainty.

If you've spent the last few years building Windows and Windows Phone apps you'll have built up some skills and experience that you were probably hoping would help you build similar apps in the future.
That's no bad thing but some people presume that the introduction of these bridges means the end of native development for Windows (& Phone) using C# & XAML. That's probably a bit of a reach.
If you've been doing native development professionally, especially as a contractor, then you may be more concerned. There will probably be less work creating ports of other apps to Windows (Phone/Mobile).
Yes, losing your job is a bad thing and I know of one person who has lost their job due to a change in need for developers who can do straight ports of Android apps to Windows Phone. If you end up unable to find work I don't think you can solely blame the bridges though.

I believe that many of the skills and experience that are used to create great apps for Windows and Windows Phone can also be used to create other things too.
If you've been developing such apps you'll know more than just how to use a specific SDK or programming language.

If someone explicitly told you that you could keep building apps for Windows/Windows Phone with the same skills and knowledge for a long period of time I'd take them to one side and have a quiet word.

The world of software development is ever changing and in the world of mobile development particularly so. This is a world where we can almost guarantee at least one new major OS update every year. A place where tools, technologies, languages and frameworks are regularly updated or replaced. This is not a place you can afford to stand by for a long period of time and expect nothing to change. The mobile app landscape was very different 5 years ago.

If you'd decided that you will only ever continue to develop apps for Windows and will only consider using C# and XAML to do so (I've spoken with a few developers who have this attitude) then you're making things hard on yourself.

If you want to stop with what we've got now, why stop now? Are things not going to get better or easier in the future?  If now, why now? Why didn't you stop at some point in the past?

If either on your own or on the advice of others you are confident in the technologies and levels of knowledge you will need to continue building apps for the next few years would you please share them with the rest of us. Oh, and if you're really that good at predicting the future can you let me know next month's lottery numbers. (Actually, you might need them too, if you're going to refuse to learn anything new and insist that you'll keep using the same tools to build for the same platforms evermore.)

So, if we can't rely on a future of porting Android and iOS apps to Windows/Windows Phone, what can we do?

How about something new? Rather than just reinventing the wheel.

Getting to do exciting new things is better than just rehashing what already exists. Even if it is easy money.

We don't build a better future by just building variations of things that already exist. There's more to life than just building apps.

That was a lot of words and some sentiments that I know many will take umbrage with so let's recap the details.

Why they may be a bad thing?
- Less investment in native Windows apps may affect people looking for work doing such.
- Running Android or iOS apps on Windows (Phone) may create a sub-standard app experience that could put users off the platform.
- Existing Windows developers abandoning the platform in backlash at the news. (I've heard a few people claim they're going to do this.)
- Windows may be seen as just a third place ecosystem where running a version of an app built for another OS is good enough. The knock-on effect of this could mean fewer companies considering developing for Windows at all and the platform taking a decline.
- Lack of access to Windows specific features may lead to apps that don't work as well or show the platform in the best light.

Why they may be a good thing?
- More "official" apps coming to Windows sooner as the process is easier for companies to do so.
- More "official" apps should lead to a stronger platform that attracts more users and could lead to opportunities for other apps.
- They allow companies to not need to build the same thing an extra time. This means they can focus on building better products that work across multiple platforms.

Why don't the matter?
- The Android bridge only works on the "Mobile" version of Windows 10.
- There are still things (features, APIS, etc.) you can only build/access with native Windows technologies.
- The bridges don't let you target everything you can with Microsoft's own technologies.
- The existing skills you already have (I hope) enable you to do more than just build native Windows apps.
- Visual Studio and other development tools from Microsoft are super powerful and can enable you to be more productive building native Windows apps than adjusting existing Objective-C or Java code to run on Windows.

And one final question that I know has come to mind for a lot of independent (hobbyist) Windows Phone developers.

What if you've built a WP version of an app that wasn't on the platform and now may be?
Many developers have seen spaces left by the "app gap" and created their own apps to fill these gaps. This typically means building a version of an app that exists on iOS and/or Android for Windows Phone. I've had a few people ask what these bridges mean for them. Their concern is that the official version of the app may now come to Windows Phone (probably via the Android bridge) and so be competition for their app.
This is a curious situation. Surely if building a 3rd party app because the creators of the app on other platforms haven't built a WP version because they see a lack of opportunity for return on investment, the creator of the 3rd party app is relying on the platform not getting big/popular enough that a first party/official app is released. At the same time they almost certainly want as many users of their app as possible.
If an official app is released and you've built your own version of that app it may not be the end of the world for you. Here's why:
- The launch of the official version could bring a wave of promotion that you could benefit from.
- You already have a user base. Will they automatically leave? If so, then wouldn't you have been vulnerable to another 3rd party app.
- Hopefully your version will be better suited to the Windows Platform and so feel more natural to people familiar with the OS.
- With a native app you can do more platform specific things that an Android app running on Windows can't.
- You can specialize in the features of your app to better serve a niche or certain type of user or certain scenarios. After all, there are many services which provide an official app but for which there are also many successful and popular third party apps that are also for the same service.


Post a Comment

I get a lot of comment spam :( - moderation may take a while.