Java guy here. I've had some limited professional exposure to ASP.NET web apps over the past five years, but have really taken an interest in diving into the Microsoft stack over the past year or two since all of the cross-platform activity started happening. I'm mostly interested in ASP.NET, as I do little to no development in the desktop or native mobile app space, but I've been interested in at least learning more about those areas.
My understanding has been the following:
[1] WinForms is a very ancient framework for writing traditional desktop applications. It inspired ASP.NET's WebForms, an ancient framework for writing web apps. Both are still used by greybeards, but are effectively considered deprecated legacy tech.
[2] WPF is the current standard for writing traditional desktop applications. It uses XAML markup files to describe a GUI, with each XAML file being backed by a C# class storing the event-handling logic.
[3] "Metro" and "Windows 10 Universal" are emerging frameworks. Trying to achieve some level of convergence between desktop and mobile app development. Pushed hard by Microsoft, but no one cares because there are few users of the Windows Store or Windows Phones.
I am accustomed to seeing "WinForms is dead" Internet discussions, with people chiming in to point out that it still lives on in many shops. However, I've never seen a "WPF is dead" thread before.
Are you guys saying this because you're moving on to "Metro / Windows 10 Universal" even for desktop application development? I don't know anyone going in that direction yet, but then again Hacker News is a bit of a startup niche that poorly represents the technology industry as a whole.
DISCLAIMER I haven't actually watched this video yet... it's almost an hour long, and I'll have to do so later. A "TL;DR" would be cool, but I'm assuming that the gist is XAML still having a role within these newer frameworks that I haven't explored yet.
I have 15 years of professional experience on the Microsoft platform. I'll tell you why people are pissed.
Especially among MS developers, there are many people who don't read read HN or any other tech industry site. They rely or depend on MS to provide them with career advancing technical advice, but for the last eight years they have been consistently let down. Microsoft's preferred flavor changes every two years; Win Forms, SilverLight, WPF, Html5, now Universal Windows Apps. Add Metro-flavors of some of these.
This isn't working, at least for Business Users. Customers are switching from their Native Windows apps (often Win Forms, rarely WPF) to HTML, iOS and Android. Businesses will not build another Windows platform Native app; although some consumer apps might be written.
Developers are seeing their hard-learned technology go down the drain. That was time they could have learnt something new or spent with family. Developers who are in IT/Software for just the job/money find in relatively difficult to just go and learn the web. Many of them could have done it 10 years back (when they were younger), they can't do that so easily now. The last time MS' advice helped was when they had an iron hold on the industry (aka the Monopoly).
Here's some advice for MS:
Build on HTML, perhaps partner with Mozilla. See if you can get it to work as fluidly as Native. They still have perhaps the most formidable research team out there among Software Companies. Closed, Windows Native apps are over.
> Especially among MS developers, there are many people who
> don't read read HN or any other tech industry site. They
> rely or depend on MS to provide them with career advancing
> technical advice, but for the last eight years they have been
> consistently let down. Microsoft's preferred flavor changes
> every two years...
Ahh... thanks, this makes sense. Things are somewhat similar on the Java side with Oracle, but not quite. In my opinion, the biggest contributing factor to the strength of Java's ecosystem is that the community has a healthy level of distrust toward Oracle.
Oracle promotes new things all the time. Sometimes they catch on and get widely adopted. Sometimes the community by and large completely ignores them, and uses another third-party framework instead (e.g. Spring). Oracle is begrudgingly respected, but I wouldn't say that their word rises to the level of "default" in the Java community.
Microsoft guys seem to have much tighter bond with the mothership, and put a great deal more trust in Redmond's agenda. They are much less likely to explore alternatives that come from outside of Microsoft (e.g. I see a lot small microservices for which Nancy makes a lot of sense, but which are still built on ASP.NET "just because"). This causes the wider ecosystem of alternatives to be much weaker than that of Java and other common stacks.
I'm very excited about the future, as C# is a much better language than Java, and Microsoft is at least saying all the right things lately about wanting to see more innovation from the community and less blind reliance on Microsoft. It will be interesting to see whether Microsoft can attract enough newcomers like me to offset the alienated longstanding crowd.
People are weird. XAML is very much alive and part of the new universal app model.
The have also extended the HTML and JS app model where any website can basically declare the capabilities they want to use and be published as an app in the store. They give you some boilerplate to detect that you are running in an app host so that you know when you can call system features like the camera or whatever.
It's literally never been easier to write a windows app...
>However, I've never seen a "WPF is dead" thread before.
Unfortunately, the word "dead" causes people to talk right past each other because it has 2 meanings. More on that later.
First, there has been lots of discussion around "WPF is dead" since that soundbite was made popular by former Microsoft PM Scott Barnes back in September 2010[1]. Predictably, Microsoft denied it with typical business-speak (e.g. "we're still committed to WPF, yada yada") but Scott did call its demise correctly. You see, you have to understand Microsoft's (and most companies') modus operandi to notice how something actually "dies". They don't "kill it" by lighting up a neon sign and issuing A Big Press Release exclaiming, "We just killed WPF and you will thanks us later!" The way companies kill products is to not give it first class attention such as adding new cutting edge enhancements and diverting resources away from it. It's very rare for a company to plainly state that they will abandon a technology. (Adobe publicly stating they will prioritize HTML5 over Flash would be a rare example.)
As for the word "dead" in technology discussions, it has 2 meanings:
#1 "dead" -- as in no longer the preferred, preeminent, first class technology; publishers no longer release new books about it; it is not updated for the latest operating systems or hardware platforms (e.g. iPhones, etc).
#2 "dead" -- as in formal official definitive statement from vendor that it is abandoned, not supported, and nobody anywhere uses it anymore.
Almost always, when people proclaim "X is dead", they're talking about definition #1, and the people who argue against it are talking about definition #2.
If someone says "Latin is dead", they're talking about definition #1. It means that today, Hollywood movies will have actors speaking in English, not Latin. The latest Stephen King novel will be English not Latin. We're not using Latin to type out comments on HN. Latin has been "dead" for several hundred years.
The detractors countering with "Latin is not dead" are using definition #2 and will say they just saw a blog post exclaiming "carpe diem!" and a mathematics proof concluding with Latin phrase "QED". High school and colleges still offer classes to teach Latin.
That's the ongoing sorry state of discussions around the word "dead". The 2 camps just talk past each other and perpetuates the endless cycle of disagreements.
In any case, just like Latin is "dead and also not dead", "WPF is dead and not dead" depending on what the context is.
After having to switch from WPF to crap-HTML5 due to the Great Silence and lying Guthrie's betrayal: not betting my carrier on a Microsoft-only tech again.
I never understood or do understand that reaction.
WPF, Silverlight and WinRT all have XAML at their core.
Sure there are few APIs differences among those versions, but so what?
UIKit is not the same as Cocoa Touch, and I don't see these reactions on Apple Forums.
Nor on Google forums, when they keep changing the UI classes between each Android release.
The whole concepts in the XAML and .NET stack, how bindings work, data templates, DirectX integration and so on are the same, even if there are a few changes required.
They suddenly stopped actively developing WPF 5 years ago, now it's just some small unimportant team cleaning up the backlog. I went to a conference where Guthrie told us that Silverlight 5 is the future. Less than a year later and he was focused only on ASP and JS. As if it's OK.
In terms of features it's actually Flash's rich cousin because Silverlight is multi-language (C#, Python, etc) and multi-threaded among many other features.
Do you actually think that HTML, CSS and Javascript are good technologies to build applications on top of compared to something like Silverlight, which is purpose-built for the task?
But flash was already dying at the time. Flash has "died" because web applications had gotten more powerful.
"Do you actually think that HTML, CSS and Javascript are good technologies to build applications on top" Are you serious? I am not saying "the web" is perfect, but this just nonsense.
For native apps? Yes, I think web tech sucks immensely compared to Silverlight.
Unfortunately, the XAML everywhere people lost at Microsoft, so we're stuck with half-baked, kludgy and limited solutions like atom/electron/node-webkit for building cross platform desktop apps. XAML everywhere (Silverlight) is so much more precise and it's compiled. I would have preferred that they continued developing Silverlight at least as a means of building cross platform desktop apps, but I understand why they don't want to expend the energy.
You're betting that Microsoft (or any other company) will continue to support all it's api's indefinitely. And when it doesn't, you not caring about a "wider landscape", will bite you.
Silverlight is great example of this, one year it's "the best" (enterprise) technology the next year it's dead. I wonder if it's even officially supported on Windows 10.
You can use non-legacy non-ubiquitous languages (as opposed to HTML/JS/CSS), because it's not public-facing. Microsoft is sending a mixed message to enterprise: should they bet on HTML5 and possibly quit the MS ecosystem whatsoever, or XAML is still a major investment for Microsoft? They need to demonstrate that WPF/XAML team is more important than ASP/Azure team.
Well obviously you can do that, under the assumption that the company you work for is locked down and isn't going to even remotly consider any type of BYOD, you could get away with pushing any tech you want, considering you control the clients.
However, that doesn't mean that you should and if you're going to lock yourself in to a single priopritory vendor, you're doing yourself and the people you work for a disservice if you haven't weighed it against the alternatives.
I highly doubt the GP really meant that, which is what I was really referring to. What is it about "enteprise" which makes them think they're different? Honest question.
Azure and web tech is incredibly important. XAML can be used for desktop apps and store apps...thats been the story for about three years now.
They have said for years that WPF is the way to go if you are writing a desktop app that has rich UI needs.
I really don't understand this kind of thing...was C++ dead even though MFC is only getting minor updates?
Azure is literally the most important thing that the server and tools division is working on. Just because they are developing cloud tools doesn't mean that they wont support desktop apps.
The "mixed message" they have been sending to the enterprise is around licensing. Dev technology changes and this isn't anything new.
Microsoft marketed WPF as the way to make Windows applications going forward. It turned out that it sucked for things like tablets or phones, and everyone cared about tablets and phones. WPF is not exactly abandoned, but people who learned WPF to develop with it are somewhat bitter (and understandably so) about the experience, and about the transition to Windows 8 / phones / tablets.
WPF lives on as...WinRT. I mean, the APIs are 80% identical. WPF also has fairly decent support for touch, what WinRT did was improve performance a lot through a new architecture.
I personally still use WPF for all my development given its richer API. I'm not a big fan of XAML, but WPF has a good basic API for putting stuff on the screen and handling input in C# (disclosure: MS employee, but research).
WPF is a lot more than just XAML, and you can totally write entire WPF apps without a line of XAML. XAML is mainly useful for tooling and lacks many of the niceties of C# while operating on a DOM that is a bit more complex than HTML. I'm not sure if anyone wants to edit it by hand, which is true of any XML dialect.
I really wish JavaFX Script would have taken off. It provided a nice balance between code and markup.
For me and many other .NET developers I know, speaking about XAML means the whole stack, e.g. XAML, .NET APIs, Blend integration and third party components.
I just tend to abbreviate to XAML when speaking about it.
There changes on the APIs between WPF, WinRT and Silverlight if you will, and not all features are exposed across all stacks.
Yet, any developer knowing XAML, the usual programming idioms and the respective .NET APIs can easily transition among all of them.
This has been mentioned at multiple PDC and BUILD conferences in the last years, but I guess many at HN and Reddit don't follow them.
I just see XAML itself as totally optional, and it is weird to hear it used to represent the entire architecture. One of the reasons I haven't even tried WinRT yet is because it seems much more XAML heavy than classic WPF (it is also missing font metric APIs my programs depend on...). I'm also a bit of a code traditionalist, and find transitioning between the two (markup and code behind) a bit jarring.
Plenty of Microsoft haters on HN, this post has already been flagged or flamed off the front page. Oh well.
That little layer on top is the one beneath their app with which they interact, is it not? I'm really asking, not being a Windows developer but looking to get into it - and being a bit confused as to how to proceed.
It goes like this, back when Longhorn was the codename for Windows Vista, with the big plans of using .NET for everything, the next generation UI engine was named Avalon.
Parts of it eventually became what is known as WPF. The whole set of concepts that it embraces are as follows:
- XML based "language" for describing UI layouts (XAML)
- A set of .NET APIs for buttons, dialogs, windows, and so on
- A set of .NET APIs for manipulating the XAML DOM
- A set of .NET APIs for handling application resources
- A set of abstraction concepts, namely binding, data templates, triggers, MVVM, storyboards
When Silverlight came out, the team responsible for it adapted all these concepts to the platform. Similarly to the WinRT platform.
The main differences are the XML namespaces used by XAML, which expose different set of UI widgets in each platform.
Also some .NET APIs are a bit different as the classes aren't 100% equal across all platforms, e.g. TypeConverters are not available in WinRT.
However those basic concepts originally from Avalon are still there.
WPF was basically html like XML (it had a grid element for one thing) but with all the crap thrown out and native support for two-way binding of values and event which meant it was extremely easy to e.g make a front end to a database but also to make GUIs in general.
What does WPF not have already that needs to be added?
I usually end up using WinForms for my limited GUI needs (very limited, desktop only), and that's mostly a wrapper around Win32 APIs that haven't really changed in 15 years or more. Does that mean WinForms is dead?
Although from what i heard at Ignite, they are making some improvements for touch support for WPF, XAML debugging, rendering performance, etc. It had maybe five minutes during an hour-long session on the future of .NET that I went to.
I don't know what to say to that. If you look at what's going on with the new app model...its pretty aggressive what they are doing. Btw...you know that they are going to let .net/winform/wpf and win32 apps be published to the store and use the new API's right? There is a build session about that as well...they are using a type of container technology to wrap them to make them safer. (ish)
I'm just saying...i think they have heard everybody and have tried to bring all of their dev's along on the new app model.
Win32 apps, WPF and .net, objective-c for chrissake...android APIs...what more do you want?
Not sure why you think WPF is dead. A simple google shows many projects at MS actively using it, it still being developed, active support on WPF codebases, and that it is big in enterprise, which MS actively encourages.
For example, here is a recent post on WPF work for VS 2015 [1]. It is very much alive and being used.
Is Visual Studio Code made with WPF? Is Visual Studio Online made with WPF? Is WPF open-source and multi-platform? Guess which one(s) will survive in 5 years?
WPF is supported as part of the OS until at the earliest 2024, and given MS ability to keep backwards compatibility longer than the web has even existed, I'm betting WPF will be the last one standing of those items you listed.
The ASP.NET team is slamming things around to decouple it from IIS and Windows so that they can make a push into the server-side Linux world. ASP.NET MVC is still a relatively new technology stack, as well - three years ago I was only just thinking about getting some of our WebForms apps converted to, I believe, MVC 2.
Well, he probably made him waste significant time learning a technology that was going nowhere.
Reminds me of Nokia's words at Qt DevDays when they said they're 100% invested in C++ and Qt. I think one year later they royally screwed their entire developer community and switched everything to .NET with absolutely no way to port your code except by rewriting it.
Luckily Qt survived, in no small part because it was open source. I guess the moral of these stories is to be careful when using languages and frameworks controlled by corporations and to focus instead on open technologies...
Man, I'm not trying to be pedantic here...but Scott Guthrie didn't make him do anything. The level of anger expressed there is strange to say the least.
The lesson there is to keep learning and stop trying to find silver bullets. What did this guy do join a WPF monastery and only practice WPF-fu without somehow becoming a better .net dev in the process?
If you haven't picked up enough web skills in the last decade to be dangerous you must have been hiding somewhere. Time is only wasted if you let it be. I had to do some crazy shit in access years ago, but I'm not angry that the skills I learned building forms in Access 2000 aren't useful anymore.
Wait, what? I thought XAML was dead. I have quite a bit of investment into Silverlight and did some WPF desktop apps years ago. I thought all that was a total waste of my time. It's not dead? This is...cautiously good news. I love XAML frankly. The data binding system with seamless C# code behind is glorious to work with.
WPF, Silverlight, WinRT are all built on top of XAML.
There are just a few differences in the APIs, but that is about it.
Somehow, Microsoft doesn't seem to be able to pass the message that all those names are mainly the flavour of the month from the marketing department for the XAML stack.
There are just a few differences in the APIs, but that is about it.
Meaning that of course some changes are required.
It is like when one changes SQL queries among RDBMS servers, of course some things change, but one doesn't have to throw out all the SQL knowledge out the window just because of that.
XAML was the main way to do the UI for Windows 8 and Windows Phone apps. Now admittedly nobody actually made any apps for those two platforms, but MS never stopped pushing XAML, it was just Silverlight and WPF they killed off (or ignored in the case of WPF).
In all fairness, they didn't kill off Silverlight. Apple did. Their refusal to allow alternative managed code browser plugins killed both Silverlight and Adobe plugins. And in retrospect it's probably a good thing. The security holes were extensive. I wonder why MS didn't try to build a .NET/Silverlight framework in asm.js? Just not worth the effort I imagine.
XAML was never dead. It was the preferred .net UI system for windows 8 apps. Meanwhile they said...building a .net desktop but need a rich UI? Use WPF. The idea that they are a small team just fixing bugs really isn't the case. You could say the same thing about MFC.
If you are butt hurt that WPF didn't set the world on fire the way html did...you just weren't paying attention. Evry developer should know html and js...whether you like it or not. I would say the same thing about C...but html and js are the thing that everyone should know something about
The screw-up is that they introduced many variations of XAML, each one incompatible with the one that came before. Vista brought WPF, then came Silverlight to 'counter' Flash, then came Windows Phone 7 Silverlight, then Windows 8 came with WinRT, while Windows Phone 8 had yet another dialect not compatible with Windows 8. And now Windows 8.1 and Windows 10 are trying to bring it together again. Add some rebranding efforts to this, and you have what we have now: XAML is a very good idea, but the implementation of it is a royal mess. As long as they keep changing it all the time, developers will keep getting burned and turned off.
An interesting angle to this story is the recent introduction of Xamarin Forms, which is also a form of XAML, even more universal in that it targets iOS, Android and Windows.
Do note that XAML is merely a way of describing nested objects in XML. It's just a markup language and it never was incompatible to itself. Heck, if you wanted to, you could use XAML to describe Swing GUIs for Java; you just need a parser that turns the markup into objects.
The implementations of the objects referenced by XAML may differ and have incompatibilities, but that's not a XAML problem. Xamarin.Forms uses completely different ones, for example, while still keeping the same markup.
They screwed up a lot of things during those years...i don't know if WPF even makes the list of screw up's.
Maybe I look at it differently, but I don't expect things like consistency from API's. They are what they are. You find out what you need to do to solve a problem.
It's not like there is something out there that is magically better. Just varying degrees of inconsistent.
> I don't expect things like consistency from API's
But you do not expect an API/object model to arbitrarily change for existing features. Which is what happened.
A Win32 C app from 20 yrs back still compiles with no problems in Windows 10, but where do you go with a big enterprise app that was built 7 yrs back in then-state-of-the-art Silverlight? Any migration will be a big investment and comes with uncertainties and limitations.
Java guy here. I've had some limited professional exposure to ASP.NET web apps over the past five years, but have really taken an interest in diving into the Microsoft stack over the past year or two since all of the cross-platform activity started happening. I'm mostly interested in ASP.NET, as I do little to no development in the desktop or native mobile app space, but I've been interested in at least learning more about those areas.
My understanding has been the following:
[1] WinForms is a very ancient framework for writing traditional desktop applications. It inspired ASP.NET's WebForms, an ancient framework for writing web apps. Both are still used by greybeards, but are effectively considered deprecated legacy tech.
[2] WPF is the current standard for writing traditional desktop applications. It uses XAML markup files to describe a GUI, with each XAML file being backed by a C# class storing the event-handling logic.
[3] "Metro" and "Windows 10 Universal" are emerging frameworks. Trying to achieve some level of convergence between desktop and mobile app development. Pushed hard by Microsoft, but no one cares because there are few users of the Windows Store or Windows Phones.
I am accustomed to seeing "WinForms is dead" Internet discussions, with people chiming in to point out that it still lives on in many shops. However, I've never seen a "WPF is dead" thread before.
Are you guys saying this because you're moving on to "Metro / Windows 10 Universal" even for desktop application development? I don't know anyone going in that direction yet, but then again Hacker News is a bit of a startup niche that poorly represents the technology industry as a whole.
DISCLAIMER I haven't actually watched this video yet... it's almost an hour long, and I'll have to do so later. A "TL;DR" would be cool, but I'm assuming that the gist is XAML still having a role within these newer frameworks that I haven't explored yet.