Tuesday, November 08, 2011
« DevCon slides | Main | Web sites vs Web apps »

Disclaimer: I know nothing. The following is (hopefully) well educated speculation on my part. Time will tell whether I’m right.

I really like Silverlight. I’ve been a strong proponent of Silverlight since 2007 when I rushed to port CSLA .NET to the new platform.

In fact, Magenic provided me with a dev and test team to make that transition happen, because we all saw the amazing potential of Silverlight.

And it has been a good few years.

But let’s face reality. Microsoft has invested who-knows-how-much money to build WinRT, and no matter how you look at it, WinRT is the replacement for Win32. That means all the stuff that runs on Win32 is “dead”. This includes Silverlight, Windows Forms, WPF, console apps – everything.

(this is partially in answer to Mary-Jo’s article on Silverlight 5)

I wouldn’t be surprised if Silverlight 5 was the last version. I also wouldn’t be surprised if .NET 4.5 was the last version for the Win32 client, and that future versions of .NET were released for servers and Azure only.

Before you panic though, remember that VB6 has been “dead” for well over a decade. It died at the PDC in 1999, along with COM. But you still use VB6 and/or COM? Or at least you know organizations who do? How can that be when it is dead??

That’s my point. “dead” isn’t really dead.

Just how long do you think people (like me and you) will continue to run Win32-based operating systems and applications? At least 10 years, and many will probably run 15-20 years into the future. This is the rate of change that exists in the corporate world. At least that’s been my observation for the past couple decades.

Microsoft supports their technologies for 10 years after a final release. So even if SL5 is the end (and they haven’t said it is), that gives us 10 years of supported Silverlight usage. The same for the other various .NET and Win32 technologies.

That’s plenty of time for Microsoft to get WinRT mature, and to allow us to migrate to that platform over a period of years.

I don’t expect WinRT 1.0 (the Windows 8 version) to be capable of replacing Win32 or .NET. I rather expect it to be pretty crippled in many respects. Much like VB 1.0 (and 2.0), .NET 1.0 and 1.1, Silverlight 1 and 2, etc.

But Windows 9 or Windows 10 (WinRT 2.0 or 3.0) should be quite capable of replacing Win32 and .NET and Silverlight.

If we assume Win8 comes out in 2012, and that Microsoft does a forced march release of 9 and 10 every two years, that means 2016 will give us WinRT 3.0. And if we hold to the basic truism that Microsoft always gets it right on their third release, that’ll be the one to target.

I think it is also reasonable to expect that Win9 and Win10 will probably continue to have the “blue side” (see my Windows 8 dev platform post), meaning Win32, .NET, and Silverlight will continue to be released and therefore supported over that time. They may not change over that time, but they’ll be there, and they’ll be supported – or so goes my theory.

This means that in 2016 the clock might really start for migration from Win32/.NET/Silverlight to WinRT.

Yes, I expect that a lot of us will build things for WinRT sooner than 2016. I certainly hope so, because it looks like a lot of fun!

But from a corporate perspective, where things move so slowly, this is probably good news. Certain apps can be ported sooner, but big and important apps can move slowly over time.

What to do in the meantime? Between now and 2016?

Focus on XAML, and on n-tier or SOA async server access as architectural models.

Or focus on HTML 5 (soon to be HTML 6 fwiw, and possibly HTML 7 by 2016 for all we know).

I’m focusing on XAML, creating a CSLA 4 version 4.5 release that supports .NET 4.5 on servers, Azure, Windows (Win32), and Windows (WinRT). And Silverlight 5 of course.

In fact, the plan is for a version 4.3 release to support Silverlight 5, then version 4.5 with support for .NET 4.5 and WinRT.

