Why was the Windows 95 precursor project code-named Panther abandoned?

Raymond Chen

A long-ago discussion of the fates of the various cat-themed precursor projects that led to Windows 95 prompted Jack to ask whether the Panther project was abandoned because it was impossible or was it abandoned because doing it properly would take much more work than just writing a new kernel?

From an engineering standpoint, the two options are almost the same. Something is rarely “impossible” so much as “not feasible from a cost/benefit point of view.” Even “make a change that breaks every program ever written” is strictly speaking not “impossible”, but it is definitely comes at a very high cost.

I suspect that the cost/benefit calculations also included the discovery/realization that getting the Windows NT kernel to run in 4MB of memory¹ would require so many changes that it would no longer be what it wanted to be. You couldn’t really call it a scaled-down Windows NT kernel any more.

But it was worth a try.

Bonus clarification: My colleague who provided the Windows 95 ship date predictor (and also missed out on his Nobel Prize in Project Management) corrected some of my hazy memories of the Panther project.

The Panther project was more than just running the Windows NT kernel in 4MB. It also ported the 32-bit USER and GDI from Windows NT, and the 16-bit versions of USER and GDI forwarded to their 32-bit counterparts.

When the Panther project was abandoned, the design flipped: Instead of having the 16-bit window manager and graphics engine forward to the 32-bit window manager and graphics engine, Windows 95 had the 32-bit window manager and graphics engine forward to the 16-bit window manager and graphics engine. Over time, the 16-bit window manager and graphics engine themselves did some growing up and became a hybrid 16/32 system.

The memory manager from Panther’s version of KERNEL32 remained, but the rest of the kernel was rewritten, using Win32s as a reference in many places. Win32s didn’t support multithreading, so that code needed to be written from scratch.

¹ Given that 4MB was the memory for the entire system, getting the Windows NT kernel to run in 4MB of memory meant in practice that it had to run in under 2MB of memory, in order to leave enough memory available to run, y’know, programs.


Comments are closed. Login to edit/delete your existing comments

Feedback usabilla icon