Windows 8 developers are shunning WinJS

Windows 8 developers are shunning WinJS

Summary: With Windows 8, Microsoft made it possible for developers to build apps using HTML and JavaScript. Turns out, no one is really doing that...

SHARE:
TOPICS: Windows
58

One of the stranger decisions that Microsoft made when developing Windows 8 was that the new model of building apps was to be based not on .NET, but rather on a new development technology called Windows Runtime (WinRT).

The real reason why this decision was made has never been officially confirmed. A theory held by common folk is that Steven Sinofsky had an axe to grind against .NET having blamed it for "that whole Vista thing".Personally, that's a theory I subscribe to.

.NET is a wonderful set of technologies and one of the best things Microsoft has ever come up with. Why they would ditch a decade's worth of refinement and replace it with something new is baffling at best.

Anyway, the very much perceived advantage that WinRT gives the world over .NET is that it make it possible to build native Windows Store apps in HTML and JavaScript, rather than insisting that developers know .NET.

The apparent rationale of this is that it was easier to poach non-Microsoft developers if you based the native tooling on open standards, rather than a proprietary technology. (Never mind that iOS or Android don't have this problem. If there's money in it, developers will learn how to use your tooling regardless how bizarre.)

"Hey, come and build apps for Windows 8. You know HTML, right? You can build apps with it over here!"

One question that newcomers to Windows Store apps have is whether to use XAML or WinJS. My advice would be to go with the flow and go with what everyone else uses. So what does everyone else use?

Top 25 apps

Some time ago I wrote a little tool that would scan the apps installed on a Windows 8 machine and report back on whether they were written in C#/XAML.

If you're new to XAML, that is Microsoft's proprietary native app tooling. Based on Windows Presentation Framework from the Longhorn days, it's also used by Silverlight and hence Windows Phone 7's API. With Windows 8 and Windows Phone 8, XAML was rewritten, although to developers it's transparent whether you're using the old .NET WPF/Silverlight or the new Windows 8 XAML.

Windows Store apps do not declare which technology they are written in. The tool I wrote (which you can find here) looks at what's installed and analyses each app. Apps are reported as being written in XAML, WinJS, or C++. (C++ is the final way of building apps, but it's essentially the preserve of games developers.)

Running this tool against the top 25 apps available from the UK Windows Store, you get some rather startling results.

Position App Technology
1 Facebook Xaml
2 Google Xaml
3 TV Catchup Xaml
4 Microsoft Solitaire Collection WinJS
5 Monsters University Xaml
6 Netflx Xaml
7 Wreck-it Ralph Xaml
8 Special Enquiry Detail: Engaged to Kill C++
9 Hill Climb Racing Xaml
10 Toy Story: Smash It Xaml
11 Discpicable Me: Minion Rush Xaml
12 Twitter Xaml
13 Viber - Free Phone Calls and Text WinJS
14 Avengers Initiatives Xaml
15 Drift Mania: Street Outlaws Lite Xaml
16 Block World Xaml
17 Amazon Xaml
18 Cut The Rope WinJS
19 Where's My Mickey? XL Xaml
20 Jetpack Joyride C++
21 Dropbox Xaml
22 YouTube Bookmarks Xaml
23 Where's My Water? Xaml
24 Adobe Photoshop Express Xaml
25 Hangman Pro Xaml

Or...

Display technology for top 25 apps in the Windows Store

In other words, the world plus dog is not that interested in WinJS. If you're building apps for Windows 8, you're most likely doing so in XAML.

Microsoft's own apps

Where this gets more bizarre is if you look at Microsoft's own apps, the results are completely flipped around.

App Technology
Bing Finance WinJS
Bing Food and Drink WinJS
Bing Health and Fitness WinJS
Bing Maps Xaml
Bing News WinJS
Bing Sports WinJS
Bing Travel WinJS
Bing Weather WinJS
Camera Xaml
Mail, Calendar, Contacts WinJS
Reader Xaml
Skype WinJS
Store WinJS
Xbox Live WinJS
Zune Music WinJS
Zune Video WinJS

Or...

Display technology for the built-in Windows 8.1 apps

You can imagine here a diktat coming down from Sinofsky's executive office insisting that the built-in stuff for Windows 8 must be based on this new fangled WinJS. Talk about eating your own dog food...

Remember how bad the first version of Mail was for Windows 8? I'm not saying this had anything to do with the decision to base it on WinJS, but you do have to wonder.

Note as well that in the top 25 apps, the two WinJS examples are Microsoft Solitaire Collection, and Cut The Rope. Cut The Rope's developers were a sort of "launch partner" for IE10, so the decision to go with WinJS may have been informed from that.

Conclusion

In conclusion, if someone was asking me as an advisor as to whether I'd build Windows Store apps in WinJS, I'd have to say "uh, no".

When .NET was introduced it was possible to build apps in C# or Visual Basic .NET. The world plus dog decided C# was the way to go right from the start, and VB.NET has always been the bastard stepchild of the .NET development world. It now looks like WinJS is the bastard stepchild of the Windows Store app development world.

Never try and go against the flow. If most of your development peers are choosing XAML, you should too.

What do you think? Post a comment, or talk to me on Twitter: @mbrit.

Topic: Windows