I suspect that you can use Silverlight or WPF as a bridge to WinRT. The real key is architecture.

  1. An n-tier architecture is fine, as long as the data access layer is running on a server, and the client uses async calls to interact with the server. WinRT requires a lot of async, at a minimum all server interactions. Silverlight forces you to adopt this architecture already, so it is a natural fit. WPF doesn’t force the issue, but you can choose to do “the right thing”.
  2. You can also build your client applications to be “edge applications” – on the edge of a service-oriented system. This is a less mature technology area, and it is more costly. But it is also a fine architecture for environments composed of many disparate applications that need to interact as a loosely coupled system. Again, all service interactions by the edge applications (the ones running on the clients) must be async.
  3. Or you can build “hybrid solutions”, where individual applications are built using n-tier architectures (with async server calls). And where some of those applications also expose service interfaces so they can participate as part of a broader service-oriented system.

I favor option 3. I don’t like to accept the cost and performance ramifications of SOA when building an application, so I’d prefer to use a faster and cheaper n-tier architecture. At the same time, many applications do need to interact with each other, and the requirement to create “application mashups” through edge applications happens from time to time. So building my n-tier applications to have dual interfaces (XAML and JSON for example) is a perfect compromise.

The direct users of my application get n-tier performance and maintainability. And the broader organization can access my slower-moving, standards-based, contractual service interface. It is the best of both worlds.

So do I care if Silverlight 5 is the last version of Silverlight?

Only if WPF continues to evolve prior to us all moving to WinRT. If WPF continues to evolve, I would expect Silverlight to, at a minimum, keep up. Otherwise Microsoft has led a lot of people down a dead-end path, and that’s a serious betrayal of trust.

But if my suspicions are correct, we won’t see anything but bug fixes for WPF or Silverlight for many years. I rather expect that these two technologies just became the next Windows Forms. You’ll notice that WinForms hasn’t had anything but bug fixes for 6 years right? The precedent is there for a UI technology to be “supported, stable, and stagnant” for a very long time, and this is my expectation for WPF/SL.

And if that’s the case, then I don’t care at all about a Silverlight 6 release. We can use WPF/SL in their current form, right up to the point that WinRT is stable and capable enough to act as a replacement for today’s Win32/.NET applications.

Wednesday, November 09, 2011 3:55:07 AM (Central Standard Time, UTC-06:00)
An interesting read... although I don't quite get some points:

1. .Net is a programming platform which doesn't have to be tied to Win32. I don't quite see why you mention "But Windows 9 or Windows 10 (WinRT 2.0 or 3.0) should be quite capable of replacing Win32 and .NET and Silverlight." and treating "Win32/.Net" as legacy. MS has invested too much in .Net to leave it and return back to just native code. My guess is they have expanded from .Net only future to a .Net + Native + JS future, and that is independent of XAML, Silverlight, Win32 and WinRT. Sorry but I don't see the correlation between the programming platform/language and the system below it.

2. If people jumped onto Silverlight was, mainly, to deploy advanced applications without changing a line of code, over a huge number of machines... including Mac (sadly Moonlight on Linux/BSD never reached the same level). I don't see how WinRT offers anything like that. The Internet is full of developers who lived a happy live programming with Silverlight and deploying from WinXP to MacOSX that now guess what the heck of a lie Microsoft has involved them in. And no, HTML5 is not the same thing, just in case.

MS has always been for developers, and when it has had a great technology as Silverlight that lots of cross-platform business apps developers loved... they go on and tell us a story about moving windows only again. It's pretty nonsense.

First it was WPF that was the good-looking kid, then it was Silverlight, no it is WinRT... I hope at least they have a clear path in mind for once in these past 10 years and stop confusing developers around. More communication and clear cut statements from wouldn't be a bad thing to achieve this.

Cheers.
Cobo
Wednesday, November 09, 2011 3:56:54 AM (Central Standard Time, UTC-06:00)
Hi Rocky,

"So do I care if Silverlight 5 is the last version of Silverlight?" Well NO , if it's as mature/"feature complete" (I dislike this term!) as WinForms has been 6 years ago! But is it? I'm in doubt!

