Four Days With Microsoft
And Windows 8
Last week I was in Seattle for a meeting with Microsoft about Windows 8. I felt like I was the only “non-hardcore” Windows developer at this meeting. I met with some of the Win 8 evangelist team, engineers and other attendees. Here are my thoughts about Windows 8 and its appeal to developers looking to make apps for it as well as some of the challenges the new platform faces.
Win 8
The new build of Win 8 is more complete than the developer preview. It’s an interesting concept, but I still find it incredibly clunky to move between the touch-centric Metro apps and the legacy Win 7 desktop experience. Microsoft needs to do a lot of work to make this seamless. Perhaps the most appealing part of the two environments is that you can have an iPad tablet-like experience on the go then dock it for a full Windows experience. During the event, I did all my coding and testing on the device. I think this is great as long as MS can sort out the problems switching between the different experiences.
Perhaps the most jarring part of the entire experience is the way that legacy Windows apps are contained inside of what would seem like a single Metro app, which you access via the desktop tile. So if you have Metro apps open and legacy Windows apps open, it becomes difficult to move between them quickly. There is a new dock that previews open apps on the left of the screen that sort of helps, but I found pulling it up difficult. I think over time these issues will be worked out but, in the end, having desktop support is simply a stopgap until more developers create Metro apps and the desktop eventually goes away. At least that is my take on it. I actually don’t have any idea what Microsoft’s goal is with Win 8 and future builds.
HTML5
Microsoft is betting on HTML5 in a big way. You can build three types of Metro apps: C++, C# and JS/HTML. I honestly couldn’t tell the difference in terms of performance from JS/HTML apps and C# ones. I got to meet with the head of the compositor team who is in charge of rasterizing HTML and rendering it via the GPU. Internet Explorer 10 has full hardware acceleration, and this also translates into HTML Metro apps. For this reason, HTML5 apps are first-class citizens on the OS, and I would tell anyone who is interested in making apps for the platform to build them with JS/HTML and not bother with C++ or C#. I love C#, but what is the point if you can take advantage of HTML and JS, which are more portable? You can even write wrappers for C++ and access them via JS through WinJS (the Win 8 JS layer that runs HTML Metro apps).
WinJS
While I was impressed with building Metro apps, I was not very happy that in order to get the best experience from your JavaScript app you need to build on top of their WinJS and IE10-specific HTML tags. MS keeps talking about how they are fully supporting Web standards, but every code example I’ve seen from animation to touch events requires -ms prefix selectors, which force you to use their version of the standard. Even worse is that WinJS only works on Windows, so you are locked into their platform. While I was able to get one of my HTML5 games up and running as a Metro app in less than 10 minutes, I needed to go through and rewrite parts of the underlying JS to run better on their platform. I feel like MS missed a huge opportunity to build a new rich Web UI framework that could have replaced Silverlight/Flex but chose instead to force developers to build apps for their OS and not the Web.
Potential
I see a lot of potential in building Win 8 HTML Metro apps since my primary type of development is Web-based. Especially now as companies transition out of Flex and go deeper into writing HTML5 Web/mobile apps, all the skills, people and development practices required to build these new apps will help position them well for this kind of work in Win 8. This is good because most companies won’t have to hire specialized developers to build Metro apps. I am confident that building HTML5 Metro apps will be straightforward and that any competent JS developer would be able to optimize the app to run on WinJS if this is a port for existing Web sites/apps. The way I see JS/HTML Metro apps is like PhoneGap on steroids. So, theoretically, clients who are already heavily investing in HTML5 could quickly port their Web apps over to the Win 8 platform and use Metro’s components/controls to modify the views to fit within the Metro style.
Long Term
Microsoft is betting on the fact that its Windows 7 user base is going to upgrade to this new OS. Even if they do, there is a huge disconnect between running Win 8 on a touch screen versus a desktop. That being said, people do buy new computers, so there will be a faster adoption rate than with their phones (which had most people locked into two-year contracts when they came out). If MS can get people to buy these new Win 8 devices, and the ARM-based tablets have enough power to be usable, then this will become a viable platform. The biggest hurdle in my mind is going to be finding the right price point. Basically, Win 8 tablets need to sit in the $200-$500 range, and there is no clear indicator if that will be possible. Also, MS is not very upfront about what classic mode apps will be supported on ARM. I am not convinced that it’s going to be as easy as recompiling an existing Win 32 app and it will work. ARM devices may have to rely heavily on Metro apps getting out of the gate until older software is updated and optimized for ARM, or those vendors simply decide to move over to Metro (which is probably the smartest move at this point).
Hardware
The other thing working against Microsoft is hardware. Apple excels in the phone, tablet and computer space since they control “the entire widgets” and limit the choices consumers have to deal with. Microsoft is at the mercy of their hardware partners to come up with innovative devices to show off the OS. I don’t think consumers are going to find it easy to pick the right Win 8 device. Do they want a laptop, a desktop or a tablet? If they get a desktop should they get a touch screen? What is the performance difference between ARM and Intel/AMD? I guess Windows users are used to this, but I think that radically changing the entire OS to be touch first focused while the majority of the existing hardware out there isn’t that way is problematic. The hardware is going to need to be up to the task to deliver the best experience possible. I also don’t think I need to elaborate on the fact that Apple is just moving so quickly now in the hardware space, just check out the new iPad, and most companies will have difficulty catching up. The new iPad already highlights the lower resolutions these unreleased Win 8 devices will have. It will be interesting to see how quickly Microsoft can adapt.
Conclusion
I spent some time going through Windows Phone 7 and doing development on it when it was announced. I loved the platform, the tools, the language and even the submission processes, but none of that helped make people buy the phones. It wasn’t until Nokia got involved that sales started picking up because they make really good hardware. I think Win 8 is going to live or die by its hardware. Granted, phones are a totally different beast, especially since most people get locked into a contract for two years. With Win 8, most people have Windows and can buy a new computer as needed, so the barrier or entry is much lower.
For developers who are currently doing HTML5 development, such as apps or games, it’s a no-brainer to make a Metro app. I do agree with the Microsoft evangelists when they say to simply sell your app to 1% of the existing Windows market and you will make a lot of money. I plan on releasing any app I would put on the Web or in the Chrome Market on Win 8, and I suggest that at the very least you do the same. Download the consumer preview and the tools and give it a try; I think you will be very impressed by how well HTML5 is integrated into the OS.