Ranting and raving about anything I feel like complaining about.

Win8, Metro Apps and Silverlight

metrotablet

I decided at Build to try and not answer the question I was getting all the time:

So, what do you think this means for Silverlight?

I wanted to take time and not just spurt out my gut reactions. I wanted a thoughtful response to my week at BUILD. I’ve been watching videos, playing with the tablet and trying out the WinRT SDK and think it is time for me to chime in. Let’s take this step by step.

Windows 8

I, like every other BUILD attendee, lined up and got my Windows 8 tablet to experience what Microsoft is going to have for tablets. I’ve spent the better part of several days with the operating system (yeah, it’s preview – that’s code for pre-beta, very early). For a product this early in its development cycle, I am duly impressed. I have nits, but overall the Metro experience is very good if not great. I love showing the device off and showing two apps on the screen at once and the live tiles. The search and share experiences are great too. I can’t wait to see what this looks like once we have more apps…real apps.

The touch experience is very good (but not perfect). I find the navigating apps a little more trouble than I’d like it to be and icon placement isn’t perfect. But those are nits really. The keyboards work mostly, though I’d love to see more use of context specific keyboards (e.g. InputScope people).

The bifurcation of the OS into desktop and Metro feels odd though. I was ecstatic to hear Microsoft clarify that the tablets will be Metro-only (or at least no x86 apps will run on it). I know this is a limitation for some power users, but this will make the tablets great devices for real-people (not us). That’s how we win…getting consumers to buy devices. I am not sure I won’t turn off Metro on my laptops/desktops, or at least keep it on a second monitor.

Some of my favorite parts of Win8 so far are (in no particular order):

  • Picture Passwords (though not available for domain-connected machines)
  • Contracts (WP7 needs these)
  • Selection via Touch is Natural
  • Sharing Two Apps on Screen at Once
  • Windows Live Integration (including syncing of settings)
  • Allow Adding Custom Apps to Lock Screen

Overall, the end-user story for Windows 8 is really good. Lots of great improvements, first class touch and it’s fast. My only hesitation is that until we see Win8/Metro on ARM tablets, I won’t be completely convinced that Microsoft has a real competitor for iPad.  It has to be fast and have great apps (I know, that’s our job).

WinRT and the New Development Environment

There was some confusion about what WinRT exactly was after the keynotes. Some said it was simply the new Win32; some said it was the new .NET. It’s actually a little old and a little new. You can see how it fits into the ecosystem from a slide I saw at build:

apps

This slide implies a lot of things. First, for desktop applications, nothing really changes (yeah, that’s a big deal…later in this post I’ll say more about that). The true value in what Microsoft is doing is creating a new, object-oriented version of Win32 called the Windows Runtime (or WinRT for short). In WinRT, DirectX is used to draw the entire user interface and handle all the input so the APIs aren’t mapped back to Win32. This is awesome in that the performance of applications is greatly helped by this. No more GDI to hold us back.

The other (perhaps more important) part of what this slide implies is that everyone is on an equal footing for WinRT. Managed code, C++ and JavaScript can all use the WinRT to equal effectiveness. All developers are on an equal footing. Should you be learning JavaScript or C++ to use WinRT? Nope. You bring your own skills to the table and can equally be successful. Like CSS and the DOM but haven’t touched XAML? That’s fine. This allows developers to focusing on creating great apps and not worry about language or design tooling as much. This is a great idea.

Metro or Desktop Apps?

Along with Windows 8 comes these Metro Style Apps that you can build. If you’ve seen the Metro UI for Windows 8, you know that it is similar to a mobile platform in that you have the ability to create rich, touch based interfaces. Metro apps have the notion of multiple views (rotation, docked, full screen, etc.) as well as live tiles and contracts to create an ecosystem of apps that work together.

But what if you’re an enterprise application developer that creates complex, data entry applications – should you be creating Metro apps? Yes and no. Sinofsky made a point of showing PhotoShop as a good example of a desktop application that shouldn’t be a Metro application. Microsoft calls these Metro Apps and Desktop Apps. Desktop Apps are what we’ve always created.

So in my mind Metro doesn’t change much of this. When you need a big, data-driven enterprise application, existing tooling (Silverlight, .NET, etc.) work great. This story hasn’t changed. But you may also be building Metro Apps. You could imagine that many types of applications like dashboards or communication tools work better as Metro Apps.

