Category Archives: windows

What is a Universal Windows App?

At its Build developer conference in San Francisco, Microsoft has announced a new kind of Windows app: a Universal App. In fact, you can download the latest Visual Studio 2013 update (Update 2 RC) and

image

A Universal App runs on both Windows Phone 8.1 and Windows 8.1. But what is it really?

The place to start is with the runtime. In Windows Phone 8, Microsoft migrated the kernel in Windows Phone from the cut-down CE version of Windows, to the same kernel used by desktop Windows. However the app runtime in Windows Phone 8 remained Silverlight, Microsoft’s Flash competitor which was originally designed as a browser plug-in.

In Windows Phone 8.1 Microsoft has taken the next logical step, and ported the Windows Runtime (WinRT) to the phone. WinRT is the runtime behind the Metro/Modern/Store App environment introduced in Windows 8.

A Universal App runs on WinRT. This means that Windows Phone 8.1 supports the same variety of development options as Windows 8: XAML and C#, XAML and C++, HTML and the WinJS Javascript library (now open source), and DirectX for games.

The port is not 100%; there are some platform-specific APIs. Apparently compatibility is about 90% in terms of APIs available.

That said, a Universal App is not a universal binary. Apparently you can have a universal binary, but it is not the approach Microsoft is taking. A Universal App is a project type in Visual Studio.

image

When you create a Universal App you get a project with multiple targets.

image

By default you get two targets, but we have also seen Xbox One as a target, and conceptually we could see more: maybe Xamarin might extend it to support iOS and Android, for example.

