X
Tech

What's it like building apps for Windows 8? Developers speak out

Some developers already have begun building Metro-style apps for Windows 8. Here's what they're experiencing so far.
Written by Mary Jo Foley, Senior Contributing Editor

Even though Microsoft released the Developer Preview of Windows 8 back in September 2011, I haven't found many coders already building apps for the coming platform.

But there are some out there. And a number of them participated in Microsoft's First Apps contest, announced back in December. The contest is designed to boost the number of Metro-style apps that will be available in the Windows 8 app store, an early version of which will be "turned on" in February when the Windows 8 beta is released. (Microsoft also is using its annual Imagine Cup student contest to encourage more Windows 8 app development.)

As Microsoft announced last year, those First Apps contestants who made it into the second round of the competition are getting a special "confidential" build of Windows 8 to allow them to fine-tune their apps. The contestants who have received this build are under nondisclosure agreements preventing them from sharing more about it.

I solicited feedback from a few of those who built Windows 8 Metro-style apps for the contest. I asked them all the same few questions and decided to leave this in interview form since they had so many good details to share about what's working and what isn't, at this point. A few common themes emerged: More documentation is badly needed. Silverlight and Windows Presentation Foundation (WPF) developers may have an adjustment curve -- and may find themselves missing some of the good old features they've come to know and love. And WinRT, the new Windows runtime at the heart of Windows 8, is a mixed bag for those who've cut their teeth in the Win32/.Net worlds.

Without further ado, here's what these devs had to say about their early experiences writing for Windows 8:

Tim Greenfield Software developer at Vertigo Software PuzzleTouch Jigsaw Puzzles (this app is a finalist in the Microsoft contest) http://programmerpayback.com Have you ever developed an app for Windows or Windows Phone before?

For Windows Phone, I’ve built three apps: (1 game, 1 “entertainment” app, and 1 LoB app). At Vertigo Software, we helped build some of the first Windows Phone apps so I’m very familiar with the platform. Besides building apps, I am also the technical lead for the Microsoft Media Platform Player Framework open source project which includes a version for the Windows Phone. Although the majority of my career has been building Windows apps (both commercial and line-of-business), I actually haven’t worked on many “Windows” apps in the last few years and have primarily been developing web based apps using Silverlight, HTML and JavaScript.

What kind of Win 8 app did you create? Do you consider this just a sample app, or something you might ultimately sell/give away for free?

My Windows 8 app is a jigsaw puzzle game called PuzzleTouch. It has extremely realistic puzzle pieces, supports multi-touch, and lets users play dozens of diverse jigsaw puzzles of different difficulties. It also allows the user to create their own puzzles from existing photos or camera. One of the biggest challenges I am currently facing is choosing the right business model. There are a number of strategies to generate revenue for apps and I am still considering what the best fit is for PuzzleTouch and which approach will prove to be the most successful on the platform. I can look to other platforms like the iPad for hints but Windows 8 is a unique platform with a unique marketplace and unique users. What tools did you use to build this app and why?

PuzzleTouch is written in Xaml and C#. This route was an obvious choice for two reasons: 1) I personally prefer C# & Xaml over js & HTML and 2) PuzzleTouch is based on the award winning Silverlight web site and Windows Phone app which took over three years to create and refine. Because Xaml and C# is so similar on Windows 8 to Silverlight for the phone and web, this gave me more than just a head start: it was practically already written.

What was the hardest part of building this app? Was there enough tooling/documentation?

The tooling and platform available today is a developer preview version that I’m guessing was created long before it was made available last September. Needless to say, there are many of bugs in the platform and my app required a lot of hacks to make it work. Overall, the app took me approximately 2 solid weeks to port and I spent about a third of that time hunting down obscure problems that do not exist in Silverlight for the web or phone. That said, I fully expect the platform and tools to improve dramatically with the next release.

Because the platform is so new, another difficulty others may encounter is that there has not been enough time for the community to blaze many trails. Open source projects and blog posts for the platform are just starting to appear, but for the immediate future developers need to rely on those created for derivative technologies like Silverlight and .NET or HTML and JavaScript.

If there’s a silver lining, it is that the Windows team is doing an amazing job fielding questions on the Metro developer forums.  Engineers from Microsoft are out there in force helping developers and frankly, it’s the next best thing to being able to send a personal email to the engineers themselves. After building this app, what’s your opinion of WinRT and how it will help/hurt developers trying to create Win 8 apps?