In my mind, Metro apps are for a different experience. In fact, they are for a different experience many of us have already experienced: mobile apps. Yes, Metro Apps are for a great Tablet/Phone-like experience that we’ve already grown to love. For me, Metro is all about the tablet experience – and the tablet experience is a follow-on to the phone experience. As we’ve seen in the Apple space, a good phone app doesn’t make a good iPad app. This is true for Metro as well. Porting a simple Windows Phone or iPhone app to Metro isn’t going to be a great app unless you take advantage of the extra real-estate and the fact that many users can use two hands. It’s important to build apps for Metro but they’ll likely be adjunct to your existing applications.

As we move forward I think most shops will stop seeing the Application they build – but instead a corral of applications that you build. This is another place in that ecosystem. You will still build desktop applications, but will likely need web sites, phone apps and tablet apps to compliment them.

So What about Silverlight?

In the silence before BUILD, many people were ready to kill off Silverlight and maybe even .NET development as well. Oddly, the people that talked about the death of Silverlight the most were it’s most vocal proponents. The reality is that Win8 doesn’t change much for desktop applications. Silverlight, WPF, WinForms, VB, etc.  are all fine. For the typical enterprise application that is being writing in a XAML-based UI, just keep doing what you’re doing. Sure, Microsoft hasn’t said anything about Silverlight 6, but Silverlight 5 isn’t out yet so that’s no surprise. So no more panicking, ok?

For me the most interesting point is that if you’re building (or are about to build) a XAML-based desktop application (e.g. Silverlight or WPF), these skills are immediately applicable to the future. XAML and its data binding stack are the real magic of Silverlight to me and that’s not going away. WinRT is just another runtime. In fact, you’re probably already doing this. If you do Silverlight (Desktop or Windows Phone), you are already running on a different BCL (Base Class Library of .NET):

silos

For managed languages, WinRT is just another stack. The XAML stack (like in Silverlight) is in an unmanaged layer below .NET and it’s another incarnation of the BCL, but with the same CLR. That means that your XAML and .NET skills apply. Sure, you’ll have to learn the differences between WPF’s, Silverlight and WinRT’s XAML stack but the basics are all the same. This is the opposite of what the naysayers were worried about. Wahoo.

Ok, a caveat. On Windows 8, there are two browsers: Desktop and Metro. They are both based on the same IE10 and JavaScript engines but run in different security contexts. On the Desktop (only available on Intel machines like laptops and desktops), the browser is IE10 and works the same way you’d expect. Flash and Silverlight haven’t changed. But in Metro (and on ARM devices), Silverlight and Flash aren’t going to be there. There are no plugins in the security model on Metro’s version of IE10. None. Period. This likely means you’ll need to write a Metro version of your app for the mobile story. But this is just like Windows Phone. It’s just another platform. If you need a Silverlight app, you’ll not only want to create one for Metro but it’s likely designed for a different interaction: touch all the time. Many of the lessons from Windows Phone can be drawn here. Touch centric, on-screen keyboards, save data often, no traditional close buttons, etc. It’s a different and better model for mobile.

“Should I Use Silverlight or Today?”

While I am not a completely unbiased observer, I don’t think much has changed for Silverlight. If you’re building Silverlight desktop/browser-based applications today, you should just continue on. If you’re thinking of building a desktop application that has to work on PC’s and Mac’s, Silverlight is still a compelling story. Nothing we heard solves the iPad/iPhone compatibility and I don’t expect this to change. We’re moving towards fewer plugins on other platforms. But any investments you make today in Silverlight can be brought forward to Metro’s XAML support in the future.

But what if you need cross-device compatibility (e.g. Win8, Android, iOS)? There isn’t a perfect story here. Frameworks like jQuery mobile or PhoneGap are attempting to address these, but I don’t think we’re quite there. But I don’t think they need to be. I still think building Obj-C apps for iOS, building HTML5 apps for the web, building Java apps for Android and building XAML-based apps for SL/WPF/Metro is where most organizations should be at. But that’s only for cases where you are going for full reach of users (e.g. consumer). In those cases, making your application work as fully like the underlying operating system is crucial. For enterprise applications, going web-based for a central experience on all devices might be fine. It’s a fine line to walk.

