Thursday, December 27, 2007

Windows 8, or 9, or 10?

After the dust settled around the Vista release, I could distinctly sense the smell of decline and fall of the Roman Empire all around it. To wit - luxurious, decadent external appearance (the UI) coupled with declining, rotting from the inside substance.

Just to recoup a few facts:

  • On the same hardware, 2x slower than XP
  • Incompatible with a large proportion of existing media
  • Big step backwards from MCE UI - try playing DVDs stored on a hard drive
  • Insanely buggy (read Mark Russinovich blog to fully appreciate the scope)
  • Majority of device drivers and applications no longer work
  • No major, innovative features to compensate for it all

More on Vista here and here.

This is no laughing matter, ladies and gentlemen. While the freedom-loving hordes of northern barbarians might have rejoiced in the Roman collapse, the civilization plunged in the darkness of the Middle Ages for the next millenium.

The time, especially computer time, moves much faster now, but I still would not want Microsoft OS franchise to die, or be replaced by either Mac or Linux. This is still the only company that takes corporate users and developers seriously. Northern barbarians notwithstanding, there's still nothing that can replace Windows on my laptop or on my home network. Plus, I feel no desire learning Objective C :-). (Not that I dislike learning languages - I've learned JavaScript, Python, and to a big extent Java just in the past 6 months; it's just that a language that only is relevant for one computer platform does not excite me).

Anyway, is everything lost? Is Windows code base beyond the point of no return? What would I do if I were Bill Gates and would have decided to return to reincarnate Microsoft just like Steve Jobs did with Apple?

One of the things that is both an amazing blessing, and a huge problem for Windows is enormous legacy. Thousands of applications whose compatibility is ensured by millions of lines of source code that otherwise is not used. Huge barrier to entry for a single bug fix, or any other change - whatever you do inside Windows is sure to break somebody. Whatever you do in Windows kernel is sure to break a LOT of people.

Look at what happened after they introduced LUA in Vista - vast majority of even Microsoft's own applications stopped working.

Attempts to maintain backwards compatibility the way Windows does it now lead to the huge code base that is terrible hard to maintain and expand (an average Windows dev now only writes 1500 lines of code per year - and this leads to rapid decline of the quality of the development org as a whole), and increases the memory pressures, which leads to the overall sluggishness.

Meanwhile, the Moore's law appears to have stopped contributing to the performance of an individual CPU, and started contributing to the parallelism of the system - instead of clock speed-up we're now seeing the proliferation of cores. 4 years ago when I started my new job as a dev manager in one of the Windows NT base team, the spec I put together for a dev box had a dual 2GHz Opteron and cost $3500. The 4-way machine we used to build our code was 2GHz and ~$12000. Today, my home file servers are 4-ways running at 2GHz still, but they are only $2000, excluding the cost of the drives.

The proliferation of cores is bad for the current Windows architecture - at 16 CPUs Windows is actually SLOWER than a single-core machine. Luckily, many-core architectures create opportunities for virtualization, and this I think is the solution for the OS quagmire Microsoft is finding itself in.

Here is what I would do if I were the new Dave Cutler.

At the lowest level it would start with a hypervisor that would host multiple copies of multiple NNT (new NT) subsystems, and enable extremely fast message-based communications between them. Each subsystem will host one or multiple applications, but no UI whatsoever.

There will be a separate subsystem for every compatibility layer (say, XP, or Vista, or Server 2003, or maybe even Windows 98) derived from the source code for that specific generation of the OS.

New subsystems (essentially, the new versions of the OS runtime environment) can be developed without any regard to backwards compatibility, because the old apps will be run by the old subsystems. For example, there could be a pure .NET-based subsystem. A Singularity subsystem. A POSIX subsystem. Development of these subsystems could be an internal Microsoft affair, or it could be shared with the industry or research institutions, potentially causing a virtuous cycle of innovation.

The UI will be handled by a separate UI-only subsystem (which could potentially run wholly on a specialized UI core, like Nvidia), though a hypervisor-layer UI protocol that would work much like RDP (except an RDP connection to a specific set of windows by an application, see Remote Applications Integrated Locally).

