Thursday, May 7, 2015

Desktop Web App Development For Windows

Microsoft is making Windows 10 a highly desirable place for developers of Open Web Apps and Chrome Apps to port to Windows Universal Apps. In fact, Windows 10 is going to provide the most functional set of low-level capabilities available in a "packaged" app. To get less restricted functionality one would have to turn to nw.js (formerly called Node Web Kit) or Electron (formerly called Atom Shell). The Windows Universal App API available in Windows 10 (and in large measure, Windows 8.1 [Windows 8 was significantly weaker]) puts the Chrome App's API and even Firefox OS's API to shame.

I could write a really long post about the failings of the Chrome App API, but why bother; Google seems to have stopped listening to anyone.

Below is a guide to resources for doing Windows Web App Development.

General (BUILD 2015, why you might care about this platform):


I was present at the first Window NT developer conference, the Windows 95 launch, the (now infamous) "Cairo" conference and numerous other such events. The Build 2015 event was the most exciting (and I was attending this one remotely).

Day One Keynote Presentation | Build 2015 | Channel 9 (Long but fun.)

Day 2 Keynote Presentation | Build 2015 | Channel 9 (Long. First half hour is boring... then it gets fun.)

Getting started with Windows 10 Desktop Web Apps:


They provide a free book, geared at Windows 8.1, works well enough for Windows 10.
Free ebook: Programming Windows Store Apps with HTML, CSS, and JavaScript, Second Edition
(Note to Google, this is called tutorial documentation... it is significantly more helpful than 3 minute fluffy videos.)

API Reference:


Windows API reference for Windows Runtime apps - Windows app development
(Note to Google, this is what a real API looks like.)

Overview Videos:


JavaScript Frameworks in Your Apps and Sites from WinJS and Beyond | Build 2015 | Channel 9
Pay particular attention to the alternate frameworks in this one. WinJS is rather fat, not really an issue on the desktop, but if you need to go lower-end, alternatives may be desirable. If you have existing code, the various projects can help, or at least give you CSS to help with styling.

"Project Spartan": Introducing the New Browser and Web App Platform for Windows 10 | Build 2015 | Channel 9
The Spartan browser will be the driver behind Windows 10 Desktop Web Apps... it is likely to be competitive with Chrome in standards implementation by the time it releases (it is getting close already, passing Chrome in ES6 features present, lags in HTML5 though).

Hosted Web Apps and Web Platform Innovations | Build 2015 | Channel 9
So, from your server-based web app, did you ever want to let your users easily back up their data on a local disk? Access high-speed encryption? Real printing? The desktop notification system? This may blow your mind.

The Future of TypeScript: ECMAScript 6, Async/Await and Richer Libraries | Build 2015 | Channel 9
TypeScript is not essential, but it has been shown to produce significantly lower error rates than using JavaScript alone.

Tools to Help With Development (all are free):


Free Dev Tools - Visual Studio Community 2013

Visual Studio Code


TypeScript

Whether or not you are developing for Windows, I recommend TypeScript for JS development.

WinJS

  • This site contains WinJS, a full-blown (fat) Javascript that implements the new Windows UI.
  • It also contains similar support for React, Knockout, AngularJS and Bootstrap.
  • If you are not using one of these in your existing code, I suggest you take a look at the Bootstrap CSS there for hints on styling.
  • I would only use WinJS full-blown for apps I was aiming at the Desktop/Laptops and high-end tablets and phones. It would take nearly two seconds just to parse the JS/CSS to DOM on a low-end phone.
  • I haven't tried it yet, but consider using zepto instead of jQuery if you go the winjs-bootstrap route.
  • Microsoft allows you to use any framework you like in you app, but strongly encourages you to blend in with the platform. (I'll have to agree that most customers would likely prefer that, so it is in your best interests.)

Phone apps via Cordova (I've not watched these yet):


This is a secondary way of getting to the platform. Under Windows 10, one JavaScript Universal Windows App can target desktop, tablet, phones and much more.

Getting Started with Cross-Platform Mobile Development with Apache Cordova | Build 2015 | Channel 9

Getting Great Performance Out of Cordova Apps | Build 2015 | Channel 9

Wednesday, May 6, 2015

A Look at the Desktop Web App Market

The Desktop Web App Market at this time consists of Windows Store Apps, Chrome Apps (part of the apps in the Chrome Web Store) and the nascent Firefox Marketplace.

Current app store sizes:

Name of "app" storeNumber of apps
Google Play11,300,000
Apple App Store11,200,000
Windows Phone Store1300,000
Amazon App Store1240,000
Windows Store4>142,000
Blackberry World1130,000
Chrome Web Store2~34,000
Firefox Marketplace36,257
Chrome Apps on CWS32,704

Sources: [1], [2] (includes extensions), [3] (by my count on May 6, 2015), [4]

There were 91 paid Chrome Apps in the Chrome Web Store. Ignoring the 3 paid apps that had monthly charges, the average paid app had an estimated net revenue of $2,419. (Net revenue can only be estimated as one doesn't know if the app's price changed over time, if the number of users includes those that uninstalled, or if free copies to beta testers are included in the number of users.) There were only 4 apps that made more than $10,000. For details, see my spreadsheet. I have no information about revenue from in-app purchases.

There were 428 paid apps in Firefox Marketplace. No user/purchase count is available, so I did not attempt an individual breakdown. Until recently, the marketplace was really only for Firefox OS phones, so naturally the bulk of the apps there are aimed at phones. Interestingly, Microsoft has several apps in the store. In particular, Bing Maps seems popular on the platform.

So the long and the short here is that there is currently not much of a market for "Desktop Web Apps" outside of the Windows Store. That said, Google has done an amazingly poor job of creating one. I'll have more to say about that in a later post.