Otherwise I agree with most you said.

Life's full of changes and that's not bad (but also not good) by itself. And yes, after having done my first steps with SL, I think it's potential is great, esp. when one has worked out how it REALLY succeeds Winforms (beside all that nasty "rotating button" stuff). And since SL is a UI-technology, I don't mean all that more architectural stuff (MVVM, XAML, UI-testing) which definitly is nice, but it's UI-capabilities which blames Winforms and enables us to introduce another level of UX to our users.

BUT:

Why all that rumor and ranting? What does dev's all around the world drive to participate in those arguments?

To me it's because MS definitly has destroyed much of their reputation as a LEADING company for development. You wrote about a "serious betrayal of trust" if MS develops WPF without SL keeping the pace. (But what about both technologies growing together, as announced several times?)
I think many devs see this happening. They trust(ed) MS to set the pace. But now they are confronted with a situation, where they have to argue with their customers to install a now-legacy plugin for their browsers! And what about all the 3rd party vendors, developing tools etc. for WPF/SL(will reporting for SL/WPF from infragistics emerge the CTP?)? A very uncomfortable situation into which MS has brought us! Definitly not what we expected from MS.

Best wishes

Volker
Volker Schaak
Wednesday, November 09, 2011 7:24:29 AM (Central Standard Time, UTC-06:00)
"and no matter how you look at it, WinRT is the replacement for Win32"

It seems unlikely that I'm going to be able to build a complex financial application using tiles, and actually I'm not sure I want to use a UI designed for touch rather than a traditional desktop.

I realise that WinRT isn't the UI layer as such, but I can't really see how anyone can migrate anything to it in the short/medium turn unless they want to dumb it down considerably.

Do you see WinRT/UI being extended to allow the creation of more complex applications?

Personally if MSFT want to replace win32 then they'd have been better off just rewriting windows completely - preferably with a managed API - and just running win32 apps in some sort of "windows on windows" style VM.

All seems a bit mad to me.
LaughingJohn
Wednesday, November 09, 2011 7:55:55 AM (Central Standard Time, UTC-06:00)
Something about all this makes me very depressed. Hard to pinpoint exactly what but maybe it's the feeling that when I started off in Windows development all progress from MS was seen as vital to progressing the applications and systems. Every advance was welcome and exciting no matter how crappy its execution was. Now it seems almost impossible to sell the benefits beyond the scare of declining technology and lack of support.

Perhaps it's the environment i find myself working in now - that big, slow, safe, limited, vast amounts of $ to waste on everyting but technology corporate you refer to.

Unfortunately there are limited jobs where folk get to work on the front line as it were. The vast majority of Windows developers are stuck in a very unexciting world plumbing away writing new code in "dead" technology all the while knowing about better, newer ways that will be required 'one day' when they are too old to even keep their existing jobs or seen as too stupid because they have coded 2001-style as recently as 2015!

Can anything be more depressing than that - ah, there, that's what ignited those depressed feeling from reading your post.

So "Silverlight 6 doesn't matter". For most it doesn't because there is no business need and therefore not opportunity. Perhaps the best lesson for the mere mortal developer stuck in the limited job market is don't read anythng about newer technology!!
jh72i
Wednesday, November 09, 2011 7:57:32 AM (Central Standard Time, UTC-06:00)
I think the article is dead wrong.

VB6 had one thing going for it: in the 10 years following its demise, Windows had a market penetration of above 95%. From a VB6 programmer's perspective, the corporate computing world (where VB6 apps lived) in 2009 was pretty similar to the world of 1998: Windows everywhere, VB6 is supported. A VB6 app written 7 years after VB6's "death" could still reach practically all computing devices, minus a few Macs which were pretty much irrelevant back then.

For Silverlight, the situation will be different. Windows market share among computing devices is dropping. Now, it's around 90%. Five years from now, it might be in the 60% - 80% range. Nobody knows if MS can crack the tablet market, but looking at Windows Phone 7, it looks like even a pretty damn good product isn't enough, if it comes too late.