Kick off your day with ZDNet's daily email newsletter. It's the freshest tech news and opinion, served hot. Get it.

Talkback

58 comments
Log in or register to join the discussion
  • Microsoft

    has basically told 10,000 .Net developers to piss off. And now they can't understand why no one is writing apps for their crappy tablet.
    Retterdyne
    • They have?

      Where? Last I looked, .NET is still the predominant app platform in Windows and Windows Phone and is VERY well supported by Microsoft's own Dev tools as well as those if many partners and vendors.
      bitcrazed
      • that's a belief

        reasoning is not going to change it since facts that contradict it are usually ignored
        vpupkin
      • "Where?" There's no .Net in the Metro/Modern UI stack.

        It's replaced by WinRT.

        http://s29.postimg.org/aqcx9siw7/image_thumb3_2.png
        Retterdyne
        • That's not correct

          .NET is absolutely in the metro/modern app stack. WinRT is completely orthogonal to .NET.

          You can any .NET language (C#, VB .NET, etc) to write a modern app, and have full access to all WinRT APIs. That's sort of the point of WinRT... No more need to write wrappers around Win32 shell APIs or ship things like the "Windows API CodeBack" that p/invokes them.

          WinRT is a huge win for .NET developers.
          BrandonLive
          • Gah typos

            They really need an edit function here.

            "You can *use* any .NET language"

            and "Windows API CodePack"
            BrandonLive
          • Yes you can, but in a crippled way

            Before I lost interest in WinRT, I tried that. .NET is a wrapper around COM with all the limitations of COM and yet another set of limitations induced by the requirement of compatibility with JavaScript. I felt both confused and insulted.
            gak1
          • Again, not correct

            .NET is not a wrapper around COM (okay, you *can* wrap COM in .NET, but .NET itself is not). What "limitations" are you referring to? .NET is not "compatible" with JavaScript in any particular way. It does seem you're confused, but you've no need to be insulted.
            BrandonLive
      • .NET is cross-platform

        .NET is not only predominant in Windows world. It is also extensively used for many in Android and iOS apps/games through Xamarin tools and Unity 3D...
        Antão Almada
        • Xamarin and Unity 3D apps/games lists

          Visit the lists at
          http://xamarin.com/apps/all/
          http://unity3d.com/gallery/made-with-unity/game-list
          and draw your conclusions.
          Antão Almada
        • You are dreaming right?

          "extensively used for many in Android and iOS apps/games through Xamarin tools and Unity 3D"

          No one outside of window will going to use Xamarin tools. Unless you contracted by microsoft to make app for Android and iOS
          korseypig
  • Couldn't this simply be an adoption curve effect?

    WinJS is new, XAML is known. Why aren't you assuming this is a result of a normal adoption curve for new development technology?
    daboochmeister
    • Don't think so

      WinJS is just extensibility given to standard Javascript, something almost all developers know and which is considerably older than C#. No, what this reflects is developers using the right tool for the right job. That's also why the top apps in Apple's app store, are Objective C, and not crappy html wrappers.
      Mac_PC_FenceSitter
      • c#

        Aren't some of the top apps in Apple's app store c#?
        Nick Portelli
        • Nope.

          Last I read Apple doesn't allow interpreters.
          jessepollard
          • Yes - Xamarin / Mono allow iOS dev with C#

            Apple don't allow interpreters, but Xamarin has a cross-compile solution to allow developers to code in C# for iOS using Visual Studio, with (I believe) Mono libraries emulating .NET
            CageySee
        • Yes

          There are many apps in Apple's App Store written in C#, for example WebMD and rdio both are. Of course, most are written in Objective C.
          sjmarcus
      • Well...

        WinJS is just a library of JS/CSS helpers and controls, just like jQuery / KnockoutJS / etc. Presumably what we're really talking about here are just HTML / JavaScript apps.

        On iOS, HTML/JS apps are actively hindered by Apple. That's why people write native apps there. On Windows 8, HTML/JS apps are first-class citizens. I wrote a good explanation of this a while back here:
        http://brandonlive.com/2013/07/10/stop-saying-mobile-web-apps-are-slow/

        There have been a lot of myths and misconceptions perpetuated about JS apps. They're often higher performance / more responsive than C# + XAML apps.

        Yesterday I posted an in-depth rundown of the Windows platform options. You may be interested in that as well:
        http://brandonlive.com/2014/01/22/building-great-winapps-platforms-a-plenty/
        BrandonLive
  • I'm shocked to learn about MS Win 8 apps

    'Remember how bad the first version of Mail was for Windows 8? I'm not saying this had anything to do with the decision to base it on WinJS, but you do have to wonder.'

    Actually that would explain why it took MS so long to develop these apps' features. Developing in C# results in your development time being a fraction of the time it takes to do the same job in HTML / JavaScript. In fact I think it would have been better if MS tried to convinced developers new to the MS ecosystem, to learn C#, and develop in that language (similar to what Apple does with new developers in its own ecosystem with Objective C), than to do so in HTML / JavaScript, as it would make them far more efficient. I'm shocked that so many MS Win 8 apps are developed in HTML / JavaScript. This is a very inefficient way to do programming, when much more economical ways are available..
    P. Douglas
    • There is a BIG advantage to HTML and javascript though.

      It will run on anything, not just Microsoft platforms...
      jessepollard