Oct
03

The Rumors of Technology Death have been Greatly Exaggerated

By

One of the most popular saws in technology is the cry “That technology is dead!  Now it’s all the New Thing”.  Recently there was a big brouhaha over whether or not WPF was dead – replaced with Silverlight or HTML5.  Arguments went back and forth through blog articles, twitter, whatever medium necessary all the way up to Scott Guthrie at Microsoft.  What really struck me through all of this was the improbable standard used for what constitutes a dead technology.

Technology Lifecycle

Portraying tech as either dead or not is too simplistic to be useful.  Instead, let’s consider a few states:

  • New:  Fresh technology still being fleshed out.  This is the leading edge of advancement.
  • Mature:  Fully fleshed out and well understood.
  • Deprecated:  This technology is planned on being made unsupported or removed in the next environment.
  • Dead:  The technology has significant risks, is not supported and can’t be used on the latest environment.

In this model there are a lot of shades of grey between Not Dead and Dead.  If you are building a big, customer critical system you probably want to be using mature technologies.  If you have one of those systems and it’s based on deprecated items you need to put together a strategy to migrate off of it before it goes dead.

WPF: Still the new kid on the block

Many arguments about something being dead are really focusing in on just the first two states:  Is it brand new and still a hotbed of development, or is it mature.  For example, compare WinForms and WPF in .NET.  The former is mature and the latter is still new.  Why would I classify WPF as new, three years after its initial introduction?

  • It was significantly updated in .NET 4.0, which shipped just five months ago.
  • The ecosystem of controls and other libraries for WPF is still expanding rapidly.

WPF is probably just about to transition to mature.  The ecosystem of controls is now large enough you can quickly develop most applications you might otherwise use WinForms for.  This wasn’t true at the start of 2010, but the last six months has seen an explosion of new libraries from all of the usual players.  Quite probably Microsoft won’t significantly mess with WPF going forward and that’s a good thing:  It means you’ll be able to take what you write today and move it forward to the next few versions of .NET over the next decade without significant rework.  Migration rework doesn’t add value to you or your customer.

WinForms:  All grown up

Now, my friends that do Silverlight or WPF development are probably howling right now that WinForms is long dead & buried.  After all:  Microsoft doesn’t have a legion of developers working on it, and quite literally nothing was done in the last two releases of the .NET framework for it.  But it just doesn’t qualify as either deprecated or dead:

  • WinForms on .NET will be supported for a long time, quite likely as long as .NET and Windows are because it’s built on GDI+ which is foundational to Windows.
  • WinForms is still being patched for security vulnerabilities and will be supported in the next major version of Windows.

So even though it hasn’t been changed since .NET 2.0, it’s still a completely viable platform to develop even brand new applications on.  The fact is that a new application developed for WinForms will likely be officially supported by Microsoft as long as WPF, certainly through several more major versions of Windows.  We’ve found that a number of our customers at Gibraltar Software and VistaDB are actively developing and starting new projects in WinForms because it’s a very productive environment.  It has a large body of third party controls, the tools & techniques to develop for it are well understood, and in the end that delivers results.

Visual Basic 6: Dead Man Walking

If you want to look at a technology teetering on the edge of death take VB 6.  You can run it on the latest environment (Windows 2008 R2 and Windows 7 both support VB 6, no joke!) but it isn’t being supported or patched even for security problems.  That puts it hovering right between deprecated and dead.  If I had to bet money, VB 6 will still be alive and kicking on Windows 8 but I would definitely not develop any new VB 6 applications and I’d be actively migrating away from them.

People Love a Winner

Developers are just people – and we love winners.  This is the best car, that’s the best language, this is the best database.  There is so much going on in software that it isn’t feasible for any one person to assimilate all of the options available, relate them to a problem at hand and truly sort out the one very best match between them.  Despite this, we’re asked to do that all of the time: so anything that makes our job more complicated we want to fight.  We don’t want two ways to make web applications, two ways to make client user interfaces, etc.