While I am not talking about it yet, I am in the same conundrum. I am building a product that has to reach onto every kind of device including a desktop application. I could have chosen to build one, but instead we’re building them all. As you might have heard me say before, I think the future platform is all of them. Trying to build one app to cover everyone is a losing cause. Build different UI’s and use the same back-end for all of them is how I am approaching it.

What about the Silverlight Tour?

As many of you know, I’ve spent the better part of the last five years teaching my Silverlight Tour workshop in the U.S. (as well as my partners who teach in the rest of North America, Latin America, Australia and Europe). In the short-term nothing changes. The course will be focused on building line-of-business applications using Silverlight. As Win8 approaches, I’ll be making more announcements about whether we’ll be adapting it for Metro/XAML courses as well as a Metro/JS course or two. We’re still determining the right thing to do.

UPDATE: Forgot to mention my great Latin American partner.

UPDATE: Added Link to Microsoft’s confirmation of no x86.

 
 

Comments

Gravatar Shawn,

I agree, I got many Silverlight projects going and they will all go into production, But I am also looking to apply my skills to WinRT.

I started to port some code and I cannot find the Rx Extensions, are they part of WinRT?

Steve
Gravatar Don't know yet...haven't seen it but it might be hiding.
Gravatar Great summary!!! I just wish Microsoft would have put as much thought into their delivery of the what about Silverlight question as you did.
My plan is to continue with SL and WPF and the XAML for Windows. I do however plan to spread my wings a bit. Summarized my thoughts last night in this blog... Microsoft Windows 8 METRO and BUILD- The Good, Bad, Ugly, and WWTD
http://realworldsa.blogspot.com/2011/09/microsoft-windows-8-metro-and-build.html

I am a XAML lover, but Microsoft has really damaged any chance of it being used in most enterprises. I do think Microsoft shot themselves in the foot and killed Silverlight Politically:
http://realworldsa.blogspot.com/2011/09/political-side-of-silverlights-death.html
I do not like METRO for the enterprise, but am hopeful by the time it gets to the enterprise it will be a little more realistic:
http://realworldsa.blogspot.com/2011/09/metro-microsofts-embarrassing-try.html
Gravatar "Metro Apps are for a great tablet/phone-like experience"
Totally agree and I think this has nothing to do in a classic desktop PC with a mouse and a keyboard.
My biggest question concerns the compatibility with Windows Phone and there wasn't any response in the Build Event. Will Metro Apps run on Windows Phone 8 ? Or Windows Phone 7 apps will work on Windows 8 one day ? Apparently not and it's a pity (but I hope I am wrong). The development of an application for the tablet or the phone should be the same thing. I hope Microsoft will do something towards this and I am surprised that no one talks about this problem with Windows Phone.

Cordially,
Kakone.
Gravatar Kakone,

Win8 is a year away and Windows Phone 8 is about that far too. I suspect you'll see some synergy but I think it was *exactly* the right thing to do to not mention it at BUILD. BUILD was about Windows apps, not the phone.

Just my take.
Gravatar In a sense, you're right but as there were some rumors before the event on the compatiblity with Windows Phone 7 applications, I was surprised that this was not mentioned during the event. The universe of tablets and phones are so close, a note on what they are thinking about it would not hurt. I hope to see some synergy in a near future to simplify the development on these platforms because the Metro experience is great for tablets and phones.
Gravatar I agree with you, but only to some extent.

I do agree that we should continue our current projects, both in Silverlight and WPF.

I don't agree with you when you say Metro is for Tablet apps, and business and productivity software should target the traditional desktop. In my (modest) opinion, this sums up most of waht is wrong with ms developers, me being one of them. We tend to keep on doing the same old things, and very seldom try to reimagine our apps. I think we should take this oportunity to rethink the way we build apps.

Regarding the phone, can we please have WinRT in there, please??
Gravatar Well, I'm not saying the sky is falling. I just want Microsoft to come out and say if they plan to continue to invest in Silverlight as a dual-platform (Win Desktop + OS X) solution or not. It's post BUILD, and everything is still not clear (despite being told things would be made clear at BUILD). We shouldn't have to divine the tea leaves on this question, IMO.
Gravatar Pedro,

