Hacker News new | ask | show | jobs
by grokys 4269 days ago
> The holy grail for Microsoft would be getting developers to write new software for Windows again, putting Windows back at the center of a new virtuous circle.

And yet there is no currently properly supported way to write desktop applications for Windows! MFC = obsolete, WinForms = maintenance mode, WPF = Dead on arrival, WinRT = Metro only.

For all the people saying "web is where it's at", there are some things that are simply still best done on desktop. And native development in iOS and Android is still going strong.

4 comments

AFAIK WPF isn't dead, its popular with line of business apps. But yeah, disappointing there's been only minor improvements to it in the last 4 years, during which they've been focusing their efforts on WinRT.

I was just reading something about the subject here http://pragmateek.com/is-wpf-dead-the-present-and-future-of-...

Oh I mean I use it almost every day and it has many good points, but the complete lack of interest from MS is obvious. I mean, even renaming a window doesn't work properly in Visual Studio. Most of it hasn't even been updated to use generics. It still uses DX9. But there's no better option.
A massive strategic error on Microsoft's part. They're now stuck on the wrong side of what Joes Spolsky called I think fire and motion.

They still own the desktop, yet they ignore it.

I've concluded that Windows Forms is the least bad of the official Microsoft GUI frameworks.

MFC is OK if you can accept its crufty old flavor of C++. But it wouldn't allow for much sharing of code between Windows desktop apps and modern (Metro) apps, whereas a .NET-based solution would let you share non-GUI code easily.

WPF was developed for a relatively short period of time, starting in the early 2000s, and then basically abandoned. Windows Forms may not be much older than WPF, and both are apparently now in maintenance mode, but Windows Forms has the advantage of being based on the Windows API and common controls, which have been developed since Windows 1.0 in 1985. WPF was all new technology; it used the older Windows APIs only as much as it had to. So Windows Forms is based on the tried and true foundation for Windows GUIs.

This is a bit fuzzy, but it seems to me that WPF reflects the rich-client excesses of its time. In the early to mid 2000s, Microsoft and Sun (with Java/Swing) were trying very hard to be better than web apps. For Microsoft with WPF, this meant building the whole framework on a very advanced graphics subsystem, the then-cutting-edge Direct3D 9. I dare say they didn't care much about running well on older or less capable hardware; they just wanted to take full advantage of what the latest hardware could offer. By contrast, the Windows GDI and USER subsystems were designed to run on primitive raster graphics hardware, so Windows Forms apps benefit from the relatively low system requirements.

Now I'd like to present a case study in how the excesses of WPF resulted in a less than satisfactory user experience for a niche application where WPF's advanced graphics capabilities were almost certainly unnecessary. My brother is a Christian minister. About three years ago at Christmas time, while he was still a seminary student, he told me about how his then-current laptop wasn't serving him well any more. Among other things, he mentioned that the Logos Bible study software he used wasn't running efficiently, and that for reasons unknown to him, Logos was unusually demanding when it comes to graphics hardware. This seemed anomalous at the time; a program like Logos is little more than a text viewer and editor. I didn't dig into that at the time, though; I just bought him a new laptop.

You can guess where this is going. Tonight, during my wandering about the Web, I happened to find out that starting with version 4, Logos was based on WPF. I made the connection with the conversation from three years ago, and confirmed that the excessive demands on graphics hardware were really an issue. See, for example, this forum thread from 2009:

http://community.logos.com/forums/t/6200.aspx

I feel bad for the users who had to take time out from their real work to post on a forum like this about technical minutiae like video card specs. At least one user justifiably questioned why a text-based research program like Logos would require a cutting-edge video card. We who develop end-user-facing software should take this as a lesson in how not to make our users happy, by prioritizing developer convenience and/or gratuitous use of cutting-edge technology over delivering a good user experience on the hardware that users actually have.

There's not much in the newer wave of technology from Microsoft I find useful. In addition to your point, WPF (XAML) is without a doubt a better HTML, and yet can at times be as brittle as HTML. Workflow Foundation is conceptually good, but it's a beast - I'm constantly thinking it's a workflow-flavoured instance of dependency injection. WCF is better, but then I don't use it for more than what I used to do with server-activated objects in Remoting. LINQ is what makes C# and Visual Basic.Net functional, and it's cool for that - but LINQ a big no-no for perf-sensitive code paths. Too much plumbing. MFC is veeeery familiar, but not as fast (dev time) as .Net, so I stick with WinForms. Which does a reasonable job of OO for UI.
Plain Win32 hasn't gone anywhere and with few days of work you can get an MFC-like framework up and running. Not the beginners task, but not a rocket science either. But the UI framework availability is not a cause of people writing less for Windows now than they did before. Far from it.

The problem was the high-level mesaging from Microsoft. They weren't about desktop anymore, apparently, but that's exactly where I make money being a Windows software developer. They were now mobile. They were Metro-shmetro. They wanted to leave behind everyhting that helped me make living by writing Windows apps and move on to conquer new domains. They neglected me and my interests. But I can say that I like how things are changing now. They put Start button back. They appear to be opening Windows Store to non-Metro apps. Good, excellent, they are on the right track... that's assuming they don't screw the hell out of Windows 10 with their Asimov telemtry bullshit, but it's an altogether different issue. At least they are paying a bit more attention to what people actually want instead of what Microsoft thinks they should be wanting.

The problem was the high-level mesaging from Microsoft. They weren't about desktop anymore, apparently

But that is just an impression, an interpretation, and probably a false one, no? I and lots of people I work with never treated it as such but rather like 'we also do touch&mobile now, next to the good old desktop'. That is what Windows 8/8.1 is for us and our customers: in essence Windows 7 + Metro. And it didn't affect the way we write our desktop software in any way. Except in practice that we have to press Win+D after login, not exactly a major overhaul.

On a sidenote: to us the fuzz over the start button is just a media-driven thing coming from people stuck in the point-and-click age of XP and earlier. Anyone doing serious computer work should be using keyboard shortcuts anyway. And hence wouldn't have any problems adapting to the lack of a point-and-click button when the 'Win key + start typing what you're looking for' does exacty te same, and has been doing that for quite some time.

How on earth is MFC obsolete? Old yes, but it works fine. If you want a standard Windows application in C++ it's what you use. C# is more common for new projects though, and replaces Visual Basic as the line-of-business app builder of choice.