So, without continued support by Microsoft to increase the platform reach of Silverlight, the percentage of computing devices that can run SL apps will be going down pretty fast. SL 5 actually exacerbates this problem by not supporting Macs.

Bottom line - if you want to write an app that can reach a good percentage of devices, you've got to go HTML 5. Had Microsoft ported the SL plugin to Macs, Linux & Android, it would still be in the game. Or they offer something similar to what Xamarin is offering, to open the doors to iOS / Android. But the way it looks right now, SL is effectively another WPF with somewhat easier deployment. Which is a far cry from what WPF/E originally set out to be.

The ironic part is that by trying to regain its consumer dominance with Windows 8 and the decisions that go along with it, Microsoft is effectively killing its dominance in the LOB app space, because they only have two types of offerings for LOB devs:

a) lots of technology that's been earmarked as legacy with future support at least heavily in doubt (everything besides Metro)

b) and Metro, which is supposed to be the future but isn't suitable for LOB apps and doesn't have enough reach because it only runs on Windows 8.

Whoever made the strategic decisions that lead to this situation gets my personal "sink the Titanic" award.
Matt
Wednesday, November 09, 2011 8:14:09 AM (Central Standard Time, UTC-06:00)
Rocky is my humble opinion, I think for what presentation technologies support (UI), the tendency is to follow standard as possible. A very standard technology, which Microsoft must follow and not to modify, is the web tendency. I think you should use HTML5 base, the standard W3C web standard.
Wednesday, November 09, 2011 9:22:22 AM (Central Standard Time, UTC-06:00)
@BeyondNet, I tend to agree. I think there's a good chance that HTML 6 or 7 will be powerful enough to replace .NET.

But this implies that there is a powerful javascript runtime on the server too.

The last thing I want is to step back 20 years in time, where server and client technologies and languages were radically differnet. VB and then .NET allowed us to use one set of tools, technologies, and languages for client and server programming.

The big hole with HTML/js right now is that it doesn't offer that level of consistency and productivity. The result is that H5 _forces_ duplicate code to be written, in different languages, thus increasing cost and reducing maintainability.

I do expect that we'll see things like node.js mature, and perhaps a comparable offering built into ASP.NET or something. And once I can write business logic in js, where that exact same logic runs on the client and on the server, then I can (and almost certainly will) create something like CSLA .NET for the HTML/js world.
Wednesday, November 09, 2011 10:30:01 AM (Central Standard Time, UTC-06:00)
<blockquote cite="Matt">
The ironic part is that by trying to regain its consumer dominance with Windows 8 and the decisions that go along with it, Microsoft is effectively killing its dominance in the LOB app space, because they only have two types of offerings for LOB devs:

a) lots of technology that's been earmarked as legacy with future support at least heavily in doubt (everything besides Metro)

b) and Metro, which is supposed to be the future but isn't suitable for LOB apps and doesn't have enough reach because it only runs on Windows 8.
</blockquote>

This was well said. I know that Rocky has said he envisions a time when we'll be writing our LOB applications on the WinRT, the green side, instead of the desktop or blue side, but I don't think that will happen.

There is a reason we have a green side and a blue side and that each caters to a specific purpose: the green side is the consumer friendly side that will work across phones, tablets, and PCs. The complexity that is required by many of our LOB apps won't fit here. On the blue side, our LOB applications will be right at home, but the complexity of the environment is far from consumer friendly.

The genius of WinRT was that Microsoft recognized that you can't have a business OS also work for the consumer market, so they created essentially a mobile operating system.