What do you think WinRT does for the phone?
Gravatar Ambrose,

I agree...I think the cross platform story is a big deal - but with the amount of SL5 that is breaking that cross-platform ideals, I think we might have an idea how important it is for MS.
Gravatar Just wanted to thank you for sharing your insight on this issue. I've not really spent much time with SL but wanted to get a SL dev's (or at least someone that's had more time with it than me) perspective. Very good overview of where things stand.
Gravatar All you are saying is that Bob Muglia (an Ex-Microsoft employee) was right when he said that people should abandon Silverlight and stick with JavaScript and HTML as IOs- programmers do. Too bad you cannot admit it given what Muglia went through.
Gravatar I loved your line "InputScope people". Maybe some link love will get the ball rolling.

http://msdn.microsoft.com/en-us/library/hh393998(v=VS.92).aspx
Gravatar Well, you gave it the old college try, but the bottom line is that this whole thing is a mess.

Therefore your advice is all you can give. Keep doing what you're doing, and support your customers.

What you didn't mention is that this could happen again with any notice or warning. That means that we should look for other options, ideally as open as possible.

Finally, if you're honest, and you may not be able to be on the record, Microsoft has never treated its developers this way in the past.

It's obviously a new day in Redmond, and we need to recognize it, and know that this is business, not personal. Prepare to be able to move off the MS stack, but support it where possible.

Good Luck!
Gravatar Phil,

I am not sure I can concur. Bob's trouble wasn't telling the truth, it was his timing and lack of details. But I understand your position.
Gravatar Fallon,

While it's true that Microsoft has stumbled in its story and treatment of the SL community, this isn't new. And I still firmly believe that MS treats their dev's better than Apple treats theirs. I could go all open source stack and have considered it, but I feel like I am still more productive with MS than with other tech currently. Part of that is familiarity and part of that is tooling.
Gravatar Well, I have to totally agree, Apple is the worst on the planet, and I'm speaking as a Mac developer back in the IIsi days.

I'm not saying I have the total answer, and it's surely not all open source, Microsoft is still the best tooling company in software history.

I just feel that there will be a price to be paid for this. Maybe not today or tomorrow, but sometime in the future unless there is a management change and a clear apology.

I can't wait for either, so I'm on board for supporting Win8(which I LOVE so far). I'm just keeping my eyes open a lot more than I used to.
Gravatar Hi Shawn,
thanks for your post. Very informative. I have a question: I don't won't to sound like I am trying to start a fight but where did you hear "Microsoft clarify that the tablets will be Metro-only"? I was at Build too and I never heard such thing and I can only find information that talks about offering a "dual" experience, with Metro being the default in tablets (the lockdown might be in ARM only tablets according to some articles I read).

Also, they talked about the ability to run Flash and SL *outside* the metro IE (when you switch to desktop mode, like we do with the Samsungs we got): this seems to only add to the dual nature of what tables will get...

I am really interested in seeing more info on this "lock down" on x86 because that would be a total bummer...

Thanks
Gravatar Alessandro,

Microsoft clarified the metro only story yesterday...not at build. I don't remember the link offhand.
Gravatar I've also become somewhat wary with MS.
They still have the best tools but that's not all that's necessary for a good dev experience. You need some stability and vendor support as well, after seeing how badly this situation was handled, my trust is not exactly at an all time high.

And while Apple does not exactly have a record of great dev support, they've got two things going for them:
- Their dev story has been relatively consistent for the last 10 years or so (Obj-C + Cocoa)
- They've continuelly grown their market share and gained momentum which helped keep their devs happy by creating new opportunities

For me, the best way to go seems to be to go open source for the core projects (in order to avoid problems with vendor direction), use Html as primary UI and add write shallow UIs for things like Metro / iOS / Android as needed.

That way,
- your core app is uninfluenced from corporate shifts like the one that's currently happening,
- you only expose your dedicated device UI's to the OS vendors' whims,
- you can deliver shiny apps if needed
- and you can use cheaper Linux servers
Gravatar rantanplan,

You had me until you said "cheapter Linux Servers". The fact is that the cost of servers/OSs pales in comparison to the cost of writing the software that goes on them. Comparing cost here is out of context IMO.
Gravatar Will you still recommend using Silverlight if (or, in my opinion, rather when) it turns out there will be no Silverlight 6?
Gravatar Karoly,

I recommend XAML - whether that be Silverlight or WinRT, I still think it's a great way to build UI applications. Silverlight, WPF and WinRT all continue the tradition of XAML. That's the power for me, not the runtime.
Gravatar "You had me until you said "cheapter Linux Servers". The fact is that the cost of servers/OSs pales in comparison to the cost of writing the software that goes on them. Comparing cost here is out of context IMO."

I dunno, being able to run on Linux is certainly not #1 on my priorities list (that would be being a little more independent of sudden strategic shifts of a single vendor aka not having the rug pulled form under you).
But it certainly is a nice additional benefit.
Gravatar Oh man, that's TOTALLY bad news...
I and lots of the people I talked to see the tablet+PC the iPad killer idea (why bother with two devices when I can have one and I can do work and fun things on it and it's a lightweight device) but if that's the case I don't see this becoming a real alternative to an iPad or Droid tables. Am I the only one in here thinking this?
Opinions Shawn? (and BTW I am the guy that stopped you close to the main entrance and had a problem remembering names <G>) :)
Thanks again!
Gravatar Alessandro,

I see both. Win8 on laptops with touch for that experience, but tablets for just touch. I don't see some odd hybrid that no one wants IMO.
Gravatar Thanks for the link at the top (just saw you updated the post)!
Yet by reading that article they seem to stress the **ARM** tablet not being able to run old apps and that is totally understandable. I was referring to stuff like what we got at Build (and to me that is not an oddity at all): that is a tablet (granted x86) :) and runs Skype and other apps fine now (tried <G>). If they remove that ability many will be forced to look at HTML5 (which I hate compared to XAML)
Gravatar Alessandro,

