top | item 46005910

How did the Win 95 user interface code get brought to the Windows NT code base?

147 points| ayi | 3 months ago |devblogs.microsoft.com

109 comments

order

nolok|3 months ago

It's always funny to me, the more you go into the depth of windows settings, the older the UI that start to show up.

Which makes sense, between the "if we change it we break it in some subtle way" and "we don't expose that in UI anymore so the new panel doesn't have it".

My understanding is that windows want to move to a "you can't configure much of anything, unless you use group policy and then you set everything through that" so they don't update the settings and don't include them in the new screens for 90% of the things, but then they have this huge moat of non active directory users who need to go into the settings and my god are they bad.

ayaros|3 months ago

One thing I appreciate about Windows is (in my experience at least) you almost never have to go into the command line to change a weird setting. There's always a toggle in the GUI somewhere. I mean, I'll use the command line if I have to... I just like the fact that the supported options are enumerated visually; I don't have to worry I'll break something. Also, I can peruse through a place like the group policy editor to find settings I would have otherwise never considered changing.

mavhc|3 months ago

In Windows 11 you're only 3 clicks away from a Windows 3.1 dialog box:

ODBC Data Source Administrator (64-bit)

Configure > untick "Use Current Directory", Select Directory

RedShift1|3 months ago

Would be nice in theory, if MS didn't make Windows 10 and 11 outright disobey group policies.

JojoFatsani|3 months ago

Really wish someone would just take the win95 UI code and tell an LLM to make it work on the win11 74 bit kernel

delta_p_delta_x|3 months ago

You still can. Run any program in compatibility mode; the Windows 2000 boxy UI is still there. As is the Windows Vista Aero Basic theme.

Like I always say, the user-mode of Windows is easiest to change, that's why it has been done almost every version.

BruceEel|3 months ago

Yes please! Speaking of which, was it Window Blinds(?) that could back/forward port UI themes across various Windows versions? Are they still around?

isodev|3 months ago

Yes, that would be glorious. Could be the XP UI too… have some more flexibility around themes.

londons_explore|3 months ago

Did you try it?

I can't immediately see why explorer.exe wouldn't run and give you a start menu

hulitu|3 months ago

> and tell an LLM to make it work on the win11 74 bit kernel

It won't compile.

apexalpha|3 months ago

Windows is like real life archeology. You can dig up the UI of ancient generations of humans before you underneath the modern facade.

TMWNN|3 months ago

Vernor Vinge's A Deepness in the Sky depicts a human society thousands of years in the future, in which pretty much all software has already been written; it's just a matter of finding it. So programmer-archaeologists search archives and run code on emulators in emulators in emulators as far back as needed. <https://garethrees.org/2013/06/12/archaeology/>

(Heck, recently I migrated a VM to its third hypervisor. It began as a physical machine a quarter century ago.)

userbinator|3 months ago

moving changes from Windows 95 to Windows NT involved manually doing three-way merges for all of the files that changed since the last drop. I suspect that this manual process was largely automated, but it was not as simple as a git merge.

The first release of git was in 2005, around a decade after Windows 95.

sho_hn|3 months ago

Wow! I am stunned how wrong that feels. I remember adopting git in the first year, and it still feels fairly recent. That it only took 10 years from Win95 to git, and 20 years from git to now, is truly uncanny. Win95 feels like a genuinely old thing and git like a fairly recent thing.

keyle|3 months ago

Three way merges were a thing before 2005... The author was merely comparing with today's tools.

HeinzStuckeIt|3 months ago

Funny how fast Git became entrenched as the way of doing things, though. Around 2010 I said in passing, in a forum discussion about how a FOSS project was getting along, “…you’d think someone could send in a patch…”, and I immediately got flamed by several people because no one used patches any more.

raverbashing|3 months ago

As a comparison, CVS is from 1990, SVN from 2000 (and RCS from 82)

agumonkey|3 months ago

and even then, it's easy for merges to turn into chaos, git has no semantic awareness (no surprises here) and sometimes similar patterns will end up collapsed as a single change and conflict

txdv|3 months ago

maybe merging patch files was a thing way before git?

kleiba|3 months ago

> this manual process was largely automated

Priceless.

robmccoll|3 months ago

What's the reason for moving from ASCII CHAR to UTF16 WCHAR rather than UTF8 CHAR? I wouldn't think any parts of the codebase that don't need to render the string or worry about character counts would need to be modified.

Edit: https://devblogs.microsoft.com/oldnewthing/20190830-00/?p=10... seems the justification was that UTF-8 didn't exist yet? Not totally accurate, but it wasn't fully standardized. Also that other article seems to imply Windows 95 used UTF16 (or UCS2, but either way 16-bit chars) so I'm confused about porting code being a problem. Was it that the APIs in 95 were still kind of a halfway point?

ynik|3 months ago

Windows NT started supporting unicode before UTF-8 was invented, back when Unicode was fundamentally 16-bit. As a result, in Microsoft world, WCHAR meant "supports unicode" and CHAR meant "doesn't support unicode yet".

By the way, UTF-16 also didn't exist yet: Windows started with UCS-2. Though I think the name "UCS-2" also didn't exist yet -- AFAIK that name was only introduced in Unicode 2.0 together with UCS-4/UTF-32 and UTF-16 -- in Unicode 1.0, the 16-bit encoding was just called "Unicode" as there were no other encodings of unicode.

throwaway2037|3 months ago

Oh god, this again. One word: "History". No one thought we would need more than 16 bits (65k chars) to represent all the world's written languages. Then it happened. There must be no less than one thousand individually authored blog posts and technical articles on this matter. Win32, Java, and Qt all suffer from the same UTF-16 internal representation. There has been endless discussion on the matter over the last 10 years about how to change these frameworks to use UTF-8 internal representation. It is a crazy hard problem.

drob518|3 months ago

As much as the tech industry loves to hate on Microsoft, it’s really quite amazing what they were able to do with fairly primitive tools operating on huge, complex code bases.

bni|3 months ago

I would like to read the story of why the Windows 95 window title bar and buttons looks so much like the NeXT ones

speed_spread|3 months ago

I prefer to believe they just merged the two branches in SourceSafe.

plorkyeran|3 months ago

Microsoft never used SourceSafe for anything important internally.

Traubenfuchs|3 months ago

Personally, I enjoyed MS source safe and exclusive file locking.

teytra|3 months ago

Did SourceSafe even have a proper merge?

chris_wot|3 months ago

Amazingly, explorer.exe still freezes up to this very day. Bravo, Microsoft. Never change.

throwaway2037|3 months ago

@dang: It would be nice if we can add an exception to these URLs. Currently, the domain hint only says: "microsoft.com". It would be better if it said: "devblogs.microsoft.com/oldnewthing" or "microsoft.com/oldnewthing". I think we did something similar with forbes.com to illuminate when it was a blog (which are frequently low quality), instead of the official media website.

dang|3 months ago

Ok, that should be done now. I'm not happy about how much screen space "devblogs.microsoft.com/oldnewthing" takes up, so I might look into rewriting these to "microsoft.com/oldnewthing". On the other hand, that's arguably a bit misleading too.

breakingcups|3 months ago

It says devblogs.microsoft.com for me