If ever there was a blog post that ensures I will not be awarded the Microsoft MVP award again, this is the one. Not that I care…
Windows 8 was announced and distributed as a developer preview back in September of 2011. There was a short burst of excitement in the blogosphere about WinRT, which is the supposed replacement for the Win32 platform.
That fizzled out pretty quickly.
Recently Microsoft released the Windows 8 consumer preview. The most notable responses to this have been an overwhelming dislike for the new look and feel of Visual Studio, and a series of criticisms of Windows 8 for its usability by the average PC user (such as this video).
That hasn’t fizzled out yet.
Even firmly entrenched Microsoft developers, such as many of us in the XAML Disciples (formerly known as the WPF Disciples), have expressed a lack of interest in learning WinRT. See this Disciples thread which veered away from its original topic (an announcement of some WinRT feature) into a series of thought-provoking explanations of why people are not bothering to get into WinRT. The general consensus on that thread is that if you lack confidence in the prospects of Windows 8 and, by extension WinRT, why bother learning it? Why not spend your time and energy learning more successful and in-demand technologies, whose futures look bright and promising?
I am not saying that Windows 8 will fail spectacularly, nor am I saying it won’t. All that I can say with certainty is that the .NET developer community is decidedly not flocking to it, and that should be very concerning for Microsoft.
I think that WPF is the safest bet these days for Windows desktop developers. I can’t see enterprise software leaving the Windows desktop any time soon, and I certainly can’t see it migrating en masse to Metro for the PC. I think that we will start seeing more and more enterprise software being written for tablets, in particular the iPad.
If you have a compelling argument that proves me wrong, I’m all ears (well, all eyes, since this is a blog…).
I have been messing with WinRT a bit. It is massively unfinished and unpolished, which is somewhat to be expected from a beta/preview/whatever they call it. But more disheartening to me is that it just feels like another attempt at Silverlight. It is a doppleganger to WPF written by people that do NOT like .Net and did not understand what makes WPF so great. Many of their classes and whatnot just “feel” like what they are: a COM layer over some C++ code written by people that have been writing C++ for a long, long time. This makes it harder for .Net people to just jump in.
They have reinvented every wheel and those new wheels are not nearly as round as the old ones. A quick example is yet ANOTHER Xml DOM. But it is the worst yet. You cannot even get a debug string of the contents! You can sorta write it out to a file, but that is far more complicated in WinRT than just giving it a filename.
As for Metro apps, they are terrible on desktops/laptops. It is awkward to switch around between apps, the snapping thing is mostly useless, they only work on a single monitor, etc. The success of the Metro side rides completely on the new crop of tablets. But if there are no apps, the tablets wont sell well, and vise versa.
I wish they had never done Silverlight and spent all that time making WPF shine. (Sometimes it seems like they have never fixed any bugs in WFP, but I digress.) Now they are stuck w/ 2 “old” techs that have not been invested in and 1 new one that worse than either of the 2 that are outdated.
Thanks. It seems the decision for windows business app developers is between WPF (and some winforms) and html5/aspMvc/jquery (I mean the genuine, non-“native,” non-metro kind). (Silverlight doesn’t make sense to me now, without the assured MS backing or platform reach that was to be the reason for tolerating its limitations over desktop apps). Have you formed a definite judgment about that yet, or where should we look for a good statement of the considerations. (I can google and find a million things said, but one or two good pieces would be far more valuable.) I’m looking at it from the point of view of a one-man shop with moderate size apps, wondering just how painful it is to do rapid design of data-intensive apps with html5. of course I’m sure wpf is a dream compared to html but one could tolerate some (modest) pain for the assured future and universal backing and platform width of html5.
Well, WinRT will fizzle out if tablets are not up to par with iPad. And they will not be since this stuff (WinRT) is heavier, it will eat more memory and processor time thus tablets will be either slower at same price or same speed as iPad at higher price. Its no brainer, iPad has all momentum why get weaker or more expensive Windows 8 tablet? Heck Samsung Slate running Windows 8 is $1000 and still not equal to iPad 3…
I disagree about WPF. WPF is slow and for business apps has no advantages of WinForms. WinForms is the safe bet on Windows platform current and going forward. Its true and tested platform with huge number of tested and good controls available for any task you want. Developers actually still flock to WinForms NOT WPF.
@Brad Buhrkuhl – Interesting feedback, thanks.
@techvslife – I can’t point you to good advice on which tech to use. Maybe another reader will have good tips for you.
@David S. – I suspect you’re right about iPad’s head start being insurmountable. Interesting that you advocate WinForms over WPF. I definitely think WinForms is a good, solid platform and wouldn’t suggest someone not use it.
I’ve been playing with the consumer preview for a few weeks and with my PC-user hat on, I actually quite like it. I like the live tiles, which are undoubtedly superior to current desktop icons and/or the start menu. And the metro / desktop dualism hasn’t been a problem for me and doesn’t feel disjointed as some people opine. You can have links to your desktop apps in your metro menu…
I agree that enterprise / lob developers won’t be very excited by metro, but then you still have the desktop mode so who cares.
For my next pet project, I am planning to convert a chess variant game I wrote in Silverlight to a metro HTML5 / JS. With the view of also porting it to a website. The ideal of developing / designing once and running as a windows app or a web app is quite interesting and if it comes off easily then I think that is a winner. If it works out, there is no doubt it will be a better choice than Silverlight.
So, for me, xaml on WinRT = dud. Html5 / Js on WinRT has potential but the jury is out until I see how truly portable the app / designs etc will be.
I’m creating apps with user base in tens of thousands using XAML (WPF and WP7) and expect to be even more successful in WinRT. Starting with CP, it became pretty good.
I think that if you’re good as a developer, you can choose any platform and be successful – but then, why choose something that keeps you from reaching 100% productivity?
@Sergey Aldoukhov – Why do you think that you will be more successful with WinRT? What do you mean by ‘success’ in this context?
I see WinRT and metro apps as sort of just another option for windows developement, rather than a black and white choice… I think there are whole classes of applications where metro style apps are just not appropriate … e.g. multiple windows open at once, tasks running in the background.
The launch of the new Windows store, which supports metro apps might give developers a bit more incentive to develop games and suchlike apps for it, similar to what you see on the iPad etc, but as with iOS/Android the platform probably won’t be taken up that quicky for corporate/business applications.
On the WinForms vs WPF debate – WPF has the advantage that skills learned in XAML can be used with the new metro apps.
I’m not pressuring you, but one of these days, I’d really like to know the “inside story” on what happened between WinDiv and DevDiv. When it’s safe to do so.
I too have read the rumors and innuendo… but as a distinct outsider, its hard to make anything sensible out of it.
I’m writing this from my iPad, as I consider purchasing a Mac Mini to do ObjC (gag…), paid for by my day job doing .NET and some WPF. Maybe I will even look into MonoTouch, notwithstanding recent admonitions about going native.
Success is creating a product that people need (and buy). The formula is simple – you need to be above the competition by providing the best experience. Performance is a big part of the experience – and WinRT performance is better that one of WPF.
@dodgy_coder – True, desktop and Metro apps are not mutually exclusive options. But what are the incentives for building business apps for Metro on a PC? What are the distinct benefits and advantages of taking that route for LOB apps? The fact that Metro exists on the PC seems irrelevant for business users.
I agree that doing a serious app (eg lob / enterprise) in HTML5 / JS would be a big step backwards (and dare I say a bad idea).
But for a consumer style app, which is mostly about the UI with only a moderate amount of data / logic / workflow, then I’m not sure it is such a step backwards. And even if there is a moderate amount of data / logic / workflow, that could/should be handled by services and not the UI, I can still write my services / workflows in C# / .NET with a thin UI layer.
Josh, Metro is the only way to get a “normal” touch interface in Windows.
@keith montgomery – I have no idea what the inside story is, to be honest. I’ve heard plenty of rumors, but I’m not a blue badge, so I can only speculate. No need to gag over Obj-C…it’s quite pleasant to work with once you get accustomed to it! 🙂
@Sergey Aldoukhov – I guess for people building software products, instead of people writing software for some business, the consumer angle of Win8 might have more relevance. I wasn’t really thinking along those lines, since I’m not working on any consumer-oriented software. Thanks for sharing your thoughts.
@Sergey Aldoukhov – I don’t think that many information workers have touch screens on their desk at the office. The touch capabilities of Win8, in my mind, are more relevant for tablets. So I wouldn’t build LOB software using Metro on the PC because it supports touch.
I was thinking LOB’s will be 50% on tablets in 5 years…
Hi Josh and thanks for your post.
Anyway, I dislike Apples product with passion.
I’ve had an iPhone for about half a year, now I dumped it for the sake of my Android. Although the Android comes with less features in-the-box, it’s potential is zillion times bigger. The last bullet the knocked away the iphone from my pocked was itunes. itunes is just like a virus. its a tremendous limit, i came to a friend to copy files and had a hard time getting itunes (he didnt have conn), after stuggling with it for years and finally installing it, and waiting for the library to import files for another century, it didnt want to copy the files to my ipod, since its efin synced to my account which is not the local offline account, i was like WTF ^%^, another issue is being arrogant not letting ppl put flash on, unless u jailbreak. this is crap. gimme a break.
Anyway as per msft, i do agree their doing terrible mistakes, when changing options (as making VS black/white), lets say its professional and nicer and all that bs, what if me poor little grain of sand dont seem to like it, now u didnt gimme an option to go back to the primitive color-icons i got used to. same with win8, and btw, just to let u know, i didnt use either, just following the news.
So if they wanna get back on track, they have to
1) make sure silverlight/WPF stays on top of all the new languages + making it certain and easy to bridge over to new languages.
2) whatever feature u add that eliminates an old “primitive” feature, give the granny users an opt-out button.
Unfortunately, I do agree with u that MSFT is makin horrible mistakes and their gonna lose me (i mean, im sure more ppl feel just like what i feel), and thank you for your great blog!!!
My take; Microsoft may be thinking long term, for a change. Windows 8 is to Win7 user as Vista was to XP, a stepping stone. You don’t like WIn8 for desktop? Stick with Win7, and wait for Win9.
On the other hand your last paragraphs contradicts itself;
“I can’t see enterprise software leaving the Windows desktop any time soon, and I certainly can’t see it migrating en masse to the Metro desktop interface. I think that we will start seeing more and more enterprise software being written for tablets”
which is it? Future apps will be tablet, and that is who windows 8 is for. Don’t want to gear up for the future? No problem although I think its a risky path. Enterprises have plenty of time to slowly migrate (if at all) – how many of them are still running XP? WPF will continue to work just fine (and blows win32 away). But as more and more clients start asking for mobile platform apps, some people are going to be more prepared than others to deliver them. Which will you pick IOS or WinRT/XAML? Didn’t you just write a story about what you thought of IOS (it didn’t take much reading between the lines)? Its an archaic dinosaur, that unfortunately has mindshare at the moment. I hope forward looking developers change that soon.
Don’t invest in XAML. If you want to write a Metro app, write it in HTML5/JS using as little of the WinRT as possible.
and: there is no innovation on the Desktop. WPF/SL is finished. move on.
I never warmed to HTML5/JS and was utterly outraged when Microsoft started talking about HTML/JS rather than WPF/Silverlight but after studying modern HTML/JS and the integration story with WinRT I have to say that HTML/JS is by far the better choice.
Regarding C#/XAML I agree with Brad Buhrkuhl.
@spiked3 – There’s no contradiction there. I wasn’t taking Metro for the tablet into account in that sentence, only traditional PC desktop vs. Metro for PC. I’ve edited and reworded that bit to make my intention clearer.
Not sure how you interpreted my post about iOS as me saying it’s an “archaic dinosaur” but that was certainly not my intended message. In general, I avoid implying things “between the lines” in my writing, because I believe that clear communication is more valuable. I suppose that won’t stop people from looking for their beliefs in my words, though.
I think the big problem is that there is no one platform for windows. You can use Win32, or MFC, or WinForms, or WPF, or Silverlight, or WinRT. As a developer I don’t know where to invest my time because Microsoft hasn’t made it clear where they want to invest theirs.
@Graeme Hill – Totally agree. That’s been a problem for a lot of people, for a long time.
@josh: regarding your comment about HTML and JS seeming like a major step backwards: I felt the same and was really reluctant to give it a chance. I’m glad I did though as I am very positively surprised by it on a daily basis.
@Patrick Klug – That’s good to know. Would you mind sharing some links to good online resources for people interested in following your path? Thanks!
The reasons I’m attracted to WinRT are …
1. An APP model (AppContainer) that will eventually make things easier (by version 2/3 or WinRT). Much like WP’s app model, i actually believe having a single way to write app’s is a good thing. Gives us more time to concentrate on making our apps shine..
2. WinRT Projections – being able to share UI or Code across HTML/XAML/DirectX , JS/C#/VB.net/Cx
3. DirectX story – wether using Dx in XAML or XAML in Dx the story is much better than what we have today. And Dx11.1s’ new features are pretty awesome.
4. An APP store to distribute our WinRT apps through!
@Jose Fajardo – I agree that WinRT has many cool, interesting technical aspects. But none of them answer the question of “Why will WinRT on the PC be relevant for line-of-business software developers, who are not building consumer-oriented software?”
This is where we fundamentally disagree. I’m in the camp where I believe enterprise software needs to move to a more “consumer oriented” software model ..
From UI all the way to deployment story …
For a decade we tried building our apps using monolithic architectures, complex deployment setups etc …
How did this work out for us ?!
Personal opinion of course …
What will be interesting is will enterprise & business adopt a more “store” driven approach to their apps ? Enterprise dev units may find themselves in a world where business/IT infrastructure dictates how we build/deploy our apps (think System Center’s app deploy approach) …
It’s a new world where apps and there development/deployment/support story will be dictated to by many outside voices …
And to get back to your question …
I believe LOB apps should be very consumer-oriented, or atleast appeal to users as if they were consumer apps.
WinRT for me is headed in the right direction, the only downside is that these apps arnt allowed to run windowed or on the desktop (for technical reasons i guess)
Good post Josh. You are looking at Win8/Metro as a LOB dev, which is fine, but IMO that’s not MS’s biggest concern today.
The devs they need to attract to Win8/Metro (and Win Phone 7/8) are consumer app devs. That is what is driving the iPad/iPhone (maybe 60% games). Gartner expects PC sales to grow worldwide to over 400 million units per year by the end of 2013. I assume most of those boxes will have Win8 on them. The consumer app devs who take a chance on Win8 could reap the potential rewards.
Reminds me of the Warren Buffett quote: “…be fearful when others are greedy and greedy when others are fearful…”.
@Vic – You just neatly summarized one of the lessons I’ve learned from various comments on this post. Thanks for that.
This is real simple from my perspective.
First I agree with Jose, it’s time to move LOB apps to touch, and business users will be demanding the more modern UI’s, dragging you there kicking and screaming from what it sounds.
Of course the commnity is pissed! I was up in arms about Silverlight, but guess what? That train has left the station, and Metro XAML/C# really is Silverlight, just different. Some things better some worse, but overall, it’s a winner, technology wise.
I loved WPF, and still use it, but to do anything real in it, I’ve had to use Winforms and a lot of PInvoke… what a mess, does Microsoft ever finish anything?
However, the real winner is C# and the .Net community. Sure C++ finally got a seat at the table with XAML, but .Net RULES the server, and it’s not going away until MS buys the farm!
Finally, the reason this is all a mute point is this!
If Win8 sells like I know it’s going to, and that selling like crazy, what developer is going to turn his nose up at that market?
If you have any of the skills for Metro, and MS has made that almost a mute point, you will be writing apps to get a piece of the action, and your end users will thank you.
Metro => Cloud => Unified Communications
They’re limping across the finish line, but it’s still a winner!
@Sam covington – We’ll see, maybe you’re right. I don’t share your conviction about the inevitability of Microsoft’s success.
Josh, I did not mean to imply you thought IOS was an archaic dinosaur, those are my thoughts.
But as examples of why I think that;
“ARC is awesome, but I highly suggest that you don’t use it until you can manage memory yourself. In other words, don’t rely on ARC until you understand what it’s doing. There are many reasons for this; one of the most practical of which is the fact that most iOS sample code is pre-ARC.”
No memory management sounds like old DOS C to me.
“Don’t just write apps. Publish them to the App Store. Apple can reject your app, and prevent it from being available in their App Store, for many reasons.”
Imagine if Microsoft had taken that approach. I understand they are now, and I don’t know how it will turn out, but if it had happened in the 80’s we would all still be working on mainframes. Nothing could be more monopolistic and anti-consumer than the approach Apple has taken.
“Visual Studio has way better visual debugging tools than Xcode.” How are the visual Test tools? I don’t know about you, but TDD and debugging are a huge part of how I spend my development time.
“Objective-C is very weird at first. It takes some getting used to. Once you become accustomed to the odd-looking syntax, however, it’s actually rather simple and pleasant to work with. Compared to C# it is much less feature-rich, ”
OK, you eventually say ‘you get used to it’ but you never quite say it is as good as. Sorry if I misinterpreted.
Objective-C, wasn’t that designed pre-Java, pre-c#? Actually wasn’t it even designed for an entirely different platform?
I go back quite a ways, I can write just about anything in assembler given time (which also means given enough money). Just because you can do it, does not mean its the smart way to do it. Right now, IOS sells, so you dont have a choice, but if there is a choice in the next year, which development camp is going to deliver least expensive solutions? Those using a pre-Java language, or those using a post .net language? Visual Studio 11 looked pretty good to me.
OK Windows 8 is really for tablets, desktop apps will likely stick with Windows 7 for as long as possible.
Still, people with with a lot of Windows backend code (and that’s a LOT of people), who want a new tablet front-end will likely go with WinRT.
OK, if you’re starting from scratch with a small app then iOS/Android will seem much more appealling right now (although enough people have put me off Android tools!).
Many said WP7 didn’t have a hope but its getting there slowly. Once there are a few decent, cheap Windows 8 tablets around I suspect WinRT will become a lot more appealling.
MS just needs to stop copying Apple and go for the middle ground between the locked-in iOS and the free-for-all Android.
I partly share your concerns Josh. The near future of Windows 8 WinRT Metro Style Apps is the consumer tablet market. It will take a lot of time until Win8 will have a broad install base on desktops and IMO Metro Style Apps won’t be relevant on non-tablets for a while.
Time is the most critical part here. The competitors are moving very quickly.
MSFT likes to show the marketing slides with the market share of Windows in comparison to other platforms, but those don’t matter much actually. It’s the tablet market which MSFT needs to win in order to succeed with WinRT Metro apps. I think the real Win8 success depends if an OEM can produce a great designed tablet for a competitive price, which means less than an iPad but with similar features. Still the iPad brand is so strong nowadays. When an average consumer talks about a tablet they usually say “iPad”. Or just look at the insane amount of iPad 3s sold in just a few days. Android still fails with tablets. Sure, the Android tablet experience is really crappy, but Android also still lags on the latest high end multi-core phone devices I tried, but nevertheless Android has overtaken iOS’ market share in the phone market.
Don’t get me wrong I still have hope MSFT will have a huge impact and I will invest a lot of time to bring my open source projects and Windows Phone apps over which means a rewrite for many of those in order to get the best performance / UX. The technology is great to deliver amazing consumer applications and I really look forward to finally dig deep into the development soon. I love that I can combine the productivity of C#/XAML with the best performance from C++/ Cx + DirectX for my kind of apps. Fortunately it’s not a big risk for me.
I like the Metro UI and the OS, but my real question marks are if they have a partner which can deliver a great tablet hardware. Otherwise Metro Style Apps won’t probably have such a big market share as marketing wants us to believe for a long time. What do you think?
This chart of activity by tag on stack overflow paints a pretty clear picture
Hello Josh, I don’t see the problem with WinRT for LOB apps.
Our company looks at it as a newer, better Silverlight (sniff). Our current LOB winforms/wpf app has certain off-site use cases that don’t play out well because the CLR’s memory consumption behavior sucks in Citrix/Terminal Server scenarios.
So we’re about to start developing a cool (touch) Metro UI for the off-site scenarios for salespeople users on the road.
This entails some hefty server side development as well but we’re planning to keep that as “open” as possible so we can fan out to other client platforms as well if the need arises (Android, iOS, or even HTML browsers). Still researching what the best choices are on that account. For the time being it looks like we’re going to go the REST(ful) way with the help of new ASP.NET Web API.
Exciting times alright ! 🙂
Its kinda funny how ex-MVPs starting hating over MSFT. Also holds true for ex-Microsofties (*cough*Barnes*cough*).
If you don’t have a interest in WinRT, why do you start bashing it? I mean, if you can make enough money with the Apple Stack, what do you gain from spreading this?
I don’t understand.
I care about WinRT, but I don’t really have time to do any work on it right now. What I like conceptually about it is that it seems to be a development platform without compromises – you get modern tools like XAML without having to load the .NET runtime or being limited to retained-mode-only graphics like WPF. WPF is very cool, but it just isn’t great for certain types of applications (data-driven visualization, for example). The idea of using XAML with native code and DX is intoxicating. I just wish it were available on the desktop side. Microsoft has to catch up in the mobile space, and I think WinRT gives them a chance to do that, but they have a tough road being the third mover behind Apple and Google. And while I know Microsoft needs to focus on mobile, it would really be nice to have *some* statement from them about the future of the desktop side, which currently seems destined for mothballs.
For those saying JS will overtake LOB development using XAML/C#…
Check out JS popularity on TIOBE:
makin’ a move past PERL, you go girl!
For me, windows phone is the proof that Metro works. It’s innovative, works great and makes it’s competition feel outdated. I have no doubt it will work on tablets as well, when looking at de CP. That’s why WinRT will soon matter.
On the other hand: WinRT on the desktop, Metro UI on the desktop… there’s something wrong there with fullscreen apps, touch support, metro style. But the desktop isn’t going anywhere.
Win8 will give MS a good chance in the tablet market, Win7 will work great on the desktop ’till Win9. Now there *will* be an emerging market on the desktop too. Many people buying new pc’s will get Win8 with there new machine, and they *will* click that windows store icon. That a second reason why WinRT will matter. Maybe we should build a WinRT client after all on our next projects? (Not in JS, you silly… 🙂 )
I’ve been excited about WinRT for one reason: it is extremely, extremely difficult to correctly p/Invoke. I actually started writing a book on (non-COM) p/Invoke since the existing resources are insufficient (yes, I’m aware of all the existing books, tools, pinvoke.net, and all that; and they *all* fall way short) – but I halted the manuscript after //BUILD.
I don’t see WinRT as “metro”. I see it as a set of new, object-oriented bindings for Win32 to wrap the existing C API. I’ve heard that WinRT will be available for desktop apps (I haven’t had the time to actually play with it myself yet).
I haven’t heard anything from Microsoft on future WinRT plans, but I believe the best move for them would to take the Win32 portion of WinRT (not the Metro portion) and backport it to Win7/Vista/XP (for desktop apps). If they did this, then I believe existing .NET developers would switch to it; it has the potential to outright replace large portions of the BCL (and it’s better designed than many of the .NET libs).
You did not say it directly but I can guess you just don’t believe in success of Windows 8.
Well, if so, you are definitely not alone. That’s I think the single most important reason people do not jump on the WinRT bandwagon. Let’s face it, we all consider “500 millions of Windows 8 capable devices in world” as an example of wishful thinking to say at least. The story of Windows Phone and leaking specs of possible iPad competitors carrying Windows 8 rather convince us to wait or even look for alternatives.
On the flip side those who start now will probably get a huge advantage if the platform start succeeding.
For myself, I decided to wait but I applaud to people who will go with Windows 8 from the start.
“I definitely think WinForms is a good, solid platform and wouldn’t suggest someone not use it.”
Would you recommend winforms equally for new development, given what we know about the future, or all other things being equal, think wpf should still be preferred. (I suppose it depends on what one thinks about the future of xaml?) thanks.
We’ve been a MS shop for a long time, jumped on WPF+XAML really early (VS2005 beta), invested a lot in the platform. WinRT/Metro/Windows 8 is the least excited we’ve been about a new MS platform, ever.
I agree with Brad Buhrkuhl that WinRT “is massively unfinished and unpolished”, so it’s hard to get excited about writing apps on such an alpha platform whose success in the market is very much unknown.
AFAICT, WPF on the desktop is dead (or on life support). Everyone we knew of on the team has moved to other groups. The “whats new in WPF 4.5” list is a joke.
If someone asks me what to write a new Windows progarm in, I have no idea what to tell them. It’s too difficult to write a “modern” UI in Win32/WinForms, WPF has major memory/perf issues and will probably never be improved, and WinRT is so alpha that I wouldn’t recommend it until we see it finished and getting traction in the market.
Also, they’re telling a bunch of coders (who probably have trouble writing synchronous code correctly) that writing asynchronous code is easy; just sprinkle “await” every where: http://blogs.msdn.com/b/windowsappdev/archive/2012/03/20/keeping-apps-fast-and-fluid-with-asynchrony-in-the-windows-runtime.aspx
This is going to create a nightmarish world of reentrancy problems, but there seems to be absolutely no guidance given about solving that.
I’m stoked about WinRT. I think for the first time in a long time, Windows developers can make money off of consumer software.
And I say that as a former WinForms, then WPF, then Silverlight developer who now makes a living doing web dev.
I am excited about WinRT. I will be writing apps for it, because I just might make some money doing fun consumer software.
René Schulte makes a great point!
Apple didn’t beat everyone with a great OS, what Apple did was crush everyone with great engineering! High powered CPU’s with a low power consumption profile, coupled with multi-touch displays, and finally an OS that took full advantage.
It wasn’t software that won this war, it was hardware! It’s always been hardware, but people tend to forget that once the hardware can be taken for granted.
So in order for MS to get back into the game when they don’t control the hardware like Apple, requires that their partners deliver some VERY low cost devices.
If they can’t do that, then I would suggest that MS put more money towards hardware subsidy, and less towards fancy commercials, lol!
WinRT comes with yet another attempt at hiding COM in the form of a C++ dialect dubbed C++/CX. This is where the story ends for me.
@Sam Covington: it is software and hardware that counts. you think the iPhone would’ve been such a smash hit without the slick, *responsive* and intuitive UI?
I think most of the success of the IPad comes down to marketing. There literally are millions of people out there that will happily buy anything new that Apple releases because of the associated social image. I know this personally because I know many people who have bought the IPad and zero of them actually use it (beyond showing others that they have it) or bought it with any intended use in mind. The only consistant purpose I have seen for the device is to give to kids to play games on…which in my opinion is a waste of $600 when other devices offer this functionality in better form factors for much cheaper.
This isn’t to say that some people don’t actually find it useful, but I’d say the majority of owners (at least the ones I’ve seen) have no real legitimate use.
Reminds me a of a joke.
Q: How do you know someone owns an iPad?
A: They have shown it to you.
Please refrain from posting comments here that don’t add value to the discussion of the thread’s topic.
Well if anyone objects, let me know, but I take it I should pick WPF among all the choices available if I am developing for line-of-business (and data intensive) apps on Windows.
I don’t see clean html5/js/jquery/mvc as working in this scenario well, though I’ve looked at doing it with knockout and kendo also. html/js/mvc is not a rad environment in this case and does not lead to a powerful interface (at least not without an unreasonable amount of work). html5/js for internal lob still seems a lot more needless work to me, a lot harder to debug, a lot more coding, many more disparate tools and languages one has to yoke together, a lot harder to maintain, & so on.
between winforms and wpf, I suppose one should take the one most recently upgraded. don’t need the wpf gui fanciness, but could use fancy databinding, better support, and fewer bugs by now (I hope); I’ll take it easy and not start with mvvm etc., and hope xaml doesn’t give me a headache and the designers and controls have mostly caught up with the relative ease of winforms.
@codevslife my choice for consumer apparently is WPF but for LOB apps I’d recommend u to use either ASP.NETC MCCAIN or if you want a responsive WPF-like application use Silverlight which offers u WCF ROAD generation, a great plus in data apps.
I’ve recently deployed several Silverlight LOB apparently and think it’s the best choice for LOB, WPF however doesn’t have WCF RIA support.
Also remember that you can turn your app into an OOB( out of browser) which then really feels like a consumer app.
Actually i’m using WPF partly to avoid having to go through data services. (In any case, isn’t WCF Data services (odata) in WPF better for working against sql server, at least azure?) I’ve ruled out silverlight because, apart from Microsoft’s deciding to stop development on it, of its restrictions, even in oob in silverlight 5: apart from the requirement to go through wcf data services for data access, there is the limited local file access, and I’m sure I’d find a other annoying or crippling ones. I’ve always found the safest choice for me to be the richest client period.
asp.netc mccain? you mean asp.net mvc with js/jquery? that’s the future, but every time I give it a try it’s too much work for too little compared to native tools and also has poor power/response for my needs. I don’t like mixing disparate, rapidly evolving tools/languages/standards from different vendors/committees together even when I can figure which ones to use together. html5/mvc is just not a rad “drag and drop” tool, at least when I try to use it for lob data apps. maybe in three years it will be. you don’t think html5 is a worse coding experience with much poorer results compared to native for inhouse apps?
WPF in its current form is too fat and slow to run efficiently on ARM processors, period, unless you’re falling back to handwriting procedural animations and image manipulation. Silverlight was a better attempt, still WP7 based apps lag far being the experience you get with native phone apps. The sl toolkit for wp7 helped, scrolling was crap on sl wp7 based apps. The best sl apps still had laggy scrolling, now toolkits and guidance is helping but still no mach for native.
MS is doing a better job providing devs with guidance on building winrt apps. I want to see samples apps with some graphical intensity to be completely convinced. WinRt is going to wp8 and more than likely to Xbox.next, for me the future is native.
Time to dust of my Essential COM book! I wonder if an essential WinRt book is on the way?
Oh C++ how I’ve missed you, wait C++\CX, don’t wanna upset the purists.
@Patrick Klug – It’s obvious that you need both hardware AND software, however, it doesn’t take much thinking to figure out that this isn’t a chicken and egg situation.
Hardware comes FIRST, always did and always will… Apple realized that on day one in their corporate life.
Maybe we should all just stick with WinForms for the simple non GUI extensive apps and DirectX for everything else.
Seems to be the only two technologies that Microsoft has ever really committed to.
But it does leave the development community in a bit of limbo and it makes it very hard to explain and justify to the board the future direction of development especially if you like our company are talking serious financial commitments every time there is a major shift in technology.
Or is it finally time to abandon Microsoft and the Windows platform once and for all and look at something else. Only problem is what!!!
I will wait for Windows 8 release before committing anything to WinRT. But now days I think after learning so many GUI platforms over the years…I guess it is time to shift to some thing else. Something which doesn’t make us better just by learning it quickly and efficiently than the next guy, but which makes us better by getting deeper into by over time. Perhaps the buzz words to today – cloud, big-data?
I am skeptical about WinRT. On one hand, we are getting the long overdue object view of the operating system. . But this gets bundled to Metro, so for those of us writing desktop applications, nothing has changed.
WPF only became usable with .NET4 with the introduction of clear type and layout rounding. However , the animation story still sucks. They should have invested in fixing WPF. Instead, another group of geniuses comes along, declares that the old group of geniuses has been doing it all wrong and proceeds to invent its own thing. As a result we always work with undercooked frameworks.
I’ve been developing on Windows since the 90-ies. Went through every technology: MFC and COM, WinForms , WPF. Worked with abandoned ones (Managed DirectX ) , got excited about stuff that never saw the light of day ( Oslo’s MGrammar) and so on.
I don’t get excited about anything coming from Microsoft anymore. The greatest assets that they have are the languages C# and F# with LINQ and Rx. Fortunately, I can use these on Mono.
We develop desktop applications with WPF, and with some care the performance is fine. I don’t see any viable current alternative to WPF for serious desktop apps. (WinForms just feels retarded and is much deader than WPF.) Moving off .NET is not on the horizon for this decade, at least. We might consider MonoTouch/MonoDroid to support other tablets.
So I agree with Josh – for the moment WinRT is not interesting to us at all. We might move to WinRT one day when Visual Studio has moved, and WinRT has implemented some compatibility with WPF3D (I’m not keen to drop down to DirectX to integrate the 3D modelling bits).
I guess I secretly hope for some WPF perf-and-polish love in future, when the Windows team realises how widely it is used. Otherwise I expect WinRT/XAML to evolve into being highly compatible… one day.
I do quite a bit of COM legacy stuff still, and anyone excited to dust off their Essential COM book needs a big hug (or a straight-jacket).
.NET (and WPF) FTW!
I agree that wpf and probably .net is too heavy for WoA (windows on ARM) if not tablets generally, and in any case MS probably had to embrace and excite by pushing an html5 story. But I think especially since 2010 they have been underestimating the need for loyalty and providing direction to their existing developers. Even with com/vba/vb (in which they did and do provide long and extensive support) they could have done better had they released further updates or improvements, even at a slower schedule, while making it clear it was legacy–and ironically they couldn’t get rid of vba in office and had to return to COM with windows 8. They can’t make money without new stuff, but couldn’t they make a lot of money also including major upgrades of old stuff. Perhaps someone has more insight on the internal stresses at MS. I’m sure they are (despite the constant change) a slower and more bureaucratic company than they used to be. they also have more deadly and successful opponents now, and then still have to deal with hatred or suspicion as “monopolist” rather than cool apple.
If it’s worth investing in W8 as a developer which is related to the question whether W8 will be successful or not, it is in my eyes important to distinguish the developer perception and the consumer perception – what is relevant to whom and how those things might be related.
I believe as some others have pointed out that the success of W8 from a consumer perspective is mostly dependent on hardware – efficient devices for a decent price – that what makes at least MY dad decide. He will buy a preinstalled machine anyway, and I guess like him, most consumers don’t care so much what this “thing” is called – Metro, Classic Desktop or whatever, as long as he is able to “somehow” get to his files, do some work in Office and browse in the internet. As a side note I am convinced that the whole debate on whether the missing start button will make W8 a success or not pointless, since consumers have shown that they are capable of getting used to any other OS even if it never had a Start-Button concept in the first place. Besides the hardware, Apps will be another important success factor of course. Consumers take for granted these days to conveniently buy and install any piece of software from an AppStore. So, from perspective W8 surely has a big opportunity to be successful and therefore it would be worth getting started with WinRT.
The low excitement\ adoption of W8 technologies though on the other side, is not so much related on the perception if W8 is objectively a good operating system or if WinRT is a good technology, but more about the emotions involved with the perceived rollercoaster like strategic shifts from Microsoft up until this point. We are the ones who don’t trust anymore! We are the ones thinking if it makes sense to bet on some other platform. We are the ones, who are fed up with yet another one of MS strategic decisions about technologies which might be abandoned after a short time and the secrecies around it – as if WPF and Silverlight haven’t caused enough confusion and disappointment among developers. We have experienced it so many times with MS now, that we don’t mistaken the advocated “We are giving you even more choices to develop the best experience for your customers bla bla bla” with strategic cluelessness and catastrophic management. I don’t care so less right now even if WinRT would objectively be the most exciting technology ever invented, the same way I would have stopped believing someone who was lying over and over again, even if he has spoken the truth this time.
As I have pointed out, how those different perceptions are related, might be an important factor to watch out. I am convinced that strategic matters of MS won’t affect my dad. But what will effect consumer decisions in the end is when we as developers are so fed up that we don’t write software for the Windows platform anymore.
Metro will fail, miserably, as it is flawed from the ground up. As is Microsoft’s understanding of what the desktop environment IS and will be. They see it as a leash. They dont even realize how misguided their though process is, in continuously treating the desktop experience as a lab experiment. Trying to turn it into something OTHER than a desktop interface. Instead of embracing its actual powers and abilities.
Splinter is going to shape the evolution of the desktop interface for many years. It cannot be ‘overtaken”, it can only be cloned, and they will always be many steps behind, as Splinter is my Theory of Special Relativity. The perfect formula due to its perfect simplicity.
Microsoft’s practices with Metro have angered and disgusted me. they have continuosly, for years, limited end user functionality due to their restrictive way. But they went too far by not only making that leash a choker, with Metro, they have the nerve to restric access to information for the end user, all the while “stealing? by tracking and monitoring every move onn that metro interface, to establish patterns and sell those patterns to advertisers, all the while under the guise of the practices being done “for the benefit of the user”
They can only watch, now, as Splinter uses Windows’ own functionalities in ways that they couldn’t have previously conceived, as it is due to Splinter’s ability to make happen what they have, for so long, try to inhibit, that makes the desktop environment the central location for “everything? that they have always wanted, just by ‘being’ a desktop interface.
And using the utilitarian functionalities, by combining and blending them together, to create the world’s first, truly, imagery based programming language. One that not only uses the imagery to create the software output, but the software that is created, is the imagery used to create it. A “language” that is the only one able to allow average end users, literally the entire user base, to create complex software applications, called splinterfaces, more easily than learning and working in an image editor.
It cannot be denied with facts and reason that Splinter is its own app, an imagery based programming language unlike any before, and one of only a dozen or so ‘major mediums’ in history (the major ones being the ones that not only the transmittal or medium aspect(splinter), but also brought with them an entirely new art form (splinterfaces)
It cannot be denied that Splinter allows for the access of more information, than any other single app, on Earth. It cannot be denied that it allows for the desktop environment to look a near infinite number of ways, “instantly” from within just one splilnterface. It cannot be denied that it is the most utilitarian desktop app on Earth.
AND MOST IMPORTANTLY, IT CANNOT BE DENIED THAT THIS IS ALL POSSIBLE BECAUSE IT DOESNT DO ANYTHING BUT WHAT A DESKTOP INTERFACE IS SUPPOSED TO DO, AND LITERALLY DOES NOT DO ANYTHING “NEW” OR THAT HAS NOT BEEN AVAILABLE WITHIN WINDOWS, FOR YEARS. ALL IT DEOS IS BLEND AND COMBINE THE FIVE MAJOR FUNCTIONALITIES OF A DESKTOP INTERFACE IN MULTIPLE WAYS, COMPLETELY REVOLUTIONING THE UDE AND SHOWING THAT NOT ONLY ARE THERE NO OBSTACLES, IN ANY WAY, IN THE DESKOTP ENVIRONMENT, BUT THAT THEY WERE NEVER REALLY THERE. EVER. THEY WERE SIMPLY FACADES OF BARRIERS BUILT ON MISCONCEPTIONS. IT IS THE MOST CONCEPTUALLY ADVANCED DESKTOP SOFTWARE IN HISTORY. IT IS THE MOST DOMINANT DESKTOP APP, IN EVERY UTILITARIAN FUNCTION, AND NOTHING , ON ANY LEVEL, IN ANY OS, EVEN COMES CLOSE TO IT. SPLINTER IS DESKTOP DOMINANCE. ALL BECAUSE IT DOES THE DESKTOP INTERFACE’S SOLE/PRIMARY ROLE OF ACCESSING/DISSEMINATING/AND INTEGRATING INFORMATION EXPONENTIALLY MORE EFFECTIVELLY AND EFFICIENTLY, THAN THE “NEXT” TEN “BEST” APPS COULD, COMBINED.
sPLINTER ISN’T JUST THE “BEST’ WAY TO MOVE UDE EVOLUTION FORWARD, IT IS THE “RIGHT” WAY, THE ONLY WAY, AS IT IS THE PUREST INTERFACE, WITH THE PUREST INTENTIONS AND ABILITIES. ONLY BY UNDERSTANDING THE DESKTOP ENVIRONMENT AND HOW ICONS, LAUNCHERS, STACKS, WALLPAPER FLIPPERS, AND VISUAL STYLE EDITORS HAVE ALWAYS BEEN ABLE TO BUT HAVE NEVER BEEN COMBINED AND BLENDED, CAN YOU SEE THAT THEY CHANGE THE “MOLECULAR BONDS” THAT CONNECT EACH OTHER, MUTATING THEIR ABILITIES THROUGH NATURAL EVOLUTION, AND TURNING COMPLETELY, 100% PURELY UTILITARIAN FUNCTIONALITIES INTO ENTERTAINMENT , EDUCATIONAL, UNPARALLELED CUSTOMIZABLE, ARTISTICALLY COMPUTATIONAL, AND MORE. MOST WOULD SAY, AFTER SEEING WHAT SPLINTER CAN DO, FOR THE FIRST TIME, A FULL FEATURED MEDIA APPLICATION THAT JUST HAPPENS TO BE ABLE TO BE A DESKTOP INTERFACE. wHEN THE TRUTH IS, ALL THAT IT IS, IS A 100% UTILITARIAN DESKTOP INTERFACE THAT JUST HAPPENS TO HAVE FULL FEATURED MEDIA AND ENTERTAINMENT ABILITIES , ONLY DUE TO ITS UTILITARIAN ABILITES AND BLENDING.
AND THAT IS WHY METRO AND EVERY OTHER CREATION THAT IS INTENDED TO CHANGE THE DESKTOP INTERFACE/ENVIRONMENT AND SHAPE IT TO THE OUTSIDE, HAVE AND ALWAYS WILL, FAIL. IT IS BACKWARDS. THE IDEA IS TO BRING THE ABILITY TO ACCESS THE INFORMATION, LOCALLY AND NATURALLY. JUST ACCESS IT LOCALLY. AS IN ACCESSING THE LINK/THE PORTAL/THE TUNNEL, LOCALLY, AND THEN GO OUT FROM THERE. THEY WERE FOOLS TO TRY TO RUN AWAY FROM THE DESKTOP WALLPAPER, THINKING IT WAS JUST FOR SHOW. NOT REALIZING THAT IT IS ONLY DUE TO THE BLENDING OF THE UTILITARIAN AND ARTISTIC ENTITIES, THAT ACCESS TO AN EXPONENTIAL AMOUNT OF MORE INFORMATION BECOMES POSSIBLE.
AND MOST OF ALL, THEY WERE FOOLS TO DESIGN EVERYTHING TO RESTRICT, IN ONE WAY OR ANOTHER. ENSURING THAT THEY COULDN’T POSSIBLY HAVE THE DESIRED OUTCOME, AS IT IS ONLY THE FREEDOM OF THE FUNCTIONALITIES TO COMBINE, BLEND, ACCESS, THAT IT IS POSSIBLE. IT IS UTTERLY COUNTER INTUITIVE TO PUT RESTRICTIONS TO THE ACCESS OF INFORMATION ON THE THING THAT YOU ARE TRYING TO IMPROVE, WHO’S PRIMARY PORPOSE IS THE ACCESSSING OF INFORMAITON.
AND METRO IS THE ENEMY OF THE END USER AND THAT IS WHY I SEARCHED FOR “WINDOWS 8 METRO” AND CLICKED 3 LINKS, RANDOMLY, LANDING ON YOURS, AND POSTING THIS BLAST. winMatrix forum thread on Splinter has all the information and videos and Splinter download links soyou can see for yourself
I totally agree with bystander. Don’t devote too much to any new framework/technology Microsoft brings. The only way to convince me is for me to see any of those UI technologies being used in developing Windows OS and Office.
Great set of posts on this subject. After dissecting and assimilating the info from others, here is my current view on this and my near term plans.
1 – I earn my bread crumbs by writing Medical Instrumentation applications. Those are desktop apps that benefit from the GUI bling bling of WPF/DirectX and the services of WCF.
2 – Even if I had the time to devote to consumer apps, as of 2012 I would be writing for the iPad. It’s clear that WinRT is not ready for prime time.
3 – Once WinRT matures, ver. 3.0??, and once it works for desktop applications, then I will reconsider revisiting my current half-baked thoughts.
4 – It is going to take a lot of convincing to tell me I have to give up all the long hours that I have put into learning to use Silverlight.
After re-looking on WinRT, I think it’s not that a bad idea, it’s same idea as WPF as far as the coding stage takes place, it’s not re-learning the whole thing.
What I would wanna see is (and will then consider using it):
1. Full Entity Framework support
2. WCF RIA Service + Validation
3. SDK/Toolkit (all controls I benefit in WPF/SL should be there)
Something else that would get me to investigate WinRT is if the combination of WinRT + XMAL gets rid of the Airspace issue of WPF and DirectX.
Also, I would hope that WinRT, once on the desktop, will play nice with Direct2D, DirectWrite, Direct3D, C++ Amp.
HTML/JS development has gotten a lot better lately. The libraries and IDE support are very good. And obviously browsers can do more thanks to new web standards that IE10 supports. So if you haven’t done it for awhile take a look at it again, you might be surprised with what you can do with it.
HTML/JS has gone from absolutely horrible, to almost where VB6 was 15 years ago. Almost.
WinRT sux, everybody knows that.
Given most .net developers make their money from enterprise software and that
a) WinRT software does not work on any version of windows below 8
b) And it will be many years before any enterprise will have upgraded all the computers to Windows 8
c) HTML is being used for all new apps unless they need to work “off-line”
d) Good UIs are often not valued by the people the decide to buy enterprise software (the users often don’t get a say in what software they have to use)
What the point in leaning something you will not get paid to use…
Now if WinRT tablet apps start to sell as well as iPhone apps, it all changes…
It may well be that most WinRt apps are wrote by iPhone and WP7 developers not windows developers.
I’m part of a small group that develops Line Of Business apps for the Windows desktop. We used WPF with MVVM on our last project and we really like it. Your MVVM posts and articles were a big help getting us started Thank you! But yeah, this is all very confusing. We just want to build apps that users like with tools that we like that will last. We’ll probably stick with WPF for awhile. Colin Eberhardt’s blog is helpful for keeping tabs on options for developers. I like his open minded, hands-on approach to evaluating pros and cons of alternative frameworks.
After years of MS development (have been from VB3) I think at this point I wouldn’t like to move to another technology. HTML7JS is great but I still think is not mature enough for LOB applications, which are what I do the most.
In my opinion among all the choices for desktop apps, WPF is the best tool out there. If you are going to target windows machines, this is a no-brainer. Why should I even attempt to move on with plain HTML/JS and whatever crazy stuff that Microsoft likes now. Taking into account that is not going to be 100% aligned to standards for me, it makes no sense at all. Perhaps in a couple of years that can change, for now I feel like a monkey in a lab.
Talk with a Java developer, Oracle and even SAP developers; they have been doing the same sh..t since 10 or 20 years ago. I really feel tired of following MS madness.
What is expected to be my last project as a developer (I think I will retire in about 5 years) is a large LOB made 70% in WPF, 25% iPhone/iPad and just 5% using MVC for very particular stuff.
Only time will tell how did WinRT go.
Thanks for the nice post, and your blog rocks Josh.