Why Windows 11 still ships with Windows 95's memory manager hidden inside it
Posted by khalidkhair 2 days ago
Comments
Comment by abanana 15 hours ago
The stuff around SimCity in this article is poorly written. It seems the author has misunderstood it to have been a one-off special case. I looked back at Joel Spolsky's article, and he does make it quite clear that the SimCity example was just one of many: "it still ran old 16 bit software perfectly. Microsoft obsessed about this, spending a big chunk of change testing every old program they could find with Windows 95".
The article does later mention "Windows XP’s hidden database of app fixes" but doesn't appreciate that the concept really started with Windows 95, and in a big way, not "just to cover up one game’s bug".
Comment by tclancy 15 hours ago
Comment by canucker2016 12 hours ago
Buy up one copy of every software package available at Egghead Software and have your team test it and file bugs.Comment by MikeNotThePope 5 hours ago
Comment by reitzensteinm 4 hours ago
Comment by MikeNotThePope 3 hours ago
Comment by philipallstar 15 hours ago
> On beta versions of Windows 95, SimCity wasn’t working in testing. Microsoft tracked down the bug and added specific code to Windows 95 that looks for SimCity. If it finds SimCity running, it runs the memory allocator in a special mode that doesn’t free memory right away. That’s the kind of obsession with backward compatibility that made people willing to upgrade to Windows 95.
[0] https://www.joelonsoftware.com/2000/05/24/strategy-letter-ii...
Comment by jonathanlydall 15 hours ago
The only positive thing I can say about it is that it doesn’t appear to be written by AI.
I don’t think this person truly understands what they’re writing about, they did a little research, made some screenshots and put enough words in the article so that it will show up in search engines.
It’s reminiscent to me of many articles on Windows error codes, almost all of them are basically generic, generally quite long with drivel, and steering you to install some “fix it” software. Any technical person coming across these just finds them annoying as they clearly gamed the search results with unhelpful content.
Comment by pishpash 14 hours ago
Comment by jonathanlydall 14 hours ago
Comment by direwolf20 13 hours ago
Comment by jonathanlydall 3 minutes ago
Comment by Grombobulous 13 hours ago
It might have been this article: https://news.ycombinator.com/item?id=34034413
Comment by AnimalMuppet 14 hours ago
Microsoft discovered this in their testing, before they released the new Windows version. In response, they added our agent to a list of programs that Windows would lie to about the Windows version. If our program asked, we would be told the previous version.
Well, that was great, in that our program didn't terminate early (or whatever it did). But now, even after we updated our agent, it still wouldn't know whether it was running on the new version of Windows, and so would not audit it correctly!
This dance shows just how far Microsoft went with backward compatibility. We were not a top-1000-most-used program by any means, but they knew about us and tested us and fixed for us. (I mean, we didn't want it, in this case, but it was still impressive.)
Comment by ww520 13 hours ago
Comment by AnimalMuppet 13 hours ago
Comment by okanat 13 hours ago
Comment by giancarlostoro 11 hours ago
Comment by vjvjvjvjghv 13 hours ago
Comment by LASR 14 hours ago
Comment by pureagave 14 hours ago
Comment by nercht12 10 hours ago
Comment by Grombobulous 13 hours ago
Comment by okanat 13 hours ago
They basically had a cart populated with random-ass stuff they found in computer shops to the maximum of the USB spec supported wirh hubs. They inserted the hub and watched Windows crash until everything is fixed and worked, then they started yanking it when it was still discovering devices.
Comment by throwaway2037 5 hours ago
Comment by direwolf20 13 hours ago
Comment by mahboi 12 hours ago
Comment by paulryanrogers 12 hours ago
Comment by kalleboo 4 hours ago
It is. Both Apple and Google will push apps off their stores that have not been updated in "a while". Even if the app works fine and is perfectly finished.
Comment by mahboi 12 hours ago
Comment by nercht12 10 hours ago
Comment by pjmlp 4 hours ago
Game consoles don't do Khronos APIs for the most part, they are really only standard on GNU/Linux and Android, really.
Comment by kalleboo 4 hours ago
But like USB-C, at some point you should just embrace the industry standard.
Comment by pjmlp 4 hours ago
Comment by mahboi 10 hours ago
Also, there's Vulkan on Metal, but there's translation overhead, and I have no idea what other issues it causes. Dolphin emulator did some research on that.
Comment by pjmlp 4 hours ago
Gamedevs already have Metal support on their engines, they don't spend time with API wars like FOSS communities.
Comment by deaux 6 hours ago
Comment by nostrademons 13 hours ago
I think you need an emulator to run Civ1, though. My kid was asking if we could try it and I'm like "I don't think I can find that on Steam..."
Comment by paulryanrogers 11 hours ago
Comment by toast0 12 hours ago
Comment by vee-kay 12 hours ago
1. Run CivWin on WineVDM: WineVDM, also known as OTVDM (Old 16-bit Windows Virtual Machine), is a compatibility layer that allows users to run many legacy 16-bit Windows applications on modern 64-bit Windows systems. CivWin is the Windows re-release of Civ1, that's recommended due to its high resolution support (e.g., you can play it in HD with cool mods) and some people like the final multiplayer CivNet release too. Credit: @Blake00 on this thread: https://forums.civfanatics.com/threads/using-winevdm-to-play... https://winevdm.com/does-winevdm-work-on-windows-11/
2. DosBox (get the D-Fend Reloaded frontend/GUI, it contains DosBox): https://dfendreloaded.sourceforge.io/ https://www.dosbox.com/mown/index.php
3. VirtualBox or VMWare (virtual machines solution) to install and run a copy of Windows 95/98.
Note that Microsoft removed support for 16-bit subsystems from 64-bit editions of Windows many years ago, beginning with Windows XP Professional x64 Edition.
Comment by Bosustir 3 hours ago
Comment by mrheosuper 8 hours ago
Comment by expedition32 14 hours ago
With Linux you're stuck trying to decipher the ramblings of neckbeards.
Comment by mahboi 12 hours ago
Comment by what-the-grump 11 hours ago
There is so much obscure windows crap that can be found in the old internet.
Comment by officeplant 14 hours ago
Comment by nercht12 10 hours ago
Comment by Spivak 14 hours ago
Linux forums might be obtuse but at least they'll have actual technical details about the problem. Almost without fail any "fix" they propose won't work on your system because it's for a different distro that was EoL 5 years ago but they'll at least give you something to work with.
Comment by RajT88 14 hours ago
For example, people trawling the Microsoft Q&A forum for low hanging fruit to provide advice to and build out their little home computer repair business profile.
https://learn.microsoft.com/en-us/answers/tags/824/windows-h...
Some of these answers are really dubious. Some of these questions are really dubious.
Comment by mahboi 12 hours ago
Comment by jamesfinlayson 11 hours ago
Comment by xp84 14 hours ago
Comment by newsicanuse 11 hours ago
Comment by Dwedit 15 hours ago
Comment by jonathanlydall 15 hours ago
Comment by immibis2 14 hours ago
Comment by hypercube33 13 hours ago
Comment by xp84 13 hours ago
Maybe there's a tiny exception with like, Apple for Adobe. They might place a phone call between executives to warn them to avoid angering the "pros" who use those apps, but I think it's more because their users internally who also use Adobe apps would notice in the course of testing the betas, than a practice of testing many apps with the intent to ensure they work correctly.
To me what this feels like is that Microsoft's culture to this day considers it would be a breach of trust to ship an OS update that, from your perspective breaks your programs that used to work fine. Compared to the approach everywhere else today that the platform owner simply dictates How Things Will Be Now.
Comment by angch 3 hours ago
https://github.com/WebKit/WebKit/blob/main/Source/WebCore/pa...
Comment by elzbardico 11 hours ago
The world should not be made more vulnerable just because someone in Idaho would be pissed because if they can't run Photoshop 2.0 anymore in a newer version of an operating system.
Comment by manoDev 14 hours ago
Comment by okanat 13 hours ago
Comment by SparklyCircuit 1 hour ago
Comment by adwf 13 hours ago
Comment by RajT88 14 hours ago
https://web.archive.org/web/20130226221212/http://windows95t...
Comment by sedatk 14 hours ago
Comment by zamalek 10 hours ago
(It did work under Wine with a few small tweaks that I can't remember)
Comment by jdlyga 9 hours ago
Comment by ForOldHack 15 hours ago
Comment by ranger_danger 15 hours ago
Comment by Blikkentrekker 14 hours ago
Like the fiasco with Python3 and Wayland. It's so clear the developers just thought “Wow, people will just switch” not realizing how much people demand an absolute drop-in replacement and then maybe later you can think of slowly deprecating features to discourage new users from adopting them. Rust realizes this with editions. Yes, it's a big investment for them to continue to support it, but the alternative is that Python library maintainers now have to have this big investment themselves because they have to maintain like 6 different versions of the same library because Python doesn't understand the value of backwards compatibility. z/OS still supports 50s COBOL frameworks and for good reason. No one is going to rewrite that.
These developers when you talk about them really do not seem to understand that people aren't jumping to rewrite code or maintain different versions at the same time and very often even call them “lazy” for not doing it like they're not using their time for other things. Say you're a company, and you can pay a developer for his time:
1) Have him develop new features that make you more money.
2) Have him fix bugs that cost you money.
3) Have him rewrite existing code that will do nothing new, and will probably introduce new bugs again so you can later go to 2.
Which is more attractive?
Comment by Spivak 14 hours ago
You're right the "commercial" timeline of Python would have supported Python 2 forever because big paying clients demand it but I think that would have led to a worse outcome for the OSS community.
Comment by Blikkentrekker 13 hours ago
It's not “by far”, the weird part is that they broke backwards compatibility but also didn't fix some of the other issues and many of the fixes didn't need backwards compatibility to be broken and most of all, the way Python works would allow code written in multiple versions to interact and they should absolutely have allowed that and allow Python3 code to call Python2 modules.
> You're right the "commercial" timeline of Python would have supported Python 2 forever because big paying clients demand it but I think that would have led to a worse outcome for the OSS community.
The cost of switching was ridiculous and it still is. “venv” needing to exist is symptomatic of the bizarre ecosystem and developers being expected to maintain like 6 different versions of the same library at times and when they don't as user you are screwed.
With Rust, multiple editions can just compile together. Crates written in one edition can be called from code written in another edition.
Also, the optimism just highlighted how out of touch they were, that they thought people would actually just rewrite everything in 5 years is bizarre and suggests a fundamental lack of understanding to me. Same thing with Wayland and GPLv3 to me. This is so common in the FOSS world. People come with a new version and just expect that everyone will quickly switch because they consider their new version better, not realizing that A) even if others think it's better, they still won't “just switch” because that costs time and money and B), very often they don't even think it's better which they never bothered to even investigate before they got started. They just assumed that everyone will agree because the “I have no idea what Xfce is or does, sorry.” people are completely out of touch with the world to be honest and it's pretty clear they're often living in some very specific online bubble and don't understand the concerns of companies, users, and just everyone outside of their own little bubble.
Comment by jz391 12 hours ago
I think you are pointing out the conflict that can then arise, but that I don't think is avoidable: a company has relatively short-term aim of surviving until year-end (or quarter-end) and making money. FOSS contributors are hoping to create something worthwhile by whatever value system they adhere to (elegance, public recognition etc).
Comment by mrheosuper 8 hours ago
FOSS does not mean all people who maintain/contribute to it work for free. A lot of them are being paid to maintain/develop module that their company uses. Microsoft developers contribute to Linux kernel all the time
Comment by krior 3 hours ago
Comment by Blikkentrekker 9 hours ago
“I have no idea what Xfce is or does, sorry.” and Python developers actually thinking that everyone would switch in five years isn't about motivations; it's just about a fundamental lack of understanding of what goes on outside of one's own little world of people who program for fun and love tinkering. This isn't priority but simple ignorance.
Comment by okanat 12 hours ago
It is the fundamental difference in the developer's origin/experience in FOSS projects vs commercial software. However, there is an even bigger paradigm difference underneath. Academia survives on one-off projects and FOSS is often recruits students in universities who contribute as hobby, without contracts. The usual POSIX software is all about exposing things with minimal abstractions. It makes developing and iterating on software easier on the developer.
People who work in commercial software are forced into decade-long support contracts. So they develop skills in managing long-term backwards compatibility. This comes with the abstractions and software designs with more thought into their future.
You see that in Windows components that the engineers thought about how the computer systems will evolve and allocated some slack to extend the software: https://faultlore.com/blah/c-isnt-a-language/#case-study-min... . This kind of hindsight isn't something one can easily learn without being forced into the backwards compatibility and getting burned before or mentored. Some of the skills also means that you need to learn where to place the "narrow waist" of the API.
To illustrate the difference I'll actually compare Win32 vs X11/Wayland. Win32 is a much better abstraction and much better "narrow waist" point than X11 was. X11 was designed tightly around 80's hardware and people had to add hacks on top of hacks to actually make things like GPUs work. X11's network transparent architecture actually made implementing direct rendering harder. While Win32 already had some ideas that made into Wayland and it designed nice abstractions for allocating windows, direct rendering buffers and compositing. Win32 had baked in concepts like a window or a button or text rendering. So when the devices with HighDPI appeared or when new security boundaries needed the higher level abstractions of Win32 made it possible for Microsoft to make smaller API changes while the whole X11 started to collapse with 90s hardware and then was useless for 2010s.
Comment by Blikkentrekker 9 hours ago
I think it's just the fundamental mentality of the kind of people it recruits and it wasn't always the case either. It felt like the old Unix guard of people who worked at Bell Labs were far better adjusted. If anything, this feels more like a social thing because you just encounter these kinds of people a lot outside of programming on say Reddit or 4chan, as in people who just completely seem to miss what goes on outside of their little bubble and I do feel certain types of FOSS have a higher chance of recruiting those people because they were the people who used to first submit patches for free on github and then rose the ranks. This does not in any way occur with say people being paid by Intel to write drivers for Linux. They seem to know perfectly well what goes on with the world because they weren't recruited through those channels that are just more likely to attract, shall we call it “terminally online” people as the kids call it nowadays?
> To illustrate the difference I'll actually compare Win32 vs X11/Wayland. Win32 is a much better abstraction and much better "narrow waist" point than X11 was. X11 was designed tightly around 80's hardware and people had to add hacks on top of hacks to actually make things like GPUs work. X11's network transparent architecture actually made implementing direct rendering harder. While Win32 already had some ideas that made into Wayland and it designed nice abstractions for allocating windows, direct rendering buffers and compositing. Win32 had baked in concepts like a window or a button or text rendering. So when the devices with HighDPI appeared or when new security boundaries needed the higher level abstractions of Win32 made it possible for Microsoft to make smaller API changes while the whole X11 started to collapse with 90s hardware and then was useless for 2010s.
Even ignoring the future though. It's just the understanding of the “now”. Things like initially libinput having no way to disable mouse acceleration and the developer at first resisting it until receiving a mountain of complaints and finally relenting because “Everyone would want mouse acceleration always on, right?”. Or just in general how these people seem to completely forget that desktop usage is largely just an afterthought for Linux and the main usages are phones, servers, small devices and supercomputers. To them Linux is really just a desktop kernel and they completely don't seem to realize that desktop usage of it is really super inconsequential in the larger scheme of things.
Comment by bitwize 6 hours ago
Comment by sick_of_slop 11 hours ago
Comment by 150g2 14 hours ago
Comment by ChrisRR 2 hours ago
Comment by jeffbee 15 hours ago
Comment by GuB-42 14 hours ago
This is a debatable position. Linux distros usually do this, but a lot of modern applications ship with all their dependencies. I'd say the former is more efficient and generally better from a user perspective and the latter is more stable and is generally better from a developer/maintainer perspective. Open source encourages the former, proprietary software encourages the latter.
Comment by jamesfinlayson 9 hours ago
Read about it here: https://news.ycombinator.com/item?id=47858177
Comment by kasabali 3 hours ago
I've read that comment at time and saved it somewhere, then when I remembered there was something like that I searched for hours yet couldn't find it.
Comment by my123 4 hours ago
Comment by jeffbee 10 hours ago
Comment by fredoralive 13 hours ago
Comment by simonask 11 hours ago
Comment by pcwalton 15 hours ago
Comment by irishcoffee 14 hours ago
Clearly this can't be enforced, but I've always found it bad practice to allocate memory inside a library.
Comment by jz391 12 hours ago
Comment by okanat 12 hours ago
For example the WideCharToMultiByte [1] function of Win32 handles UTF-16 to UTF-8 conversion. If you pass your destination pointer as NULL, then it purely calculates the number of bytes you'll need in your buffer. Then the main program actually allocates the memory and calls it again with the populated destination pointer.
[1]: https://learn.microsoft.com/en-us/windows/win32/api/stringap...
Comment by 1718627440 8 hours ago
Comment by pcwalton 8 hours ago
Comment by rowls66 15 hours ago
Comment by hyperhello 15 hours ago
Comment by bigfishrunning 15 hours ago
Comment by hypercube33 12 hours ago
Comment by jz391 12 hours ago
Comment by Spivak 14 hours ago
Now you can just ship the user your machine and software can theoretically be immortal.
Comment by userbinator 8 hours ago
You mean like Windows/386 through Windows Me? They were effectively a hypervisor for DOS VMs.
Comment by hyperhello 15 hours ago
Comment by bboreham 14 hours ago
Comment by vjvjvjvjghv 13 hours ago
Comment by jeffbee 15 hours ago
Comment by hyperhello 15 hours ago
Comment by chuckadams 15 hours ago
Comment by hyperhello 15 hours ago
Comment by chuckadams 15 hours ago
Comment by hyperhello 15 hours ago
Comment by chuckadams 14 hours ago
Comment by jeffbee 11 hours ago
Comment by thighbaugh 2 days ago
Comment by Barrin92 15 hours ago
Comment by ForOldHack 15 hours ago