Premature cries of Silverlight / WPF skill loss. Windows 8 supports all programming models

UPDATE: The BUILD keynote cleared up a LOT of these concerns https://davidburela.wordpress.com/2011/09/14/build-keynote-day-1metro-experience-with-jupiter-xaml-and-html5js/

Summary

  • Windows 8 supports applications being built in C# / XAML / VB.Net / C++ / HTML+JS.
  • The new UI framework ‘Jupiter’ allows applications to be written in your language of choice. This is similar to how the .Net framework allowed people to code against the framework in their language of choice.
  • Jupiter seems to be a ‘Next generation’ XAML based framework
  • I’m more excited about the new possibilities coming in the new Jupiter XAML programming model than the misconception that HTML+JS is the only way to create apps.

History

In the last few weeks, the internet has been in frenzy over the newly released demo video of Windows 8. In the video there is only mention of the new “Immersive applications” being created in a mixture of HTML + Javascript. People took this as more evidence that WPF & Silverlight are dead. Which hasn’t helped after the lack of attention which caused events like Silverlight Firestarter to be needed, or the http://FixWPF.org movement. It also doesn’t help when Microsoft have remained tight lipped even after an outcry from developers. The famous thread on the Silverlight forums has seen over 13,000,000 views. Which is more than the forums usually see in a single month.

The windows 8 UI demo video

Digging into the Windows 8 leak

A few people have been digging into the Windows 8 Milestone 3 leak and peeking into the UI framework and .dlls that exist. The most vocal of these have been @JoseFajardo and people in this forum thread http://forums.mydigitallife.info/threads/26404-Windows-8-(7955)-Findings-in-M3-Leak

What people have found so far is that while yes it is possible to create applications using HTML + Javascript, there is a whole new framework laying underneath that can be programmed against by almost any language / framework.

The first piece of the puzzle comes from the new application model for creating applications. There are a number of codenames here that need to be sorted out

  • DirectUI: The underlying framework that creates, draws the visual elements on the screen.
  • Jupiter: The new packaging format of applications on Windows 8. Allows apps to be written in language of choice.
  • Immersive applications: Current theory is that these are apps that execute within the ‘new shell’ in windows 8. And are aware of being split paned and resized. Like was shown with the RSS feed reader.

Direct UI

Direct UI has been around since Windows Vista days. Previous is seemed to be focused around UI basics for the OS such as theming app windows in the ‘new vista style’ vs. classic theming in WinXP. http://blog.vistastylebuilder.com/?tag=directui

Now it seems that Direct UI is being overhauled to have additional functionality to load XAML applications, new animations, etc.

Xaml loader

330fv43[1]
http://i54.tinypic.com/330fv43.png
http://forums.mydigitallife.info/threads/26357-Findings-in-M3-Leak-discussion-and-questions?p=421391&highlight=silverlight#post421391

Evidence of new animation properties

http://pastebin.com/S1XtkQid

Jupiter

interesting rumor fact : WP8 rumored to be codenamed Apollo, and Apollo is the son of Jupiter 🙂 Jupiter being the new UI framework of Win8
http://twitter.com/#!/josefajardo/status/78826337250451457

…Jupiter is shaping up to be a very very lean SL/WPF implementation
http://twitter.com/#!/josefajardo/status/79423110755008512

…your SL/WPF skills will be invaluable for DirectUI apps, and you get a new framework that is seriously lean!!!
http://twitter.com/#!/josefajardo/status/79425349938712577

DirectUI.dll is basically Silverlight (agcore.dll) ported to Windows/WinRT
http://forums.mydigitallife.info/threads/26404-Windows-8-(7955)-Findings-in-M3-Leak?p=441627#post441627

Jose Fajardo has been a great source of information on Windows 8 leaks. From information he has dug up, as well as information on the forums, it seems that the new Jupiter programming API is a mashup between WPF & Silverlight.