Trying to make WinRT handle LOB applications would be a step backwards. Back to Matt's point, though, it looks like MSFT has fixed one problem with not having a friendly OS for the consumer market, but it looks like they're throwing us LOB developers under the bus.
brad rem
Wednesday, November 09, 2011 11:22:29 AM (Central Standard Time, UTC-06:00)
1) While being able to the same language on client and server is nice, JavaScript simply sucks, so JS on client and server wouldn't be a consistently good dev experience like Silverlight. It would be a consistently bad experience.
2) Microsoft needs to ask itself: if LOB development goes in the HTML 5 direction, why would anybody continue use the MS stack to do it? With Silverlight, there was nothing out there that offered a similar dev experience. If I'm doing HTML 5, Ruby on Rails & Groovy on Grails are both right up there with ASP.NET MVC. And being open source, there's less of a probability they can be yanked from below our feet like MS is doing with Silverlight.
Matt
Thursday, November 10, 2011 7:27:06 AM (Central Standard Time, UTC-06:00)
Why would .Net be dead? .Net is IL. Wouldn't the framework be updated to support WinRT . . . Can you clarify?

I would expect there to be dramatic changes to the framework to support WinRT as it evolves, but I do see why the language or Visual Studio should change that much. Shouldn't most of the stuff under the hood be abstracted from developers?

I agree with you on XAML. I think the next change (should) be ASP.NET and be replaced with "XAML.NET". Why write web apps using ASP and everything else using XAML?
R. Lawson
Thursday, November 10, 2011 1:20:41 PM (Central Standard Time, UTC-06:00)
I know we're talking about the client here, but aren't a lot of companies still using the web (web forms/MVC) as a primary approach for their LOB applications? I know mine is. With that in mind, aren't C# (or VB.NET) and the .NET Framework still very viable skill sets amid all these new Windows 8 client changes? And if the future of the windows application is uncertain, isn't the web approach a much safer way to move forward for businesses who don't want to create "Angry Birds" apps to sell in an online store for tablet users? Once HTML 5 is solid as a replacement for Silverlight, there won't be much benefit in writing a LOB app in Metro UI as an alternative. I say .NET with web/mvc possibly become a more important strategy and may grow in use for business apps. We're not writing .NET's eulogy or predicting its decline yet, I hope.
Dave
Thursday, November 10, 2011 2:26:11 PM (Central Standard Time, UTC-06:00)
The compelling thing about .NET back in 2000 was that WinForms and WebForms could enjoy the same data access and business layer logic - remember datasets and datareaders? I developed a 'mixed' application on that basis: WinForms for the intranet stuff and WebForms for the publicly exposed bit. I was about to migrate to WPF for the Windows part when Silverlight came along. But when I saw there wasn't a common data access approach (no datasets in Silverlight), decided to leave the whole thing alone. To me MS have thrown the LOB baby out with the bath water for the sake of appeasing consumers in the phone/tablet space (and they should have waited to tell us when there were 'metro-fiable' controls for adding to WinForms/WPF apps except that model clashes with an app store!), but I just wonder Rocky, moving forward, if one were to continue with a mixed web/Windows model i.e. ASP.NET plus a limited WinRT, what single data access technology/web service type would you implement today? Thank you.
Friday, November 11, 2011 2:40:26 PM (Central Standard Time, UTC-06:00)
Mike James at i-programmer.info wrote:

Put simply, if WP8 is WinRT based, WP7 and all its apps will be dead in the water - they will all have to be recoded and WP8 will mark a complete restart.

The death of Silverlight is also the death of WP7 and its apps, which will have to be reborn as WP8 apps. You can see why Microsoft hopes no one has noticed.

Moving to WinRT could be the biggest mistake Microsoft has ever made as, when the news sinks in, it will kill WP7 just as it is relaunched.

My comment: adoption of Win8 in Business Enterprise Environments will be very slow, much slower than it is for Win7. Silverlight is the best technology for building LOB apps and so will be for many years to come. Can we bet?
SLDeveloper
Tuesday, November 15, 2011 5:11:02 PM (Central Standard Time, UTC-06:00)
People have to accept reality, the world changed, microsoft is lagging behind, is not possible for them to impose a "propietary standard", and is not possible that Microsoft could implement a techonoloy for all the devices that exist now.

