MSFT is about to rolling out the gorgeous WP81 update - the biggest and the most important upgrade in the history. And that is a nightmare for most app developers like me

First of all, for those who are having trouble with the title of this post, please kindly click here for translation. I just couldn't find a better title than that and it's time for you guys to learn some Chinese, LOL

When I upgraded from WP7 to WP7.8, I don't have too much trouble and of course less excitement - it was nothing but adding a socket (to some extend:). When it came to WP7 to WP8, I was excited because C++ is available and the app finally support audio. I have done a lot of coding at that upgrade but mostly about new functionalities - I don't have to rewrite everything.

Now, things are getting more complicated and it looks like there isn't much benefit I could have (neither the app user). There are 2 options to upgrade the development from WP8 to WP8.1, let's start with a nice comparison: http://msdn.microsoft.com/library/windows/apps/dn655121(v=vs.105).aspx

There are actually 3 options in above article but option 1 (not upgrading) is out of the table as we want to move on and believe me that's the last option MSFT ever want (they put huge money on the new WP81 but telling you to hold off, no way!). For the other 2 options let's read a discussion I found here: http://social.msdn.microsoft.com/Forums/windowsapps/en-US/bf855b7f-d7ca-4b73-964f-22ac77f7d4c4/benefits-of-windows-runtime-over-silverlight-in-wp81?forum=wpdevelop

To simply put, there are 2 different WP8.1 in terms of development framework, one is Silverlight 8.1 (SL8.1) while another is Windows Runtime (WinRT, aka Universal app). The latter one is the same framework when you develop a Win8.1 store app for Windows tablets and/or W8.1 desktop (Metro). Although MSFT claims that they are equivalent about everything, the truth is that WinRT (universal app) is being seriously promoted right now while SL8.1 in my opinion is something intermediate during the transition (remember WP7.8 before WP8, sound familiar?).

If I predict above correctly, RT is the future for app development (phone and tablet) on Microsoft's platform, therefore in long term I would like my development to be on that. However, it really means to rewrite the whole app again - not everything, but still a lot including the UI. And it becomes more trouble if your projects have reference to 3rd party libraries (which is very common for even a small project) - they need to upgrade to support that as well.

When I say "including the UI", I mean:

This only apply to WP8 -> WinRT upgrade path

XAML is not reusable, because the UI framework are different between WP8 and WinRT, you may consider things are being rewritten/re-design in WinRT.

There are a lot of UI controls available in wp8 have gone or being replaced. such as LongListSelector (replaced by GridView or ListView or maybe something else), <controls:Pivot> becomes just <Pivot>, etc

If you are porting your WP8.1 app from a Win8.1 app, and if you use lib like WinRT XAML Toolkit, you need to find alternative or wait for future update from the component developer because currently doesn't support WP8.1 just yet

If you are upgrading from a WP8 app, and if you use lib like Coding4Fun toolkit, similar to above, you have to find alternative or wait for update because current version doesn't support WP8.1

Don't forget doing so much will not bring any improvement or new feature to your users, instead, it's very likely to cause some bugs as the changes are about everything: UI, API, etc

So what if we go with SL8.1 as MSDN suggests just some changes? It's much less painful (above item 5 is also applicable though) but keep in mind that WP8.1 is new, you might still have a lot of users on the old platform and so you need to maintain development on 2 platforms (if you care those users). As a result, you will have to clone a new set of projects (including the UI project) from your WP8 solution (you will need linked files); and re-target the new projects to WP8.1. After that, any change, especially on the UI, you are likely to code twice. This kind of maintenance will last for a while base on my experience, until WP8 is completely or almost fading out.

I haven't completely decided yet how to upgrade my development for my app, for now, I would rather just sit tight and watch