As far as I can see, Jupiter is not Silverlight nor WPF, its another kind of framework that kinda similar or compatible to Silverlight/WPF code.
So Sinofsky is right, that ‘Silverlight’, as we know it, is still a Browser/Desktop thing.
What he didn’t say is, the ‘Jupiter’ framework will enable you to leverage your Silverlight/.NET skills to write Immersive (or desktop) applications in XAML/C#/VB/C++, its very very similar, but not exactly the same thing.
The situation is similar to the relationship of Silverlight and WPF and Silverlight for Phone, you need to create different project in VS, then you can write very similar UI/code, even sharing most of your portable code in a common library, but the underlying technology are still very different.

https://channel9.msdn.com/Forums/Coffeehouse/Jupiter/e7960a6237024c1598639efc00d8e394

While the new Jupiter programming model may not be a direct continuation of WPF or Silverlight it does seem to have a lot of code from both technologies. Jupiter instead seems to be a ‘Next generation’ XAML based framework. A framework that can be targeted against by all main current languages used by the typical .Net developer (C#, HTML, etc)

*speculation* This could be because of the calls from the development community to make WPF & Silverlight more aligned. Perhaps we’ll see an updated ‘Silverlight’ framework when Windows Phone 8 is released that is compatible with Jupiter.

Creating applications with Jupiter

As further evidence that Jupiter applications can be created with your language of choice, and that it has roots in Silverlight, here are some examples of how to create applications.

C# & XAML

Here is an example of using C# to invoke a new Jupiter based application. The really interesting thing to notice here is that the loading screen has the iconic Silverlight loading animation!
4437[1]
http://xs.to/photo/4437
http://forums.mydigitallife.info/threads/26404-Windows-8-(7955)-Findings-in-M3-Leak?p=444628&viewfull=1#post444628

Here is a second example where they were able to get XAML content to load within a Jupiter application
5196[1]
http://c592786.r86.cf2.rackcdn.com/anonym/2011/06/11/5196.png
http://forums.mydigitallife.info/threads/26404-Windows-8-(7955)-Findings-in-M3-Leak?p=445016&viewfull=1#post445016

*update* Naive User was able to get simple databinding working
9126[1]
http://c592786.r86.cf2.rackcdn.com/anonym/2011/06/14/9126.png
http://forums.mydigitallife.info/threads/26404-Windows-8-(7955)-Findings-in-M3-Leak?p=446590&viewfull=1#post446590

C++

Example of an application being created in C++ with a single call to CreateImmersiveWindowFunc
3852[1]
http://xs.to/photo/3852
http://forums.mydigitallife.info/threads/26404-Windows-8-(7955)-Findings-in-M3-Leak?p=444200&viewfull=1#post444200

HTML + Javascript

There are some initial attempts at getting HTML working with the new frameworks. The apps and manifests have been created, but a few more hooks may be required to get a fully working version
http://forums.mydigitallife.info/threads/26404-Windows-8-(7955)-Findings-in-M3-Leak?p=446552&viewfull=1#post446552

There are mentions that you can hooks into Direct UI through the COM hooks from Javascript. And also that you may be able to use Direct UI XAML + Javascript. Similar to how Silverlight was done in the original Silverlight version 1.

Immersive applications

There is some confusion over the distinction between a “Jupiter app” and an “Immersive app”. Immersive apps require a call to CreateImmersiveWindow and can make calls to the new immersive namespace

6941[1]
http://c592786.r86.cf2.rackcdn.com/anonym/2011/06/13/6941.PNG

Immersive applications are ones that were shown to live inside of the new Windows 8 shell. Examples of functions that an immersive app can do can be seen with the RSS reader app. When it was docked and resized, it knew to display its data in a different format.

  • Classic / Jupiter applications will run in the ‘classic windows’ desktop view that was seen when they fired up excel
  • Immersive applications will be embedded within the new shell

Will this work for existing applications?

There is evidence that existing applications can be wrapped up in the new packaging format.

WindowsStore is basically written in C++ and leverages Windows Runtime. HTML5/JavaScript is just a (very very) thin layer for the interface
http://forums.mydigitallife.info/threads/26404-Windows-8-(7955)-Findings-in-M3-Leak?p=442463&viewfull=1#post442463

So while existing applications may not run with the new Direct UI framework, it seems they will still be able to be packaged and distributed through the Windows 8 App store. This was discovered by Long Zheng a few months ago.

The AppX format is universal enough so it appears to work for everything from native Win32 applications to framework-based applications (WPF, Silverlight) and even *gasp* web applications. Games are also supported.
http://www.istartedsomething.com/20110405/first-look-at-the-future-of-application-deployment-on-windows-8-appx/

Conclusion

While Microsoft only showed off the HTML hooks into Jupiter, I am a LOT more excited about the upcoming XAML based framework.

If you are an existing WPF, Silverlight or Windows Phone 7 developer, it seems that your XAML based skills will carry across fine to the new development framework on Windows 8.

My thoughts are that Microsoft announced that applications can be created in HTML in the same way that they announced it in WindowsXP with active desktop, and then again in Vista with “HTML based sidebar gadgets”. It was a way of saying “hey you can use your existing web skills to create applications on Windows 8.
And that Microsoft plans on unveiling the new Jupiter SL/WPF hybrid framework for all of the “Real developers” at BUILD in 3 months.

By David Burela

53 thoughts on “Premature cries of Silverlight / WPF skill loss. Windows 8 supports all programming models

  1. All this begs the question, why not just properly fix SL and WPF – all along the issue has been the perf of the UI stack and not the .NET fx. So, rather than creating yet another, albeit similar, framework why not just update SL/WPF without making them backward compatible. Over the last three or so years we’ve seen dramatic perf gains in the HTML+js stack, I believe similar gains can be had with WPF/SL+.NET stacks – remember, ultimately both these stacks are “managed”. And so, rather than any technical limitations, the problem seems to be that we don’t have a google equivalent to show MS the way forward for WPF/SL.. shame!

  2. Thank you for the first sensible, sane article I’ve read on this subject. Microsoft is not going to simply abandon the developer base they have built over the years. This panicked frenzy is being driven purely by people who hate any technology with the Microsoft label on it, and insecure developers who spend more time reading forums than they do developing.

    • I think key speakers at Microsoft share in the blame, as they chose to speak in such an abstract way that allows speculation to get out of control. Microsoft should realize this is the type of thing that does not help its brand. I understand the secrecy around everything as to not give too much information to the competition. The secrecy however shouldn’t have been done at the expense of developers.

      • So true. Microsoft is responsible for this snafu. Having worked with every version of Windows since .. before Windows even, I’ve seen how quickly Microsoft can throw out an entire programming paradigm, and basically force developers to buy – and learn – a whole new set of tools. Pardon me if I’m skeptical, but I choose to hold the applause until MS is a bit more forthright and transparent with respect to their next Big Thing. A lot of where they’re going, as always, is driven by the folks in Marketing, who tell them they need a way to squeeze cash from users who are reluctant to upgrade frequently (hence, the Cloud, aka “MainFrame” computing). Yes, there is nothing new under the sun. They just label it as a “Immersive User Experience” and we all line up to pay for it. This particular lamb refuses to go rushing headlong up to their alter yet again. Eventually, cooler heads and compromise will prevail, and we’ll have a better picture of how much of our previous investments will get thrown out with the bathwater. Note: Immersive – “noting or pertaining to digital technology or images that deeply involve one’s senses and may create an altered mental state”… They got that right.

  3. Hmmm… my memory is flooding mah brain with “remember…” moments… Before I left the team etc I remember hearing the windev teams wanted to put a 3rd Animation framework on the market. At first we laughed and ignored it with “oh great, what well need…a third option to confuse the already converted..”

    Now thinking on it more, me thinks its this mystery framework coming to haunt us all. Now, i’m thinking this concept has existed but was already ported across to the XAML way of life around Windows 7 timelines (memory is sketchy on this one). If that’s correct then i think this is an official code-reset on WPF/Silverlight but with reduced capabilities (ie less the bloat).

    Question is how mature is it compared to the two? it’s all well and good to throw a FILE->NEW->UX Platform onto the table, but if it lacks parity with the existing? what have we gained?….performance?…i’ll wait until i see how the fundametals found in most photoshop effects filters gets applied here and performs under what i call “developer-art load”….lots of glows, dropshadows and crazy ass animations..

    • Apologies, thought it was a troll posing as you. Feel free to clarify the bits that I got wrong. Explain what your viewpoint is on your discoveries.
      The distinction between DirectUI & Jupiter may be off, I pieced together what I could from different threads.

      • 1. besides those already mentioned by others (DirectUI is NOT dui70), here is an important one, the pic http://xs.to/photo/3852 and related code has nothing to do with Jupiter as far as I can see.
        2, currently all clues about Jupiter point to DirectUI, the AppX ‘packaging format’ is not related to this codename as far as I can see. (MJF may said sth but she is not a techie)
        3, its already pointed out by bored_neo that DirectUI (Jupiter) may not be able to be called from web applications. I think he is right.
        4, DirectUI can definitely be used to write ‘immersive applications’, its just me dont know how to do that yet.

      • and, my web application demo may has problems when you launch it from applications folder directly, but the app itself is already ‘fully working’. actually you can’t launch any immersive apps from there, even glcnd the pdf reader, but glcnd itself is fully working.

  4. While I like those speculations much more than the the “Silverlight is dead” , it’s still speculation. I also tend to believe that we get another XAML based platform in W8 but we definitively don’t know till /build//

    Hope the best!!!

  5. Why not fix WPF?

    I suspect because its architecturally flawed.

    But now a new technology (WinC++) has come along that allows high performance C++ code to be used EASILY by .NET (and other frameworks) so MS had the opportunity to “start over” with the WPF/SL idea …and do it right.

    By doing it right, I mean “Make it perform as smoothly/responsively as customers expect in the iPhone/iPad age and not burn battery life”.

    WPF’s architectural mistakes meant we were NEVER going to get great performance out of it, and trying to re-architect would be a nightmare considering Microsoft’s commitment to backwards compatibility . Simply: It would have been too expensive to “fix” WPF, so instead it will just be patched up and put out to pasture.

    So this meme about WPF being dead could end up being both true and false: WPFs great ideas live on through DirectUI, but WPF is a dead-end in terms of future investment.

    *Assuming* DirectUI supports data binding, visual templates, styles, Blend etc (i.e. all the best of WPF) then in my opinion MS are doing the right thing.

  6. Re: ‘Direct UI’:

    Something called ‘DirectUI’ has been around since at least Windows XP (where it was used in parts of Windows Explorer). It’s also used in the Windows Live suite, though who knows if the implementations are compatible.

    NaiveUser believes that the new ‘Direct UI’ is not directly related to that internal library, however.

    Talk of a new framework excites me, but I wonder about downlevel support. I’m happy not to support XP, but I hope Direct UI makes its way to Vista/7, at least (IE10 not supporting Vista is a bit of a worry).

    A bit unrelated, but bored_neo reports that GDI+ is accelerated with Direct2D now 🙂 Should speed things up considerably. (http://forums.mydigitallife.info/threads/26404-Windows-8-(7955)-Findings-in-M3-Leak?p=445800&viewfull=1#post445800)

  7. Pretty much every framework, Silverlight, WPF, IE9, GDI+, and all the open source x-platform offerings are “hardware accelerated” nowadays. But that doesn’t mean they’re all equally performant, any more than ten cars all being built on “internal combustion” makes them so. The reality is that many people, including a lot of people within Microsoft, found the performance of UI frameworks built on managed runtimes to be inadequate, particularly when faced with a requirement to have applications that can run on low-speed, low-powered devices.

    • Another bogus claim of performance problems in high level languages. The same tired claim was made over 60 years ago to disparage Fortran versus Assembler. Note the performance of Android devices is hardly inadequate despite using Java for most applications. In any case the main problems of software have always been correctness, reliability and maintainability not performance.

      • You do realize that the Android tools compile APKs down to a native format. The Dalvik runtime does not run standard Java bytecode.

  8. […] Premature cries of Silverlight / WPF skill loss. Windows 8 supports all programming models “I’m more excited about the new possibilities coming in the new Jupiter XAML programming model than the misconception that HTML+JS is the only way to create apps.”   […]

  9. Did you ever develop some code under huge pressure? Folks telling you this is the ship date, no room for delay. And at the end of all that, you look at what you built and think: “this is some great stuff, wish I could take the good, refactor it, and create a solid set of classes that have some performance optimization”.

    I have been amazed at the time pressure placed on the Silverlight dev teams… I understand why based on market conditions. Makes me wonder if maybe they are feeling like I do sometimes as a developer.

    This is a great article. I admit I haven’t been following the 8 stuff very closely, but this is the most rational view of whats coming that I have seen.

    When you go to make a tackle, you look at the numbers. Not the eyes, not the hand waving. Hard to make a fake with the trunk of the body 🙂

  10. @Mike: Silverlight Dev teams aren’t exactly under pressure. In that they often finish months ahead of MIX and are basically working on the next iteration while they wait for tooling etc to catchup. The team that’s probably the most under pressure and it probably shows is Expression teams. They haven’t had a chance to do a healthy retrospective in terms of market discovery. It was often a case of others & myself having to somehow pull some favours / strings etc

    The Silverlight teams when I was on campus appeared to have a healthy amount of breathing space between releases and its why Silverlight is fairly mature in that respect. Had they been under the pump constantly without breaks you’d see a lot of bugs being exposed in a plugin (which is an immediate death sentence)

    The team are shunted to the left simply because they were successful at what they set out to do. If Microsoft as a company fully got behind the plugin again (when we first started we had huge runs on the board, now its lack luster) then this would be an evolutionary thing not a retraction.

    • Thanks for the great comments !!
      Sometimes in the early morning when I have mix coffee, geekness, and optimism I get really excited. So here’s the my thought thread of the day 🙂
      * I see Steve Balmer’s greatest strength as business (he organized Microsoft into well defined businesses)
      * One of these businesses is Office
      * Businesses try to maximize profits and revenue
      * Office wants to run everywhere
      * This is the main business that benefits directly from Silverlight (office viewers on Skydrive)
      * Skydrive was ported to HTML5/JavaScript so it can run “everywhere”
      * WPF/Silverligth/Xaml/DataBinding goodness has been moved from dev tools into the os
      groups: win 8 (Jupiter) and his son win phone 8 (Apollo)
      * Office guys build cool stuff on Silverlight
      * Office guys know what the minimum required core is to make office run
      * Office guys tell the os guys to build this minimum core, and make it run fast, and fix the issues they’ve identified.
      * win phone 8 (Apollo) guys are also told to make this core run on Android (MS gets a cut of each android anyway)
      * If Office can run on all MS platforms and Android, that either
      – puts enough pressure on Apple to support the core DirectUI
      – makes iOS less attractive
      * It takes a little while to get this plan to unfold, so you talk about HTML5 and other futures / standards to buy time

      I’d be curious what you think of this as an insider 🙂

      • *deep breathe*

        RE: Steve Balmer : His greatest strength is he produces fear. Ever sat in a review of the business with that bald headed freak and come up short on your ideas/metrics etc. He’ll tear your head off. He’s a bad bad bad man Jerry…bad man..

        RE: Office. Guys like Stephen Elop and the people below him keep Office alive. Office is actually run by some intelligent folks with nice big yummy budgets. Windows team and office teams are titans.

        RE: Silverlight Benefits (aka Monetization). Silverlights sole existence was to push Database sales, we at the time betted big that most SL solutions would be CRUD driven (ie why you see Lighthouse, .NET RIA Services etc). Office had nothing to do with it – we only approached them at the time to get a technical dependency on Silverlight to help push ubiquity stats up.

        RE: Office wants to run everywhere. Office *HAS* to run everywhere. The cloud is the big push, and moving office portfolio to leverage the cloud is basically your draw card. At the moment convincing enterprise to keep anything online (especially with LulzSec entities out there) is a huge psychological battle around privacy and control. Pushing office assets into the cloud is what in advertising terms is called “Pester Power”. The more people start using it for mundane tasks the more over time they pester IT Directors etc to give it more consideration. This is how you seed an enterprise audience and win. Ignore the Decision Makers, focus on the lower levels (coal face) and start establishing habitual usage.

        RE: Skydrive / HTML Ports. I doubt “everywhere” factored into the conversation. Windows team have dominated DevDiv big time so the call to prop Internet Explorer 9 and the future of OS (HTML5) is important. It can hide behind the “it just works” mentality but in reality its more a product positioning tactic then a underlying need to keep platform usage universal.

        RE: Office tells. Office team tell nothing and do nothing. That code base is around 15+ years old and gets barely touched really. Office Ribbon was really just a veneer on top of old code, and now its just a case of refining the UI but in the end the code base is slowly being re-factored over time. They take queues from Windows team not the other way around. Especially since Steve Sinofsky used to run that side of the business prior to Windows.

        RE: Office Universal. Negative. in fact you definitely don’t want this. Talk to the Mac Business Unit about making Office equally powerful on competitive platforms and you’ll get nervous looks. Office will provide nodes that work universally but their objective is to provide taste tests for you to socket back to Windows. Now that the DOJ has taken the handcuffs off Windows teams, don’t be surprised if the next iteration of Windows comes with Office baked inside the platform itself. In Windows Vista days we were going to launch a campaign called LOVE (Live, Office, Vista Exchange). The idea was to give Office away part of Windows Vista. Consent Decree killed that idea fast.

  11. Wow, as a Windows dev working on a WPF app but intensely concerned about/interested in Windows 8, all this is very fascinating. If I can take the WPF app I’m working on and turn it into an immersive app without too much effort, I’ll be the first to give Microsoft a huge pat on the back.

  12. This is just another attempt at “Windows Everywhere”, as envisioned by The Great One. Another iteration, a jab, a sigh, a retraction, a restatement, a retry and then Windows 9. You all worry about it if you want to. I know the devil with whom I dance. HTML5 + Javascript? Please. Quote me now as saying that is one more skunky layer on a bug-ridden cake. MS needs to fix the problems with their foundation technologies and build on that. All else is folly. You youngsters who talk about performance need to go back and run an old DOS program. The Space Station runs just fine on 386 computers at 20Mhz, but it takes a state of the art computer to get Windows to boot in less than 2 minutes. Too many layers always causes the cake to fall. Unfortunately, most so-called developers nowadays don’t have clue-one about how to write efficient code that makes the machine happy. That’s how we get the bloatware we’ve got today. On the other hand, identifying and correcting skank code is what paid for my entire lifestyle. Y’all keep writing junk, and I’ll keep charging $200 / hour to fix it. Works for me.

  13. Are these WinRT/Metro things really gonna be fast/performant? I initially thought they might but a blog with some dissassembly from IanG suggests this may not be the case. He went as far to suggest it could be slower than the .NET we know today. In Build presentations there were slides with big flow charts – And did you see the task manager on those metro apps? 40 MB for hello world level stuff? I think even bloated stuff can be made fake-fast with memory + app suspend but what about cold-starts and scenarios with high frequency calls to kernel/drivers?

Leave a comment