The file system can also live in a separate subsystem (or maybe a number of subsystems, say, one per volume), and be accessed through a hypervisor version of redirector (over SMB-like protocol).

This architecture is robust (if a subsystem crashes, much of the system is still alive and useful, unlike previous isolations where kernel may be operational, but you can't do anything if the UI died). It is scalable not just to many cores, but with the hypervisor transport extended through the network, to a cluster, or beyond. It is not hard to implement in an iterative fashion - at first, the subsystems can run the entire versions of the OSes, with drivers for UI and message passing. Later, they can be stripped down to bare minimum required to run the subsystem.

The question is

  1. Do Microsoft execs understand what a hole they dug for themselves in the last few years, and
  2. Are they going to rock this boat? Is there an incentive for a change now that Bill is gone?

3 comments:

dzembu said...

While I agree that Windows sux more and more I am not sure I got the point of proposal of new David Cutler :-)

Why we need Legacy support? You got VM and you can install WIN95 and run it. If you really need. That what people do on OS X for Windows Applications. Not too elegant, but will do: most old applications tends to run fast even under VM on new more powerfully h/w. Like you want to run Digger ? ;-)

Now, what problem we want to solve ? Compatibly? Nope.

Computers became Network Terminals more and more. So, exactly why should I care about OS ? Browser compatibility is what bothers me much more these days.

Games ? You can use game consoles.

So, what majority of people do ?

Right, they manipulate MEDIA and go to NET. Plus, some use very specific applications for business: what we call ENTERPRISE or HOBBYISTS ( Lego NXT anyone ?) .

Apple doing a nicer work for MAIN STREAM and I want to see more in same direction.

Any seriously company will adapt or rewrite s/w for any solid platform these days. If not: I am happy: some new start up will fill the gap. This is market.

So, what we need?

We need NEW and FAST OS. One that utilize modern h/w or better yet REDEFINE h/w : I do not want to see main CPU decoding MP3 for example or handling I/O for that matter.

I want REAL TIME: I know it can be done: my Media opens INSTANTLY for example or my computer switch in 1 second.

I want UI like iPhone: stupidified.

Fast and dead simple. No learning. No hustle. No security issues. Like TV :-)

I do believe Apple will prevail because they put DESIGN first.

I would love things ... JUST WORK :-)

and what company have this as a moto ? :-)

Alex Efros said...

I see two issues with your idea:

1) such significant architectural change may require to get rid of corporate parasites first, or these ideas just will not be heard by execs;

2) if Win98 (or other old Win) will be used again - it will require a LOT of security fixes, which may break compatibility anyway.

This was technical view. But there exists business view, and your ideas how to make windows better probably have nothing with ideas how to sell more windows.

For example: we all know how bad is Vista, we all know people delete Vista from new notebooks and install XP there... STOP! If they "delete Vista", then they already have bought it! So, such "bad" Vista is still selling! Even if people doesn't like it and doesn't need it - it selling with (nearly) every notebook in the world! So... maybe Vista doesn't "bad" enough to be "bad" from business view, and to force execs to start thinking about changing something at all?

Sergey Solyanik said...

To Dzembu:
(1) You want backwards compat because you want to have Windows' 90% of the market to Apple's 10%.

(2) Network terminals have been tried many times, and failed every time. Why would someone want a dumb client when smart clients are smart, plentiful, and in most cases, cheaper than them?

(3) It would be a sad days for developers everywhere if Apple wins over the OS market, because the industry then will be just like an automotive industry today - user-friendly, marketing-driven, slick, and not very fun to work in. And we'd be paid what a typical mechanical engineer makes now.

To Alex:
Even the most ossified environments have been known to produce extremely innovative products that took market by the storm. For example: IBM (IBM PC), and GM (Saturn). And MSFT is nowhere near as stagnant as any of these companies were during the respective times in their histories.

The recipe is this: take 50-100 people, put them in a separate building, give them a separate budget, and prohibit any contacts with the mother org. Worked like a charm many times in history.

Your point WRT selling Vista AND XP licenses are valid - this is not a plan to rectify current disaster. I was trying to look 2-3 generations forward.