So far, I’d say my impression of WinRT is mixed but overall positive. From a C#/Xaml point of view, it is Silverlight v.Almost. The developer preview version is still missing some important features that we’ve enjoyed in Silverlight and WPF for a while now and without any transparency on what future versions will bring, we can only hope the gap will close soon.

On the other hand, there are many new platform features and respective APIs that will make it kindergarten simple to do complex tasks like support touch, mouse, keyboard, and pen with – in some cases – no additional effort. The Windows team also did a great job adding and exposing native OS features like “contracts” which essentially allow others apps to become features of your app.

But the thing I am the most excited about is the business opportunity. The app store offers an easy way to gain visibility, charge money, and create a user base and most developers won’t have to learn a new language to participate. This isn’t just Microsoft’s version of the iPad, it is also the next version of Windows; so the market potential is huge.

Anything else you’d add about your Win 8 app building experiences?

Even though I built PuzzleTouch in C# and Xaml, I am also working on another project using HTML5 and Javascript. The thing that impressed me the most was how well Microsoft put JavaScript developers on equal footing. While C++ is still king in Windows 8, JavaScript (and C#) are definitely first class citizens.

However, I do have concerns about the pace of innovation we might expect to see. First, web technologies like Silverlight and Flash have enjoyed high paced innovation because they are independent frameworks neither tethered to an OS or browser release cycle nor subject to committee approval and widespread implementation. Second, even though Microsoft has done a stellar job rebuilding the Windows runtime to support three unique app development models; technical reasons could easily throttle advances in one because it is not realistic to support in another.