We’d prefer a nice clean line of replacement where new, cooler things replace older stodgy things.  By this logic, WPF replaced WinForms which replaced MFC or something like that.  Silverlight is a little of an odd duck, but sure – put it in the same line now that you can run out of the browser with it.

Get Results the Mature Way

Just because Microsoft doesn’t have an army of developers actively changing it and isn’t beating the drum about it in every press event doesn’t mean you shouldn’t use it.  In fact, look at it another way:  If Microsoft is still rapidly evolving a technology you should really think about whether you want to jump in.  Since its changing you can’t bank on a body of best practices or an ecosystem of third party libraries.  You’re most likely to run into platform defects in design & implementation, and most likely to be heartbroken when the next version of .NET breaks your clever hack or makes it completely irrelevant.

In the end, what are you trying to do?  If you’re focused on getting results and solving real-world problems for customers, stick with mature.  If you want to hang out with the cool kids and be a pioneer have fun with the latest new thing.  Just know that it’s the pioneers that end up on the ground with arrows in their backs.

Related posts:

  1. Technology Debt? Don’t bet on it.

3 Comments

1

Your technology lifecycle assumes a perfect world that doesn’t seem to exist at Microsoft. Problem is, WPF is still new and will probably never become mature. So it’s in limbo, which to me means dead.

Moving along to your assessment of VB6, the question is, was VB6 “dead” the moment WinForms was introduced? You say it wasn’t, but who in their right mind would have started a brand new enterprise application in VB6 in mid 2000? No one! So VB6 still works in Windows 7 to this day — who cares? It’s still been “dead” as a viable development platform for 10 years. It was very much alive 11 years ago and then it was shot in the heart by WinForms.

So, WPF isn’t dead yet. It’s got about 1.5 years left and then it will no longer be a viable development platform. 10 years from now, I’m sure it will still work, but that won’t make it any less dead. And if you’re thinking about investing in a lot of WPF training for your folks today, you’re going to be wasting a lot of time and money.

2

I think your point about WPF is potentially correct because it didn’t really achieve “mature” viability until recently. But, it may amaze you to know that there were a number of enterprise VB 6 projects I know of started as late as 2004. Why? Because there was no viable migration for VB 6 forward, so enterprises that had massive investments in COM and VB 6 found it dramatically cheaper to keep on keepin’ on… Which in turn is why Microsoft still supports VB 6. It’s really pretty sad in that I’d really HOPE that no one would want to do that, but Microsoft made it very expensive to move forward from VB 6 to WinForms.

Given that Microsoft has actually written several of their products in WPF and published the extensibility API’s for Visual Studio relying on WPF I think it’s now hard for them to deprecate and kill. That coupled with the wide set of third party controls now available I believe justify calling it a Mature technology. Consider that Microsoft still supports many levels of API in Visual Studio down to C++-only COM so history says it’s unlikely the’ll just drop it. So who cares? Well, judging by what we’re hearing companies that want to create line of business applications do because they now feel they can get expert guidance on how to work with it, controls to do all of the things they need, and the great experience & comfort they’re used to of a deployed application. The point is that many business customers ask “how can I get this application done with the lowest risk” and when they hear that Silverlight has had four releases in two years that screams risk to them.

Finally, I would suggest that “will still work on the current OS” is the very definition of “Not dead”. It may not be fun, marketable, sexy, or easy to find developers that want to work in it – but it isn’t dead.

3

I continue to write all my applications in Winforms. Like you said until very very recently the controls etc did not exist for WPF to create every piece for a full application release. With Silverlight it’s a cool platform but the minute I started looked at version 2 it was obsolete and now it’s at 4. It’s very hard to keep up with the changes and actually get anything done. I took a chance on using Entity Framework 4 and so far I haven’t considered it a mistake but it is risky…

Leave a Comment