A lengthy yet very interesting post from the "TWF #2" thread on Silverlight
Forum, by "BSalita"
////////
With summer approaching, we are again suffering another Microsoft
information blackout. This is the period where Microsoft ceases to inform
developers about important new directions. We know the reasons; they don't
want to talk about what might not be delivered, they want to withhold
information from enemies (competitors, lawyers, unfriendly governments),
they want to ratchet up the excitement and explode it on stage.
Unfortunately, not knowing future plans has a deleterious effect on many.
Some of us are headed full speed ahead in an obsolete or sub-optimal
direction. Considerable resources will be expended before corrective action
can be taken thanks to the blackout.
Both my consulting clients and I need to know, right now, what changes are
in store. We do not wish to wait three months until PDC. There are important
decisions that need to be made today. We do not have access to privileged
information. We need to know today if we are spilling our resources. Thus I
spent a day on gathering all the details that are publicly available and
trying my best to build a picture of coming changes. I've given the
following report to my clients calling it an educated guess.
What do I expect to hear at PDC 2011? There are two relevant core
technological changes that I'm expecting. First, Microsoft will promote a
new rendering engine, possibly called MoSH (Modern Shell) that will form the
basis for a new UI. MoSH is implemented using HTML5 and thus constrained by
HTML5 capabilities. WPF and Silverlight are still completely supported but
they're future is cut off at the legs by their successor (MoSH). MoSH can be
used with XAML but, significantly, will only support a subset of WPF's and
Silverlight's XAML. Again, the constraining factor is HTML5 capabilities and
Microsoft's abstractions of them. I expect both MoSH and WPF/Silverlight to
support new device interfaces such as location, multi-touch, gyros, etc. I'
m not sure if the support will come in the form of .Net 5, be built into
MoSH, or as a separate cross-platform library. I believe MoSH is designated
to be cross-platform (Mozilla, Chrome, Safari) in the form of a browser
plugin. Marc Andreesen has predicted “The browser will become the OS”. I
believe more correctly the renderer will become the OS. MoSH will become the
heart of IE, Windows 8 and Windows devices (Windows TV anyone?).
The second technological change is what Microsoft might be calling Native
Code. Native Code is a set of technologies that enable software (
applications and gadgets) and hardware (graphics) to perform at near native
speed inside a container (browser). Most notably, Microsoft will supply
tooling to build browser applications, principally with MoSH, without today'
s performance penalties. Currently browser based applications are limited by
API availability (DOM), programming speed (Javascript), and slow rendering.
This will all change. Internet Explorer 11(?) (IE) will expose a much
richer API, possibly .Net 5.0, Visual Studio will enable Native Code
development, and IE's renderer (probably same as MoSH) will directly use
hardware graphics.
Some issues I'm unclear on:
Will Microsoft port MoSH and Native Code to iOS and Android? I'm guessing
that they intend to do so directly or through partnerships.
Will a single dll, possibly named .DLLX, run across all devices? If so, when
is the code JITed?
Will Native Code force any syntax changes to .Net languages? I'm guessing
Microsoft is working hard to limit the changes to attributes.
Is Native Code implemented using .Net sandboxing or with the aid of hardware
as with Google's Native Client (NaCl)? This would make the difference as to
whether C was supported or not.
Do CPU processors need changes to optimally support Native Code? Do all
existing processors and graphics chips support Native Code and MoSH? I'm
particularly curious about the suitability of legacy ARM support.
What does Microsoft hope to gain by these changes?
Expose APIs to features of rich devices (touch, location, Kinect, voice
commands)
Implement a single Windows API across devices to ease programming
Create a single development platform for desktop, cloud and mobile devices
Embrace new mobile processor architectures (ARM)
Capture developers attention with powerful tools
Expand sandboxing to new scenarios
Offer sandboxing security to native code apps
Expand base for MS applications (Office) to more devices
Make Visual Studio the leading development tool for all HTML5 platforms
What Dangers does Microsoft face?
missed schedules
legal threats
threaten existing relationships (Intel)
technical blocks
internal intransigence
standards failure (HTML5 delays, limitations)
What does Microsoft need to change to implement MoSH and Native Code?
Visual Studio – implement MoSH UI development
Visual Studio – provide framework for WPF/Silverlight to MoSH conversion
Visual Studio – implement Native Code throughout tool chain (major task)
Visual Studio – enable MoSH and Native Code debugging (major task)
Visual Studio – create templates for MoSH and Native Code projects
WPF – reduce in stature, Windows classic only
Silverlight – reduce in stature, Windows classic only
.Net languages – transparent changes to backend
Azure – more device support
App Store – retool for cross-device, possibly iOS and Android support via
plugins
Internet Explorer – native MoSH support (no plugin required), virtual app
support, new design patterns
Why isn't Microsoft telling us more?
They want to withhold information from enemies (competitors, lawyers,
unfriendly governments). They don't mind telling YOU. They just don't want a
competitor to do a crazy Ivan at a vulnerable moment.
They want to ratcheted up the excitement and explode it on stage.
They don't want to talk about what might not be delivered.
How will Google react?
Google is very slowly implementing their own Native Code technology called
Native Client (NaCl). It supports C. Google recently announced that they
will retool Chrome to go Native. When Google comprehended Native Client
concept, it took maybe two blinks to see how Microsoft could run with it. We
will all greatly benefit from Native but Microsoft will be a bigger winner
than Google. Google's Native Client just doesn't have the market weight or
resources to trump Microsoft's Native Code vision. A MoSH plugin must be
part of the grand strategy but a Native Client implementation is low
priority.
Mono – Obsoleted
Mozilla – They'll support MoSH via plugin. It's in Microsoft's best
interests. I don't think they'll implement it using XUL.
Apple – Not threatened.
Android – Focused on developing their own Native tools. Development is
dangerously slow.
Chrome – Technically able to support Microsoft's Native Code but low
priority.
What is the Timeline for the software release? Here's my crazy guesses:
August 2010 - Proof of concept of marrying MoSH, IE and Native Code, first
benchmarks
June 2011 – Windows 8 early experience including MoSH but not Native Code
anything
September 2011 – Betas of Windows 8, Visual Studio 2012, Native Code, .Net
5.0, IE 11
December 2011 – First release candidate
March 2012 – Windows 8 release
May 2012 – Office 2012 released with MoSH and Native Code support