The way this works is that at compile-time any code (which can include XAML and project assets such as images as well as C# code) that is in the Shared project gets merged into the target-specific project.

This means that a Universal App could contain very little shared code, or be almost entirely shared code. This is a developer choice.

Separately, Microsoft has now enabled an app identity to run across multiple Windows platforms in the Store. This means a user can purchase an app once for multiple platforms. However, this is more a business than a technical feature. It would be possible for the developer to offer a multi-platform app in the Store, but keep the development for each platform entirely separate.

That said, the shared WinRT aspect means that code sharing in a Universal App is very feasible. Most if not all non-visual code should work fine, and XAML experts will be able to share most of the UI code as well, thanks to the flexibility built into the XAML UI language.

That is the good bit. There is a problem though. Neither the Windows Phone app platform, nor the Windows 8 app platform have been hugely successful to date, but of the two, Windows Phone has fared better. There are now 500 new apps per day for Windows Phone, we were told here at Build.

Unfortunately, porting those Windows Phone apps to become Universal apps is not easy. Developers have to port their app from Silverlight to WinRT, before they can add a target for Windows 8. They will also need to maintain the old Silverlight app for users with versions of Windows Phone earlier than 8.1. Nokia has promised to offer upgrades for all Windows Phone 8 Lumia models, but that will not the base for all Windows 8 phones out there, and as ever operators have a role here.

Life is easier for Windows 8 app developers who now want to support Windows Phone 8.1; but there are not so many great Windows 8 apps for which Windows Phone users are anxiously awaiting.

Still, the Universal App approach makes perfect sense for the future, once Windows Phone 8.1 is established in the market. It also makes sense for enterprises with internal apps to deploy for mobile and tablet users.  

Saving Windows the sequel: the Return of the Start

Day one at Microsoft’s Build conference in San Francisco was Windows client day – including Windows Phone as well as full Windows. Two slides made the biggest impression on me. One was this one, the return of the Start menu to the desktop, and a Store app (the Mail client) running in a desktop window:

image

The other was this: Office redone for the Metro, sorry Modern user interface:

image

Note that Touch Office will run on Windows Phone as well as on full Windows. Microsoft has ported most of the Windows Runtime (WinRT), the software engine that runs the Modern UI, to Windows Phone. The new Office is written in XAML and C++ so will run on both platforms.

Has Microsoft backtracked on the Windows 8 concept championed by former Windows VP Steven Sinofsky?

To some extent it has. Sinofsky’s Windows 8 was a purer conception, in which the whole focus is on the Modern environment and the desktop is presented like a legacy component, an app within the environment that happens to run all your old stuff.

Users rebelled, businesses swore to stick with Windows 7, and Microsoft has been gradually unpicking bits of it to make it more palatable to existing users. In Windows 8.1 we saw the return of the Start button and an option to boot directly to the desktop. In Windows 8.1 Update 1 we see a window bar appear across the top of Store apps, when the mouse is at the top of the screen, Store apps on the desktop taskbar, and the taskbar running at times across the Modern UI.

The security boundaries are getting slightly eroded, with an option for side-loaded apps (mostly the realm of enterprise deployments) now able to escape the sandbox and run legacy code.

Windows 8 vNext goes further. Store apps in windows: is there anything left of Microsoft’s tablet platform?

Well yes, there is. Store apps will still run primarily full-screen, and more important, will still use the new controls – menus, buttons, lists – that can be operated easily with touch. They still use the blocky “Metro” design concept, which for all its faults (it is not the most beautiful of UI concepts) is easy to operate without mouse or keyboard.

The other perspective on Microsoft’s shifting approach to the Windows client is that it is putting all its energy into promoting these modern apps.

Sinofsky’s idea was to push users into the Modern environment by making it the heart of Windows 8 – the Start screen. That did not work, so now Microsoft is taking a gentler approach but with the same goal in mind. If users are working mainly on the desktop, the argument goes, we will bring the apps to them there.

Windows 8.1 Update 1 discreetly plants a link to the Windows Store on the desktop taskbar, making this point perfectly.

For users who work on the desktop, Store apps will now be more visible, and more appealing again once they run in a desktop window.

For developers, there is another big change. They  can now target both Windows and Phone with a single app project, called a Universal App, so the effective size of the target market, though still small compared to Android and iOS, has significantly increased. Users can buy an app once in the Store and run it on both platforms.

The Universal App can be further extended to Xbox One, which also includes WinRT.

It is all about the apps – as it always was. If developers support Microsoft’s app ecosystem with renewed vigour following these changes, the future of Windows in the new mobile world does look brighter.

The forthcoming Office, you will recall, is also a Store app. You will finally be able to get real work done in the tablet environment.

Microsoft has not backtracked, in the sense that we are not hearing at Build about a renewed focus on the desktop. Rather, we are hearing about a more integrated approach to supporting both desktop and Store apps in Windows, but with the same goal as before, to make Windows an operating system fit for purpose on tablets.

It is worth recalling that Windows 8 was not only about supporting touch. The WinRT environment is also about security, where apps are sandboxed, and easy deployment via the Windows Store. This way Microsoft can prevent Windows from being wrecked by malware and other unwanted software.

What of Windows RT, the ARM version? With Office coming to the phone, I am more or less convinced that the next tablet-only Windows devices will be based on Windows Phone rather than Windows RT. You will have Office, but not the desktop, for better or worse. But no such announcement has yet been made.

Microsoft announces the return of the Start menu to Windows 8 – again

Just announced at Microsoft’s Build conference in San Francisco: a new desktop Start menu:

image

Note that this is not part of Windows 8.1 Update 1 (about to become available) but rather a future Windows 8.1 update. It will be free to all users.

The Start button was re-introduced in Windows 8.1, but only takes you to the Start screen. This new one runs entirely on the desktop.

Another key new feature in this future update is the ability to run universal Windows apps (which are Store apps) in a window on the desktop.

The plan to make Windows 8 a more compelling update for desktop users, and to promote Store apps to users who use keyboard and mouse and mainly desktop apps.

Microsoft Build Sessions published: Windows Phone XAML and HTML/JS apps, new Azure APIs and more

Developing for Windows Phone is now closer to developing for the Windows 8 runtime, according to information from Microsoft’s Build sessions, just published.

Build is Microsoft’s developer conference which opens tomorrow in San Francisco.

image

Building a Converged Phone and PC App using HTML and JavaScript states that “An exciting part of Windows Phone 8.1 is that you can now start building applications natively in HTML and JavaScript.”

Other sessions refer to the Common XAML UI Framework, which seems to refer to a shared UI framework for Windows Phone and WIndows 8, but using XAML rather than HTML and JavaScript.

This is in addition to Silverlight, not instead, judging by this session:

We’ve been doing a lot of work with new converged XAML app support on Windows Phone 8.1, but what about legacy Windows Phone Silverlight XAML based apps?  Come learn about all the new features we’ve enabled with Silverlight 8.1.

Microsoft has also come up with new APIs for applications that integrate with its Azure cloud platform and with Office 365. The Authentication library for Azure Active Directory lets you build both Windows and mobile applications that authenticate against Azure Active Directory, used by every Office 365 deployment. There is also talk of using Azure for Connected Devices, meaning “Internet of Things” devices using Azure services.

Some other sessions which caught my eye:

Connected Productivity Apps: building apps for the SharePoint and Office 365 platform.

What’s new in WinJS: the road ahead. XAML vs HTML/JS is a big decision for Windows developers.

Anders Hejlsberg on TypeScript

Automating Azure: “The Azure Management Libraries and Azure PowerShell Cmdlets allow this type of automation by providing convenient client wrappers around the Azure management REST API”

Authentication library for Azure Active Directory: The Active Directory Authentication Library (ADAL)

Panel discussion on desktop development: is there a future for WPF? Maybe some clues here.

Miguel de Icaza gets a session on going mobile with C# and Xamarin. I recall when de Icaza ran sessions on Mono, the open source implementation of the .NET Framework which he initiated shortly after Microsoft announced .NET itself, in nearby hotels at Microsoft events; now he is inside.

Learning from the mistakes of Azure: Mark Russinovich on what can go wrong in the cloud.

Looks like both cloud and apps for Windows Phone/Windows 8 are big themes at Build this year.

A close look at Word for the iPad. What is included and what is missing?

I have been having a closer look at Word for iPad. This has limited features compared to Word for Windows or Mac, but how limited?

image

So far I am more impressed than disappointed. Here are some of the things that Word on the iPad does support:

Spell check with support for a range of languages including Catalan, Cherokee, two variants Chinese, Icelandic and many more.

image

Tabs including left, center, right and Decimal

Paragraph styles – with some limitations. There are a range of common styles built in, such as Normal, No Spacing, Heading 1, 2 and 3, Subtitle and so on. If you edit a document including a style not on the list, it will be formatted corrected and the style is preserved, but you cannot apply it to new text.

Text boxes. You can do crazy stuff with text boxes, like word-wrapping around angled text.

image

Dictionary. Select a word, hit Define, and a dictionary definition appears. You can manage dictionaries, which seem to be downloaded on demand.

image

Tables. People use tables for things like formatting minutes: speaker in left column, actions in right, and so on. They work fine in Word on iPad. You can insert a table, type in the cells, and select from numerous styles including invisible gridlines.

image

Track changes. You can review changes, make comments,suggest new text, approve changes made by others, and so on.

image

You can change the direction of text by 90°.

You can edit headers and footers.

You can insert page numbers in a variety of formats.

You can use multiple columns. You can insert page breaks and column breaks.

You can change page orientation from portrait to landscape.

Shapes are supported, and you can type text within a shape.

image

Text highlighting works.

image

Bulleted and numbered lists work as expected

Footnoting works.

Word count is available, with options like whether to include footnotes, plus character count with or without spaces.

Pictures: you can insert images, resize, stretch and rotate them (though I have not found a crop function) and apply various effects.

Overall, it is impressive, more than just a lightweight word processor.

What’s missing?

So what features are missing, compared to the desktop version? I am sure the list is long, but they may be mostly things you do not use.

One notable missing feature is format support. Desktop Word supports OpenDocument (.odt) and can edit the old binary .doc format as well as the newer .docx (Office Open XML). Word for iPad can only edit .docx. It can view and convert .doc, but cannot even view .odt. Nor can you do clever stuff like importing and editing a PDF. Here are a few more omissions:

  • No thesaurus.
  • No equation editor.
  • No character map for inserting symbols – you have to know the keyboard shortcut.
  • Paragraph formatting is far richer in desktop Word, and you have the ability to create and modify paragraph styles. One thing I find annoying in Word for iPad is the inability to set space above or below a paragraph (let me know if I have missed a feature)
  • Academic features like endnotes, cross-references, index, contents, table of figures, citations.
  • Watermarks
  • Image editing – but you can do this in a separate app on the iPad
  • Captions
  • Macros and Visual Basic for Applications
  • SmartArt
  • WordArt
  • Templates
  • Special characters (you need to know where to find them on the keyboard)
  • Printing – I guess this is more of an iPad problem

Office for iPad versus Office for Surface RT

If you have Microsoft’s Surface tablet, would you rather have the equivalent of Office for iPad, touch-friendly but cut-down, or the existing Office for Surface RT? I took a sample of opinion on Twitter and most said they would rather have Office for iPad. This is Office reworked for tablet use, touch friendly in a way that desktop Office will never be.

image

Then again, Office on Surface RT (VBA aside) is more or less full desktop Office and can meet needs where Office for iPad falls short.

If Microsoft is still serious about the “Metro” environment, it will need to do something similar as a Windows Store app. Matching the elegance and functionality of the iPad version will be a challenge.

I typed this on the iPad of course, using a Logitech Bluetooth keyboard. I would not have wanted to do it with the on-screen keyboard alone. However for the final post, I moved it to Windows (via SkyDrive) in order to use Live Writer. Word on the Surface has a Blog template I could have used; another missing feature I guess.

Microsoft has exceeded expectations. This would sell well in the App Store, but you need an Office 365 subscription, making it either a significant annual cost, or a nice free bonus for those using Office 365 anyway, depending on how you look at it. The real target seems to be business users, for whom Office 365 plus Apple iPad (which they were using anyway) is now an attractive proposition.

Entering Microsoft’s XAML labyrinth: is it worth it?

I spent some time at the weekend working on a Bridge game for the Windows Store. I am writing it in XAML and C#. The UI is hardly demanding, given that Bridge is a card game, but it has made me take a fresh look at XAML, the markup language for a Windows Store App user interface (unless you use HTML and JavaScript). XAML is also used in Windows Presentation Foundation and in Silverlight/Windows Phone.

As part of the game, the user selects a “bid” which consists of a number from 1 to 7 and a suit of cards (or double, redouble or pass). Most bridge games show this as a grid though functionally it is like a combo-box (choosing from a pre-defined range of options).

Naturally I looked for the easiest way to accomplish this. The solution I came up with was to nest TextBlock controls in Border controls in Grid cells. Then I wrote C# code that detects which cell the user taps and updates the background of the selected Border accordingly.

image

I have in mind to replace the text with graphics and make the numbers a bit smarter at some future date. My solution works fine; here it is at runtime:

image

At the weekend I happened to be chatting with a developer more expert in XAML than myself, who told me I had done it wrong. In XAML everything should be in Style definitions. I should use a ListView and design it in Blend.

Well, I knew that I had somewhat subverted how XAML is meant to work, so I sat down to investigate this different approach. A ListView looks nothing like what I want out of the box.

image

However, with the magic of XAML it can be transformed. I made the ListView horizontal by defining an ItemsPanelTemplate in Application.Resources:

<ItemsPanelTemplate x:Key="ItemsPanelTemplate1">
  <StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>

and adding 

ItemsPanel="{StaticResource ItemsPanelTemplate1}

as an attribute of the ListView.

Then I added an ItemTemplate to draw the kind of block that I wanted:

<ListView.ItemTemplate>
    <DataTemplate>
        <Border BorderThickness="1" Height="130" Width="130" BorderBrush="Black">
            <TextBlock FontSize="24" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center"
                       Text="{Binding Name}" Foreground="Black" />
        </Border>
    </DataTemplate>
</ListView.ItemTemplate>

Note that I am using a DataTemplate because the ListView is bound to an ObservableCollection in the proper XAML way.

At this point I am close to what I want – never mind that the numbers are missing, they can easily be added with a second ListView:

image

However I do not want that little tick mark appearing, the selected background colour is not to my taste, and the spacing of the items is wrong. How do I fix that?

My search led me to this post which explains a far-from-obvious series of steps you can take in Blend. The steps did not quite work for me but got me on track to create a new Style resource which I called ListViewItemStyleNoGlyph and which lets me adjust the margin and also a previously hidden property called SelectionCheckMarkVisualEnabled. Blend generated a substantial block of code for this:

image

This has helped and now my ListView looks like this:

image

Well, it is nearly there and I can see that with a bit more effort I can get what I want. Even so, I am beginning to wonder whether my initial approach, in which I understood all the code, had advantages over this exploration into the labyrinth.

Is XAML well loved out there? I came across this post by Paul Stovell from a couple of years back which seems relevant. “I’ve lived and breathed the technology for the last six years”, he says, but writes:

What’s disappointing is that WPF started out quite positively during its time. Concepts like dependency properties, styles, templates, and the focus on data binding felt quite revolutionary when Avalon was announced.

Sadly, these good ideas, when put into practice, didn’t have great implementations. Dependency properties are terribly verbose, and could have done with some decent language support. Styles and templates were also verbose, and far more limited than CSS (when WPF shipped I imagined there would be a thousand websites offering high quality WPF themes, just like there are for HTML themes; but there aren’t, because it is hard).

Data binding in WPF generally Just Works, except when it doesn’t. Implementing INotifyPropertyChanged still takes way too much code. Data context is a great concept, except it totally breaks when dealing with items like ContextMenus. ICommand was built to serve two masters; the WPF team who favored routed commands, and the Blend team who favored the command pattern, and ended up being a bad implementation for both.

Stovell mentions the verbosity of XAML, and that it is hard, both of which sound right to me. He contrasts the way ASP.NET has evolved, with ASP.NET MVC a great improvement on web forms. Read the full post for more detail.

It seems to me that XAML does offer much that is wonderful: flexibility, capability, and the ability to separate presentation from data. At the same time, neither XAML nor Blend are intuitive tools for developers; they may make more sense to designers, but it seems to me that removing a tick mark from a ListViewItem should be more straightforward. Perhaps it is, in which case there is a failure of documentation or tooling rather than functionality, but it makes little difference to the developer.

Thirty years of mainly not the Mac

It’s Mac anniversary time: 30 years since the first Macintosh (with 128K RAM) in 1984 – January 24th according to Wikipedia; Apple’s beautiful timeline is rather sketchy when it comes to details like actual dates or specs.

My first personal computer though was a hand-me-down Commodore PET 4032 with only 32K of RAM, which pre-dated the Mac by about 4 years (though not by the time I got hold of it).

image

The PET was fun because it was small enough that you could learn almost everything there was to know about it though a book called The PET Revealed that listed every address and what it did. I had a word processor called Wordcraft that was excellent, provided you could live with only having one page in memory at a time; a spreadsheet called VisiCalc that was even better; and a database that was so bad that I forget its name. You could also play Space Invaders using a character-based screen; the missiles were double-dagger (ǂ)characters.

The small company that I was a little involved with at the time migrated to Macs almost as soon as they were available so I had some contact with them early on. The defining moment in my personal computer history though was when I needed to buy a new machine for a college course. What would it be?

If all the choices had cost the same, I would have purchased a Mac. My second choice, since this was a machine for work, would have been a PC clone. Both were expensive enough that I did not seriously consider them.

Instead, I bought a Jackintosh, sorry an Atari ST, with a mono 640 x 200 monitor and a second disk drive. It had the GEM graphical user interface, 512K RAM, a Motorola 68000 CPU, and built-in MIDI ports making it popular with musicians.

The ST exceeded expectations. Despite being mainly perceived as a games machine, there were some excellent applications. I settled on Protext and later That’s Write for word processing, Signum for desktop publishing, Logistix for spreadsheets, Superbase for database, the wonderful Notator for messing around with MIDI and music notation, and did some programming with GFA Basic and HiSoft C.

If I had had a Mac or PC, I would have benefited from a wider choice of business applications, but lost out on the gaming side (which I could not entirely resist). The ST had some quirks but most things could be achieved, and the effort was illuminating in the sense of learning how computers and software tick.

Despite the Mac-like UI of the Atari ST, my sense was that most Atari owners migrated to the PC, partly perhaps for cost reasons, and partly because of the PC’s culture of “do anything you want” which was more like that of the ST. The PC’s strength in business also made it a better choice in some areas, like database work.

I was also doing increasing amounts of IT journalism, and moving from ST Format to PC Format to Personal Computer World kept me mainly in the PC camp.

For many years though I have found it important to keep up with the Mac, as well as using it for testing, and have had a series of machines. I now have my desktop set up so I can switch easily between PC and Mac. I enjoy visiting it from time to time but I am not tempted to live there. It is no more productive for me than a PC, and Microsoft Office works better on a PC in my experience (no surprise) which is a factor. I miss some favourite utilities like Live Writer, dBpoweramp, and Foobar 2000.

That said, I recognise the advantages of the Mac for many users, in terms of usability, design, and fewer annoyances than Windows. Developers benefit from a UNIX-like operating system that works better with open source tools. There is still a price premium, but not to the extent there was when I picked an Atari ST instead.

Happy Anniversary Apple.

Microsoft financials: record revenue, consumer sales declining in drift towards Enterprise

Microsoft has announced record revenue for its second financial quarter, October-December 2013. Revenue was bumped up by the launch of Xbox One (3.9 million sold) and new Surface hardware. The real stars though were the server products:

  • SQL Server continued to gain market share with revenue growing double-digits.

  • System Center showed continued strength with double-digit revenue growth.

  • Commercial cloud services revenue more than doubled.

  • Office 365 commercial seats and Azure customers both grew triple-digits.

says the press release.

Another plus point is Bing, which Microsoft says now has 18.2% market share in the USA. Search advertising revenue is up 34%.

It is not all good news. While Microsoft is doing fine in server and cloud, the consumer market is not going well, leaving aside the expected boost from a new Xbox launch:

  • Windows OEM non-pro revenue down 20% year on year (that’s consumer PCs)
  • Office consumer revenue down 24% year on year – partly attributed to the shift towards subscription sales of Office 365 Home Premium

As usual, I have put the results into a quick table for easier viewing:

Quarter ending December 31st 2013 vs quarter ending December 31st 2012, $millions

Segment Revenue Change Gross margin Change
Devices and Consumer Licensing 5384 -319 4978 -153
Devices and Consumer Hardware 4729 +1921 411 -351
Devices and Consumer Other 1793 -206 431 -455
Commercial Licensing 10888 +753 10077 +751
Commercial Other 1780 +391 415 +199

The categories are opaque so here is a quick summary:

Devices and Consumer Licensing: non-volume and non-subscription licensing of Windows, Office, Windows Phone, and “ related patent licensing; and certain other patent licensing revenue” – all those Android royalties?

Devices and Consumer Hardware: the Xbox 360, Xbox Live subscriptions, Surface, and Microsoft PC accessories.

Devices and Consumer Other: Resale, including Windows Store, Xbox Live transactions (other than subscriptions), Windows Phone Marketplace; search advertising; display advertising; Office 365 Home Premium subscriptions; Microsoft Studios (games), retail stores.

Commercial Licensing: server products, including Windows Server, Microsoft SQL Server, Visual Studio, System Center, and Windows Embedded; volume licensing of Windows, Office, Exchange, SharePoint, and Lync; Microsoft Dynamics business solutions, excluding Dynamics CRM Online; Skype.

Commercial Other: Enterprise Services, including support and consulting; Office 365 (excluding Office 365 Home Premium), other Microsoft Office online offerings, and Dynamics CRM Online; Windows Azure.

Here is what is notable. Looking at these figures, Microsoft’s cash cow is obvious: licensing server products, Windows and Office to businesses, which is profitable almost to the point of disgrace: gross margin $million 10,077 on sales of $million 10,888. Microsoft breaks this down a little. Hyper-V has gained 5 points of share, it says, and Windows volume licensing is up 10%.

Cloud (Office 365, Azure, Dynamics CRM online) may be growing strongly, but it is a sideshow relative to the on-premises licensing.

How do we reconcile yet another bumper quarter with the Microsoft/Windows is dead meme? The answer is that it is not dead yet, but the shift away from the consumer market and the deep dependency on on-premises licensing are long-term concerns. Microsoft remains vulnerable to disruption from cheap and easy to maintain clients like Google’s Chromebook, tied to non-Microsoft cloud services.

Nevertheless, these figures do show that, for the moment at least, Microsoft can continue to thrive despite the declining PC market, more so that most of its hardware partners.

Postscript: Microsoft’s segments disguise the reality of its gross margins. The cost of “licensing” is small but it is obvious from its figures that Microsoft is not including all the costs of creating and maintaining the products being licensed. If we look at the figures from a year ago, for example, Microsoft reported a gross margin of $million 2121 on revenue of $million 5186 for Server and Tools. That information is no longer provided and as far as I can tell, we can only guess at the cost per segment of its software products . However, looking at the income statements, you can see that overall Microsoft spent $million 2748 on Research and Development, $million 4283 on Sales and Marketing, and $million 1235 on General and administrative in the quarter.

Results for Nokia’s last quarter with Windows Phone: slightly worse than flat? Over to you Microsoft

Nokia has released its fourth quarter results for 2013. They make odd reading because of the division into “Continuing operations” and “Discontinued operations”, the latter including the mobile phone business which has been acquired by Microsoft. This tends to cloud the key point of interest for some of us, which is how Windows Phone is faring in the market.

The answer seems to be that sales slightly declined, though it is not clear. Here is what we know.

Mobile phone revenue overall declined by 29% year on year and by 5% quarter on quarter, for the quarter ending December 2013.

Nokia states in its report:

The year-on-year decline in discontinued operations net sales in the fourth quarter 2013 was primarily due to lower Mobile Phones net sales and, to a lesser extent, lower Smart Devices net sales. Our Mobile Phones net sales were affected by competitive industry dynamics, including intense smartphone competition at increasingly lower price points and intense competition at the low end of our product portfolio. Our Smart Devices net sales were affected by competitive industry dynamics including the strong momentum of competing smartphone platforms, as well as our portfolio transition from Symbian products to Lumia products.

Disappointing; though in mitigation Lumia (ie Windows Phone) sales volume in 2013 overall is said to be double that in 2012.

We do know that much of Lumia’s success is thanks to the introduction of low-end devices such as the Lumia 520. That has been good for building market share, but not so good for app sales or mind share – on the assumption that that purchasers of high-end devices are more likely to spend on apps, and that aspirational devices have a greater influence on mind share than cheap ones.

That does mean though that units might have gone up even though revenue has fallen.

Still, the results do put a dampener on the theory that Windows Phone is taking off at last.

This is a moment of transition following the Microsoft acquisition. Microsoft has not got a good track record with acquisitions, and the Danger/Kin disaster is hard to forget, but Nokia comes with an influential executive (Stephen Elop) and common sense would suggest that the team which created excellent devices like the Lumia 1020, and which was able to engineer strong budget offerings like the 520, should be kept together as far as possible. Or will it be dragged into the mire of Microsoft’s notorious internal politics? Over to you Microsoft.

Update: it is now reported that Lumia sold 8.2m devices in Q4, down from 8.8m in Q3 but up from 4.4m in the same quarter 2012.

Microsoft and developer trust

David Sobeski, former Microsoft General Manager, has written about Trust, Users and The Developer Division. It is interesting to me since I recall all these changes: the evolution of the Microsoft C++ from Programmer’s Workbench (which few used) to Visual C++ and then Visual Studio; the original Visual Basic, the transition from VBX to OCX; DDE, OLE and OLE Automation and COM automation, the arrival of C# and .NET and the misery of Visual Basic developers who had to learn .NET; how DCOM (Distributed COM) was the future, especially in conjunction with Transaction Server, and then how it wasn’t, and XML web services were the future, with SOAP and WSDL, and then it wasn’t because REST is better; the transition from ASP to ASP.NET (totally different) to ASP.NET MVC (largely different); and of course the database APIs, the canonical case for Microsoft’s API mind-changing, as DAO gave way to ADO gave way to ADO.NET, not to mention various other SQL Server client libraries, and then there was LINQ and LINQ to SQL and Entity Framework and it is hard to keep up (speaking personally I have not yet really got to grips with Entity Framework).

There is much truth in what Sobeski says; yet his perspective is, I feel, overly negative. At least some of Microsoft’s changes were worthwhile. In particular, the transition to .NET and the introduction of C# was successful and it proved an strong and popular platform for business applications – more so than would have been the case if Microsoft had stuck with C++ and COM-based Visual Basic forever; and yes, the flight to Java would have been more pronounced if C# had not appeared.

Should Silverlight XAML have been “fully compatible” with WPF XAML as Sobeski suggests? I liked Silverlight; to me it was what client-side .NET should have been from the beginning, lightweight and web-friendly, and given its different aims it could never be fully compatible with WPF.

The ever-expanding Windows API is overly bloated and inconsistent for sure; but the code in Petzold’s Programming Windows mostly still works today, at least if you use the 32-bit edition (1998). In fact, Sobeski writes of the virtues of Win16 transitioning to Win32s and Win32 and Win64 in a mostly smooth fashion, without making it clear that this happened alongside the introduction of .NET and other changes.

Even Windows Forms, introduced with .NET in 2002, still works today. ADO.NET too has been resilient, and if you prefer not to use LINQ or Entity Framework then concepts you learned in 2002 will still work now, in Visual Studio 2013.

Why does this talk of developer trust then resonate so strongly? It is all to do with the Windows 8 story, not so much the move to Metro itself, but the way Microsoft communicated (or did not communicate) with developers and the abandonment of frameworks that were well liked. It was 2010 that was the darkest year for Microsoft platform developers. Up until Build in October, rumours swirled. Microsoft was abandoning .NET. Everything was going to be HTML or C++. Nobody would confirm or deny anything. Then at Build 2010 it became obvious that Silverlight was all-but dead, in terms of future development; the same Silverlight that a year earlier had been touted as the future both of the .NET client and the rich web platform, in Microsoft’s vision.

Developers had to wait a further year to discover what Microsoft meant by promoting HTML so strongly. It was all part of the strategy for the tablet-friendly Windows Runtime (WinRT), in which HTML, .NET and C++ are intended to be on an equal footing. Having said which, not all parts of the .NET Framework are supported, mainly because of the sandboxed WinRT environment.

If you are a skilled Windows Forms developer, or a skilled Win32 developer, developing for WinRT is a hard transition, even though you can use a familiar language. If you are a skilled Silverlight or WPF developer, you have knowledge of XAML which is a substantial advantage, but there is still a great deal to learn and a great deal which no longer applies. Microsoft did this to shake off its legacy and avoid compromising the new platform; but the end result is not sufficiently wonderful to justify this rationale. In particular, there could have been more effort to incorporate Silverlight and the work done for Windows Phone (also a sandboxed and touch-based platform).

That said, I disagree with Sobeski’s conclusion:

At the end of the day, developers walked away from Microsoft not because they missed a platform paradigm shift. They left because they lost all trust. You wanted to go somewhere to have your code investments work and continue to work.

Developers go where the users are. The main reason developers have not rushed to support WinRT with new applications is that they can make more money elsewhere, coding for iOS and Android and desktop Windows. All Windows 8 machines other than those running Windows RT (a tiny minority) still run desktop applications, whereas no version of Windows below 8 runs WinRT apps, making it an easy decision.

Changing this state of affairs, if there is any hope of change, requires Microsoft to raise the profile of WinRT among users more than among developers, by selling more Windows tablets and by making the WinRT platform more compelling for users of those tablets. Winning developer support is a factor of course, but I do not take the view that lack of developer support is the chief reason for lacklustre Windows 8 adoption. There are many more obvious reasons, to do with the high demands a dual-personality operating system makes on users.

That said, the events of 2010 and 2011 hurt the Microsoft developer community deeply. The puzzle now is how the company can heal those wounds but without yet another strategy shift that will further undermine confidence in its platform.