They aren't removing the ability from x86 processors, just ARM. But I expect 99.5% of all tablets to be ARM, not x86.
Gravatar Allright! Tears gone <G>
This gives people options and makes sense. I wish people would make the distinction clear on the web. 2 lines of tables (cheap-ARM , more-expensive-x86-with-all) are brilliant. Back to my Metro tests with a happy face <G>
Gravatar I have to agree with Alessandro's earlier comments. There was no clarity on the point re: ARM being metro only made at BUILD. I'm not convinced this is the current standpoint either. Reading the msft comments it still seems to refer to x86 and I haven't seen an explicit comment that says ARM devices will not be able to switch to the classic desktop mode. If anyone has that link I'd appreciate it.

Now assuming that's the case, I'm sorry but that's suicide in the tablet market. All things being equal (price/weight/power) compared to an Ipad, why would I buy a windows tablet when compared against an existing device with an established eco system of apps to do practically everything I could possibly want do. Microsoft's ace in the hole was the backwards compat and ability to switch to desktop (and run flash/silverlight/etc). This was going to be THE only compute device a household would need. I can only see this going two ways :

1) Intel are unable to make any inroads in the power consumption race leaving ARM as the only viable tablet cpu of choice. Users have no reason to by a windows tablet over current offerings and win8 tablets fail at the first hurdle.