Beau Gunderson Read it Later (http://www.readitlaterlist.com/) http://github.com/beaugunderson

Have you ever developed an app for Windows or Windows Phone before?

Yes, I've been a Windows developer for a long time. I started out with a copy of Visual Basic 4.0 a friend's dad who worked at Microsoft gave me when I was in middle school. I've written desktop apps (none of which are commercial) and have worked freelance on some ASP.NET web applications. Most of the Windows applications I've written are available on Github: https://github.com/beaugunderson What kind of Win 8 app did you create? Do you consider this just a sample app, or something you might ultimately sell/give away for free?

It's a reading application based on Read it Later (http://www.readitlaterlist.com/). I bought a Samsung Series 7 slate knowing that I would put Windows 8 on it and use it for development, but right now I find Windows tablets much less useful than an iPad.  There are great Instapaper and Read it Later apps for the iPad and I wanted to have something like that on my slate.

What tools did you use to build this app and why?

I used Visual Studio 11 Developer Preview (it had more features than the Express version provided with Windows 8). I also used the VsVim extension because I can't live without my vim keybindings. :) http://visualstudiogallery.msdn.microsoft.com/59ca71b3-a4a3-46ca-8fe1-0e90e3f79329

What was the hardest part of building this app? Was there enough tooling/documentation?

The documentation is lacking currently. Some things are only documented for one language--things that are documented for the JavaScript API may not be documented for C# and vice versa.

Here's the list of problems I had from my forum post: http://social.msdn.microsoft.com/Forums/en-US/windowsdeveloperpreviewgeneral/thread/bf31f74f-7a50-46bc-b2fa-df537040bbe6 - No library support (was planning on using RestSharp and Newtonsoft.Json but ended up rolling my own REST classes and using the built-in Json support) - The ObservableCollection vs. ObservableVector thing - The lack of .FindResource for finding controls within templates - The lack of an IndexedDB equivalent for C# (I ended up storing .json files in the local app files folder) - The inability of WebView to open local files, and its lack of a bindable property to set the HTML content (vs. the NavigateToString method), and the fact that you can't derive from it to provide that property yourself

After building this app, what’s your opinion of WinRT and how it will help/hurt developers trying to create Win 8 apps?

I think Microsoft is shooting themselves in the foot by intentionally crippling the WebView control.

My motivation for entering the contest was to secure access to the next build of Windows 8--I wanted to see if some of the things missing in the current build had made it in (like a FlowDocument or a RichTextBox).

Anything else you’d add about your Win 8 app building experiences?

Things mostly worked, and it was fun to learn about the new platform. It was a huge pain in the ... to work around the missing functionality and the things that were there but didn't work.

More Windows 8 developers speak out on the next page

Andy Beaulieu Physamajig (this app is a finalist in the Microsoft Windows 8 First Apps contest) www.andybeaulieu.com

Have you ever developed an app for Windows or Windows Phone before?

I have developed several game and entertainment apps for Windows Phone 7 including “Boss Launch 2”, “Bouncy McFuzzin”, and “Talking Ragdoll”. I am active in the developer community and have published libraries to help with physics games and simulations under WP7, Silverlight and now Metro. I also speak at developer groups on various technologies and have earned a Silverlight MVP award.

What kind of Win 8 app did you create? Do you consider this just a sample app, or something you might ultimately sell/give away for free?

I created a fun creativity app called “Physamajig” which lets you create and share animations using 2D physics. It’s probably best to watch a demo rather than try to explain it. Physamajig will likely be an ad-supported free app.

What tools did you use to build this app and why?

I used Visual Studio 11 as the dev tool, and chose C# as the language and XAML as the UI technology… because I am very well versed in Silverlight and these technologies allowed me to quickly become productive creating Metro apps.

What was the hardest part of building this app? Was there enough tooling/documentation?

Much of the code I used for my Windows 8 app I was able to port over from Silverlight and WP7 projects I had done in the past. However, there are lots of breaking changes and missing functionality in WinRT when compared to Silverlight 5.

After building this app, what’s your opinion of WinRT and how it will help/hurt developers trying to create Win 8 apps?

WinRT was a bit of a jaw-dropper for many developers, given that .NET Technologies have been Microsoft’s focus for the past 10+ years. Unfortunately poor messaging and an information blackout did not help matters. But the big takeaways from WinRT will be a fresh start for Microsoft platform development, focused on performance, security, and faster integration of the latest technologies – all while leveraging the skills that developers already have today.

Anything else you’d add about your Win 8 app building experiences?

If you are a Silverlight developer, you will quickly miss many of the Silverlight goodies that are missing in WinRT such as the DrawingSurface and 3D support added in Silverlight 5. Here’s hoping that some of these missing items return in future releases!

Patrick Godwin Student at the University of Michigan Networked paint application http://ximplosionx.com

Have you ever developed an app for Windows or Windows Phone before?

I’ve developed some small IT/Business apps on Windows, primarily through the use of C#/.NET. I handled some work with Infor Visual ERP, among other things. I’ve also dabbled in some work on Windows Phone 7, mainly working with XNA game development. What kind of Win 8 app did you create? Do you consider this just a sample app, or something you might ultimately sell/give away for free?

I built a HTML5/Javascript App. The app itself was a networked paint application where users could doodle on a sort of whiteboard, all in real time. I’m currently weighing my options, and am considering pursuing the app further, both on Windows 8 and Windows Phone 7.

What tools did you use to build this app and why?

To build the app client I simply used Visual Studio Express for Windows Developer Preview. For the backend server code, I worked in Node.js on Ubuntu, building and deploying the prototype to Nodester.

What was the hardest part of building this app? Was there enough tooling/documentation?

The hardest part of building the app was trying to get certain APIs to function properly. The current build is very much a developer preview, as the exception messages are either very vague or nonexistent when working with certain features. I enjoyed being able to dabble with the tooling and other new features on Win8, but over all I felt the lack of solid documentation really slowed me down. The tools, as far as I can see, are very robust and great. They just need to improve documentation during the beta. The giant Metro Style App sample pack was able to provide a lot of help, but you ended up having to dig through it to find the bits you need. After building this app, what’s your opinion of WinRT and how it will help/hurt developers trying to create Win 8 apps?

After working with WinRT for the better part of a month, I feel that it is a step in the right direction for app developers. Current Win32 Developers will have to change the way they build their systems to accommodate the new patterns of WinRT, including Async. A lot of what developers got away with in Win32 won’t fly in WinRT, as the certification requirements will likely be very strict. New developers, particularly those who have picked up .NET or WP7 in the last year or two, should be able to dive right in and feel comfortable. A lot of the concepts learned in WPF and WP7 seem to be very relevant still. And XAML developers should feel right at home in the C# tooling.

Anything else you’d add about your Win 8 app building experiences?

My initial impression of the tools was quite positive. It’s a great time to get involved with WinRT, as the platform is still in its infancy, and will need a lot of developer support to build even more robust tools. I’d like to see some more buzz within the .NET/Windows Developer community about the new tools, as I think that will be the best way to bring people to the platform. It’s part of the reason WP7 was able to get 50,000 apps in a little over a year. So I ask developers to get involved, write blog posts, go to user groups. Get excited about WinRT.

Any other readers out there been tinkering with building Windows 8 apps yet? If so, what's working and not for you?

Editorial standards