The Web Application Framework

For me, it was nice to see that Windows 8 WinRT host Web technologies in a native application framework. In some ways, Microsoft is basically embedding a Web Application Framework in the OS without embedding a browser in the OS.

I've always been conflicted about Web Browsers. They are a great universal platform for delivering a variety of interactivity across devices. But, they present at least two major problems for me:

  • Browsing/paging is in their genes. Great for some purposes, not so great for your typical desktop-like application.
  • The browser has become this application framework within an OS that already has an application framework.

One can rethink desktop application experiences to include the notion of back/foward/refresh, so this isn't the end of the world. In some ways, it's just about how you think about the parts that make up the overall interactivity and how those parts work with the prevailing interactive model.

It's really the second one that bothers me. Windows and every other OS gives people the ability to launch, manage, and navigate among interactive experiences via windows. The browser also provides a way to launch and navigate among interactive experiences via tabs. And since so many applications are moving toward Web technologies, we now have one framework for some applications and another sub-framework for others. I, personally, have longed for a universal application platform that just sits in the OS. I launch Gmail the same way I launch Photoshop. I navigate between Web and local application experiences fluidly. I manage all my interactive experiences in a similar console, even if I'm dealing with them in different ways... you know... removing a Bookmark/Favorite is different than uninstalling a native application. Or is it? Maybe to the end user, Remove is just Remove... and what happens to remove that is handled by the OS. Hmmm.

Anyway, let me complete a thought on navigating/managing applications. The Windows Taskbar is really just a "tabbed" navigation control. Move that bad boy to the top of the screen and make the items look more tabby, and bam!... tabbed experience. Point is, we don't need a browser to elegantly launch and navigate among all of our running applications (Web or otherwise).

Actually, as the word "launch" came off my keyboard, I realized that the browser does two things that Windows and native OS application frameworks do not:

  • Allows one to "address" an application starting point
  • On-demand installation/update

I guess we can say that Web applications have this "address-and-install" behavior. It's that zero-footprint notion... even though there is no such thing (hey, you installed a friggin' browser after all). Anyway, the actual experience of getting, installing, and running an application has been nicely packaged up into the idea of an "address." When I go to, I'm getting a full application (HTML/CSS/JavaScript) pushed down or pulled out of the cache. By addressing a location I've installed/updated and run the application I want. One simple, friendly action (typing in a URL) and I'm good to go.

You know what, all applications should be addressable. So, if I want to run Photoshop, I type and Photoshop sends a mime-type that Windows or any OS recognizes. Instead of getting HTML/CSS/Javascript, I get native code. If this is the first time, it installs... if I'm coming back it grabs it from the disk. Importantly, it feels no different experience-wise than hitting I'm "addressing" the location that holds the interactive context I want. While the underlying activity (installing native code versus grabbing javascript files, for instance) is different, the user doesn't care. Well, getting native application will take longer, but that can be managed.

I like it. Needs more thought though.

Okay... let's see if I can make that massive digression tie back in... Windows 8 hosting Web Applications and native applications in a common experience is good. Windows 8 changing application launching to application "addressing" and providing a unified way to invoke both Web applications and native applications would be luscious.