2) Intel are able to seriously compete on power consumption (they're certainly talking a good game) and intel based tablets with full x86 compatibility are the only device of choice for win8 when compared to ARM. This then begs the question why did msft bother with ARM support in the first place.

Only case I can make for the latter is that a future iteration of winphone will be running Win8/WinRT/etc... When mentioning this topic at build, a number of msft guys had wry smiles on their faces so who knows...
Gravatar Thankfully, it looks like this isn't the case (ARM tablets WILL run the classic desktop)!

http://www.zdnet.com/blog/microsoft/microsoft-desktop-apps-will-run-on-windows-8-on-arm/10756?tag=mantle_skin;content

http://thisismynext.com/2011/09/14/nvidia-kal-el-windows-8-tablet-hands-on/
Gravatar Faz, since I started this mess on this forum I think I need to comment on your latest post "Thankfully, it looks like this isn't the case (ARM tablets WILL run the classic desktop)!". I did not get this at all while at Build and certainly not from all other articles I read around. What I think is that there's a lot of imprecise information going around or , at least, not enough differentiation between x86 tablets and ARM tablets...

I believe x86 support will be similar to what we got on the Samsung tablets we received and have zero faith (because it would be pointless ***and*** a waste of time) they will make old stuff work on ARM.

If MS prices ARM processors significantly below iPads and Droids for just ARM solutions BUT gives dual desktop+tablet experience to people willing to pay more (me!), they have the wild card that could win the game. If not, they have no space in the game at all (I'd definitely go Droid).

Them guys ain't stupid. They could not have missed this :)
Gravatar You should correct your post where you state that "tablets will be metro only". They just won't run x86 apps, they can run apps that have been compiled to run on ARM.

I like the hybrid nature, take a tablet, dock it for work, write code with keyboard/monitor - then come home, and use it like I'd use an iPad. That all assumes companies will be releasing ARM versions of their software - ie. I mention Visual Studio, etc... I would assume they would in order to reach the audiences they will want to reach.

I think it will be confusing for the regular customer though - they won't understand all this, and then wonder why their favorite app doesn't run when they get home with their shiny new ARM tablet - meanwhile their neighbor will be telling them how great their tablet is that runs all his apps - because he got an intel version. I see disaster for the 'everyday user' in this area.

I also think Intel will up their ante here - this is a war cry for them.
Gravatar hey Alessandro, see the links I posted clarifying that classic desktop will be available on ARM. Obviously there's still the question of which apps will be recompiled for ARM but the fact that desktop is available means there's still an opportunity here.
Gravatar Yes, even their clarification needs clarification, lol! MS is saying this: only native x86 desktop apps are unsupported on ARM hardware. Some desktop apps written using .Net technologies (assuming they don't P/Invoke into native code that hasn't been ported to ARM), and any native desktop apps recompiled for ARM, will continue to run.

Also, various Microsoft employees at Build have candidly mentioned Desktop apps for ARM, in the context of discussions on system resources and tuning. The message I got was that on ARM machines desktop apps and background services/processes would probably be more limited. So, for example, on a tablet device, if you don't have the Desktop app open, any desktop apps you have running would probably be suspended and paged out of memory until you go back to the desktop app, so that the full system could be used for your active metro app. The x86 version actually does this too (watch the task manager when you switch into metro apps. Sometimes the desktop apps are listed as "Suspended". Happens more often if you run win8 in a virtual machine for which you give it less than 1GB of RAM in my tests), but for ARM devices it will be more heavy handed about giving the active metro app full access to RAM and CPU resources, whereas on more powerful x86 hardware it will be more lenient.

Keep in mind, most applications for windows today don't actually consume that much CPU or RAM. Heck, I have Visual Studio 11 running on a Windows 8 virtual machine inside VirtualBox and the whole thing is only consuming 78MB of memory and 0-5% of my CPU. So, really, the only real drawback to allowing desktop apps on arm tablets is that most desktop apps aren't designed for touch. 90% of the time it has nothing to do with what effect they have on battery life or CPU resources.
Gravatar Also, just in case you want real proof vs conjecture:
http://www.youtube.com/watch?v=Yw7M4OYgpck
Qualcom video showing an ARM tablet running desktop mode and desktop IE running flash in the browser.
Gravatar On the other side Flash / Flex provides a very compelling cross platform story : http://www.basarat.com/2011/09/developing-android-app-store.html
Gravatar I agree that Silverlight isn't going anywhere soon. There is still no write it once run it anywhere coding stack out there yet. Silverlight offers the best option for PC/Mac/Windows Phone and iOS/Android tools shore up the complete cross-platform experience.

http://www.Windows8DevBlog.com
Gravatar Hi Shawn,
I've requested Contracts on Windows Phone here: http://bit.ly/r3bYxI if you care to add your vote.

regards
JT
Gravatar as more info from a question last night at the Silverlight Meetup about the Comm stack in WinRT, the following links might add some info.
http://stackoverflow.com/questions/7465517/how-can-a-metro-app-in-windows-8-communicate-with-a-backend-desktop-app-on-the-sa
and
http://social.msdn.microsoft.com/Forums/en-US/winappswithnativecode/thread/895cf468-31e0-4e2f-aab1-ae90933610d1

Seems localhost IPC is frowned upon greatly.

pmont
Gravatar It's interesting, how Nokia will accept the Microsoft move form Silverlight to HTML5, when just now switched to Silverlight and rely on it as their future platform.

Add a Comment

*
*
*