One of the sessions I attended today at MIX11 was one on Flickr API on Windows Phone 7. Even though not a lot was said about the implementation itself, I got to learn some interesting things about the API and how the app building process was organized at Flickr.
First and foremost, Flickr used the same public API for its app, as other developers. There are no additional features that are not otherwise available to public. All components used in the app are written in-house and no third-party libraries were using, according to Markus Spiering, Head of Product at Flickr. I was curious whether the engineers at Flickr decided to go the fast way and use already available libraries to add social capabilities to the Flickr for Windows Phone 7 app. Apparently not - all API implementations were developed at Flickr and the only part that required some help was Facebook integration.
The app itself was developed in such a way that it integrates nicely with the Windows Phone 7 Metro UI. It uses the Pivot control to switch between content panels and generally has a similar look and feel as native WP7 apps. Markus mentioned that it wasn't hard to write an application for Windows Phone 7 because they already had managed implementations for the API (libraries for .NET were available for quite a while).
We talked about general performance issues and how the guys at Flickr managed possible bottlenecks. Two important conclusions were reached after the discussion (considering the testing details that were shared with the attendees). First of all, a phone's web performance should never be tested relatively to a WiFi network. An app can behave in a completely different manner when it is connected to a data network, where data transfer is much slower. Second - do not try to capture large chunks of data at once. One big problem with the initial Flickr app was the fact that all user-related data was downloaded at once and the UI was pretty much frozen and unresponsive due to massive data transfer operations. Lazy loading is the solution here - only download data per user request. Also, caching is a good idea for specific large data types (e.g. photos).
Although the presented information was quite generalized, it might be extremely useful for developers who plan to write apps that will be used by thousands of users.
If you would like to see some pictures from this session, head over to my Flickr set.
For more information on the Flickr API (and the developer program), go to the official Flickr API documentation page.
You can download the Flickr app for Windows Phone 7 here.