In this new world microsoft is weak, don't be attached to the weak because risk of defeat is high. Use what is available but is time to start to open the door for the future, a future where Microsoft is and their propietary technologies are legacy and the standard is powerful enough for 99% of the applications.

When a capable language is implemented in the browser that will be the end of microsoft. Google knows that and will push "Dart" with much energy. Why to spend money in costly licences for what is standard, capable and free?
rodin
Tuesday, November 15, 2011 10:47:07 PM (Central Standard Time, UTC-06:00)
Great article. even as a WPF, Silverlight, ASP.NET MVC developer I have no issue with these changes going forward.

My only concern is if we keep on changing the model and as you say takes V3 etc to reach the level that we want then are we losing out on new innovation/features as they are spending resources re-inventing the wheel.
Justin King
Thursday, November 17, 2011 4:55:13 PM (Central Standard Time, UTC-06:00)
It doesn't inspire confidence when the previous technology goes on life support and the new technology isn't toilet trained yet. Seems like getting ahead of themselves.
Thursday, December 01, 2011 8:30:17 AM (Central Standard Time, UTC-06:00)
...Or Microsoft could throw away WinRT just as well in the coming four years until 2016 and come up with a completely different new technology...

I've the feeling that I'm working only with dead technologies. Our transport and logistics application is still mostly Windows Forms. I've moved some parts of it to WPF. Should I go on moving the rest? WPF doesn't seem to have a future.

I've written an application for our Windows CE 6.0 barcode scanners - with Visual Studio 2008. Because 2010 does not support Smart Device Development! What a joke. Is Windows CE dead?

I could go on. Every few years I can throw away what I have, and the new technology has got fewer features than the old one. This is not "change". This is stupid. I've spend a lot of time to write a simple SplitButton Control for our toolbars in WPF. I see SplitButtons in the VS 2010 UI in front of me, but I can't use them in my own applications. Have I missed something?

Four years is enough time to replace WinRT with a brand new something. "Is WinRT dead?" - will we ask ourselves this in a few years?
Christian
Thursday, December 01, 2011 12:24:16 PM (Central Standard Time, UTC-06:00)
Win32, MFC, Windows Forms, WPF, Silverlight, WinRT - the people at Microsoft seem to like writing Button Controls, Listboxes and Checkboxes again and again. This must be a great fun. "Let's create a new UI Framework. I haven't written a Button Control for a long time." – "Yes, but the DataGrid comes later. That doesn’t make so much fun."
Christian
Friday, December 09, 2011 3:04:36 PM (Central Standard Time, UTC-06:00)
wait... you say that everything written on Win32 is "dead"?

BUT WinRT is basically a wrapper for Win32, a layer ontop of it per sae.

So is WinRT itself dead?!

;)

NOTHING EVER DIES!!
John Mitas
Friday, December 09, 2011 3:13:20 PM (Central Standard Time, UTC-06:00)
The idea that WinRT is just a wrapper over Win32 is a common misconception, but it is a misconception.

There are parts of Windows that are common between WinRT and Win32, and they've been factored into something now called "common kernel services". Beyond that, based on what Microsoft speakers said at //build/, WinRT is independent from Win32.
Friday, December 09, 2011 3:38:24 PM (Central Standard Time, UTC-06:00)
Interesting reply from @jmorrill on twitter to your comment ... "i guess he hasn't put the WinRT dll's through a disassembler yet ..."

He suggests that there is more in common than you think and that WinRT really is more of a layer ontop of Win32

Have you actually done alot of disassembling ?




John Mitas
Friday, December 09, 2011 3:49:08 PM (Central Standard Time, UTC-06:00)
And another point highlighted by some twitter followers, every kernel method goes thru Win32 dlls ... hows that for independence of WinRT from Win32 :)
John Mitas
Comments are closed.