Introducing Kona Guidance for Windows 8 Application Development (Think of it as Prism for Windows 8, but not really)

I am extremely excited to announce a new project from the smart people at Microsoft’s Patterns & Practices team called Kona.  What is Kona you ask?  Kona is the new developer guidance for developing line of business applications for Windows 8.  Initially this project was called Prism for WinRT, but as it turns out, it’s really not Prism running on Windows 8, but rather a new set of guidance for developing Windows 8 applications.

Wait… just... a... minute Brian.  What do you mean it’s not “Prism” running on Windows 8?  What do you mean “new guidance”?  Well, if you download Kona and expect to start adding regions and modules like you’re used to, then you might get a bit frustrated looking for the attached properties and IModule interface.  Why?  Well, because it’s not there!  Actually there is a lot of Prism code that you are used to having that is not there and will not be there.  Why do you ask?  The answer is simple; it’s Windows 8.  Huh!?  It’s a new platform, and it has changed significantly compared to WPF and Silverlight.  When they were looking at doing the “port” of Prism, they soon realized that a lot of capabilities just didn’t make sense to bring over to the new platform.  Hence, a new set of guidance using a new set of APIs that are specific to the new Windows 8 platform.

Now not everything was ditched.  Some things, not a lot, made sense to bring over.  DelegateCommand and DelegateCommand<T> is still there.  Guidance on MVVM (Model-View-ViewModel) is still there, but honestly I don’t agree with the implementation.  Keep in mind, this is the first initial drop of Kona, so we can always make improvements to the code base.  Everything is a learning experience.

So what’s this reference implementation application I am talking about?  It’s the application that you get when you download the source code.  It’s an “ecommerce” application complete with product catalog and shopping cart.  This type of application is a great scenario to demonstrate how to implement Windows 8 features, traditional line of business requirements, and typical development patterns and practices.  So what exactly will this reference implementation be concentrating on?  The following lists are what we think will make the initial release.  Anything below the “-----------“ line indicates items that will not be included.

Windows Features
  • Device sensors such as Camera and GPS
  • Application lifecycle: Suspend, Terminate, and Resume
  • Snapping
  • Live Tiles
  • Search
  • Navigation
  • Settings
  • ------------------------------------
  • Share
Line of Business
  • Local data management
  • Usually connected scenarios
  • Interacting with Services
  • Validation
  • -----------------------------------
  • Deployment – side loading
  • Security – AuthN and AuthZ
Patterns and Practices
  • MVVM and unit testing (I really hope we actually use MVVM and not MV)
  • UI Composition (through ViewModel composition)
  • Delegate commands (also known as RelayCommand)
  • ---------------------------
  • Loose coupling pub/sub (you know this as event aggregator)
  • Modular development and team independence

Here are a couple of screenshots of the reference implementation.  Keep in mind, these were taken before the release on CodePlex and might have changed and will continue to change as we receive feedback from the community.

Product Catalog Hub


Product Detail


Shopping Cart


So Brian, you keep mentioning this CodePlex site, so where in the hell is the link already!? 

It’s right here:

Hey Brian, can you come to my user group and show us this new Kona guidance for developing Windows 8 applications?  Of course I can!  Just request me at your user group by leaving your feedback in the comments below, by contacting me, or messaging me on twitter.

Comments  (1 )

Blaine Wastell - patterns & practices client architecture guidance
on Tue, Feb 5 2013 12:10 PM

For those of you interested in creating line of business Windows Store apps, you should check out the