Wednesday, January 27, 2016

Windows 10 Redstone: Rocky start, build 14251, OneCore and other musings

Note: Some of the things discussed are quite technical.
It's been over two months after last posting about Windows 10. For the past two months, I've been busying myself with some NVDA add-ons work, testing new Insider builds and have reorganized directory structure on the web server where and sites live.
In terms of Windows 10 Insider builds, the past six weeks were rocky in terms of accessibility. The issues I and other Insiders observed - browse mode/virtual cursor not working in Microsoft Edge, object navigation issues and so on - were addressed as of today's Insider fast ring build (reference at the end of this post). But there are other important things to talk about Redstone wave 1 (RS1) - OneCore, why deep changes breaks things, performance and debugging and so on as they relates to user experience and accessibility. Along the way I'd like to iterate what Microsoft may need to do to increase Windows 10's market share before the free upgrade offer expires.
Redstone and OneCore: Building pieces for the future
Redstone is a mineral/electronic circuit found in minecraft used to build all kinds of materials. It is said that one can assemble these materials and build more complex materials (one example was that of a roller coaster).
Whereas Threshold marked the entry of Windows 10 and the concept of Windows as a service to the masses, various sources and posts from Microsoft executives (particularly Gabriel Aul, CVP of Engineering Team) indicate Redstone (the next Windows 10 upgrade wave) being a deep change to Windows NT internals. This stems from the fact that there were talks about project called OneCore, unifying the NT kernel code so it can run on all kinds of devices: PC's, tablets, smartphones, sensors and other things and so forth. In order to talk about why OneCore is a hot topic for some, let's talk about the evolution of two Windows kernel families: Windows NT and Windows CE.
Both Windows NT and Windows CE are a family of Windows releases targeting different audiences: NT was designed for PC's and servers, whereas CE was designed for embedded systems, pocket PC's and alike. Both families (technically, kernels) have several things in common:
* Released in an era where computing power was limited: Windows NT (1993) and Windows CE (1996) were released at a time when disk space, RAM and CPU features were limited compared to today. In 1993, Intel introduced Pentium (sometimes called 586) that introduced interesting features, yet many PC's of 1993 were using 80286 or 386. Likewise, a typical pocket PC from 1996 would have sported just a few megabytes of RAM, and none were using multicore processors (the concept of multiple CPU's on a single chip were being researched by computer scientists then).
* 32-bit kernel: Both Windows NT 3.1 and Windows CE 1.0 were 32-bit kernel, thus it required a 32-bit processor such as Intel 80386 (NT) and ARM 32-bit and MIPS R4000 (technically a 64-bit CPU but ran in 32-bit mode).
* Portability: Windows NT 3.x supported X86, DEC (Digital Equipment Corporation) Alpha, MIPS and powerPC, and Windows 10 supports X86, X64 and ARM (32-bit only so far). Windows CE, just like its NT counterpart, supports X86, ARM and other processors.
There were notable differences, however: Whereas NT kernel (ntoskrnl.exe) allows programs to use as much memory as it desired, Windows CE kernel (nk.exe) used a shared 32-bit address space, with programs limited in terms of memory consumption (from 1.0 to 5.0, CE programs could not consume more than 32 MB of memory, later relaxed starting with CE 6.0).
Although both operating systems had good design to begin with, what prevented them from being unified were hardware limitations, intended market and internal API's. It took more than a decade for x86 processors to cut down on power usage that is comparable to today's ARM processors, and smartphones weren't widely adopted by businesses until late 2000's. Also, due to internal design differences, API's used by these operating systems would not be unified until a port of Windows NT kernel became available with the release of Windows Phone 8, which kicked off kernel unification process that is still ongoing.
What I believe OneCore is: kernel and UI unification
Several components are involved when running an operating system: kernel, API's, services, security subsystem, user interface and users. Of these, I would like to focus on two areas that stand out: kernel and user interface.
Based on user interface differences between Windows 7, 8.x and 10, I believe part of OneCore to be user interface unification subsystem. If you examine Windows 8.x's interface carefully, you'll notice that certain things came from Windows Phone, including a dedicated PC Settings app, Start screen and others. This continues with Windows 10: many UI elements from Windows 10 comes from Windows Phone (now Windows 10 Mobile).
But in order to let Microsoft execute their strategy of one Windows everywhere, it was necessary to bring some PC-like interface to Windows 10 Mobile. This came in the form of Continuum - when a Windows 10 Mobile device is connected to a dock, its interface changes to that of a typical Windows 10 PC.
But OneCore isn't just UI unification: in order for a great UI and user experience to come to life, internal Windows components (specifically, Windows kernel) must also be unified. Can users use a product with good UI when its underlying foundation isn't stable? Hence, Microsoft spent the past few months perfecting OneCore kernel (it is still built on top of NT design, as it still comes with ntoskrnl.exe and friends). A clearer evidence that OneCore isn't just UI but also a kernel unification is the build string for the latest Windows Insider builds (10.0.14251; this comes from Windows Phone family, and as far as features are concerned, it's mostly bug fixes and minor things here and there compared to say, from 10240 to 10586).
So what happens if we put OneCore and Redstone together? I believe it indicates a bold strategy from Microsoft: one Windows everywhere, one Windows kernel (one core) across millions and billions of devices with the kernel and UI adopting to functionality offered by diverse devices. Thus, I expect Redstone wave to be quite a fundamental change, a change that will (hopefully) let Windows become an integral part of our computing lives as outlined by Microsoft (perhaps not for a while).
Redstone and accessibility: a rocky start
When I signed up for Windows Insider program back in October 2014, I've set out to find out and talk about how accessible these builds are. just like Threshold (Windows 10 RTM/1511) days, I'll continue to report on accessibility of Redstone on this site, mostly to let screen reader users know what's going on. And what a good way to start than talking about a rocky start, as we'll examine some building pieces and regressions here and there that were resolved in build 14251.
Accessibility regressions as a result of OneCore work
As mentioned above, Microsoft spent some time reworking some internal features of Windows 10. As a result, accessibility regressions were observed in earlier builds (now resolved).
A particular concern was UI Automation and screen reading. Due to UIA issues, some screen readers (particularly NVDA) had a hard time working with UIA objects. A good example was inability to use object navigation commands in Settings app and inability to use browse mode/virtual cursor facility in Microsoft Edge. Note that Naarrator was fine during this time (used Caps Lock+left and right arrows to move between controls). This is now gone as of build 14251.
Apart from history shortcut in Edge (right-clicking back/forward button), there aren't features that are new. Hopefully Microsoft will add new features and at the same time work on accessibility improvements to old and new features to make Windows 10 more appelaing for those using assistive technology.
Things Microsoft should do before free upgrade expires
In addition to accessibility improvements, I believe Microsoft should announce a feature that would entice users to upgrade to Windows 10 before the free upgrade offer expires. Edge extensions is one such feature, but I think a better engagement with those using universal apps ecosystem could help, seeing that more and more developers are adopting this paradigm.
Concluding remarks: Performance of and debugging pre-release software
Some people claim that Windows 10 Redstone builds are slower than usual. This is expected, as signing up for Windows Insider program means you are testing pre-release software (more so now that fast ring became a lot faster). In addition to ever-changing user interface and internals, debugging code will affect performance - developers of any software (including I, a code contributor to a screen reader project and author of several add-ons for this screen reader) write debug routines when writing software (a software that works 100 percent as advertised without debugging is extremely rare).
Thus, to reiterate what Gabe Aul and others following Insider builds have said: due to speed of releases, fast ring builds will be buggier (this includes performance and accessibility). I would go so far as say Insider fast ring builds are public alpha-level code, while slow ring is a polished beta. As far as accessibility is concerned, fast ring builds may introduce regressions, as we've seen for the past few weeks. As always, use Insider builds with caution (I and others do not recommend using Insider builds as your primary setup).
Until Redstone gets an exciting feature or status of accessibility changes...
1. Insider build 14251 announcement:
2. Windows CE (Wikipedia):