We’re getting close to being done with the OS portion of the development cycle for our upcoming Windows Phone release, codenamed ‘Mango!’ ‘Mango’ comes with significant new functionality for developers. This evolution of the application platform means that there are some cases in which existing APIs do not operate in the same way.
Microsoft is a developer focused company; we have a strong tradition around the concept of application compatibility. We put a large amount of effort into ensuring that all existing WP 7 applications and games run as expected on ‘Mango.’ That’s not to say the transition will always be entirely seamless, though. There are certain classes of issues that are not easily susceptible to a platform level fix. There may be other edge cases that we did not catch in our compatibility testing.
Thus it is important that developers who have published applications in Windows Phone 7.0 test those applications in Windows Phone Mango.
We’ve made this easy. You can download the latest tools for Windows Phone Mango here, and if you are a Marketplace registered developer, you will have received an invitation to update your personal retail device with a pre-release build of Windows Phone ‘Mango,’ (more info here).
We will be documenting all of the key API and platform changes in depth on the MSDN Library, (Windows Phone and Silverlight for Windows Phone sections). The Silverlight team is also posting today about application compatibility, here. I’d like to emphasize the following three key points:
Memory usage. We have a certification requirement that states that your app must not consume more than 90 MB of RAM, on devices that have 256 MB of RAM or less, (Sec. 5.2.5, available here). We have seen cases where people are checking on the amount of total RAM, and using memory in a wildly unrestricted way if the number is > 256.
In ‘Mango,’ the memory profile of the device will be augmented by changes in (a) how we tombstone, and (b) the enablement of background agents. It’s important that your memory usage be thoughtful and judicious. Our new graphical profiler is perfect for helping you accomplish this.
Web Browser Control. Developers love our Web Browser Control; our static analysis suggests that > 60% of our developers are using the Web Browser Control in their Windows Phone apps as a display layer at some point.
In Windows Phone Mango, we are shifting from IE7 to IE9. This impacts the core HTML, JS, and CSS handling across the entire OS. It will also impact you in the usage of the Web Browser Control. We’ve seen some applications experience difficulty in situations where assumptions were made about the order in which events get fired.
Silverlight Listbox and WebClient Controls. Both Listbox and WebClient have been reworked and enhanced in Mango to drastically improve the developer and end user experience associated with these controls. The Silverlight Performance team has written eloquently about these changes on their blog here, (ListBox) and here, (WebClient), and these changes have impacts on existing apps. If you’ve used these classes, please check out these articles for more information.
We put this basic list together to help you spot some of the top application compatibility issues you might face. There is a lot more to optimizing for ‘Mango’. We’ve published quite a few resources already to help you get started; in the coming weeks we’ll be providing you even more specific guidance on how to add ‘Mango’ pixie dust to your apps.
Larry Lieberman, Product Manager
Windows Phone Application Platform
* ‘… but were afraid to ask’