8 ms·
From where I'm sitting this looks like an excellent argument for breaking backwards compatibility. All those bullshit hacks are a maintenance and debugging bur
by lamontcg 3y ago
From where I'm sitting this looks like an excellent argument for breaking backwards compatibility. All those bullshit hacks are a maintenance and debugging burden for someone and a tax on the whole rest of the operating system -- and I'd argue that it really shows.
- ohgodplsno 3y agoYou're sitting on the point of view of a software developer. Microsoft's point of view is that the underlying software doesn't matter. The user's software _has_ to run. The Application Compatibility Database (https://learn.microsoft.com/en-us/windows/win32/devnotes/application-compatibility-database https://learn.microsoft.com/en-us/windows/win32/devnotes/app...) is, overall, a relatively small component, and all it does is apply some shims if your executable is in that list. Performance issues in Windows do not stem from anywhere near the kernel. The kernel team is absolutely top tier. The kernel itself is of much higher quality than what you'd find on Linux, or MacOS. Now, the upper layers however...
- rbanffy 3y ago> The user's software _has_ to run. My concern is that a lot of security issues may have come from this. A clever attacker could grab recently freed memory from one of these programs and inject malicious code to enjoy whatever other weird privileges the original program has, because marketing said it can’t crash.
- ohgodplsno 3y agoThe compatibility hacks are not "revert to old, terribly unsafe behavior". Rather, "use current, good behavior, lie to the application about what happened."
- saagarjha 3y agoThis actually improves security by preventing UAF.
- everial 3y ago> The kernel team is absolutely top tier. The kernel itself is of much higher quality than what you'd find on Linux, or MacOS. Have recommended sources for this or learning more? My experience with Windows doesn't match this at all, though from my perspective it's hard to tell if it's kernel as opposed to any of the layers above it.
- PaulHoule 3y agoNotably Microsoft does not document an API to the kernel, the official userspace interface in Windows is the DLLs they provide. In that since, Wine, which provides DLLs that implement the same interface over the Linux kernel is conforming to the way windows works, and Cygwin, which provided a POSIX-like libc that ran on the Windows kernel is a Windows-centric way to implement POSIX. (That said, the path of WSL 1, which emulated the Linux syscall interface on Windows, takes advantage of the idea Windows NT had from the very beginning which was implementing "personalities" that could pretend to be other OS, such as the original plan for Windows NT to be OS/2 compatible.)
- ohgodplsno 3y agoThere's an absurd number of components to the Windows Kernel, so here's a kind of disjointed list of various things, from different time frames. Windows Research Kernel - https://github.com/HighSchoolSoftwareClub/Windows-Research-Kernel-WRK-/tree/master https://github.com/HighSchoolSoftwareClub/Windows-Research-K... - More or less Windows XP I/O Completion ports - https://learn.microsoft.com/en-us/windows/win32/fileio/i-o-completion-ports https://learn.microsoft.com/en-us/windows/win32/fileio/i-o-c... - io_uring, but mostly better, since NT 3.5 General architecture info: https://en.wikipedia.org/wiki/Architecture_of_Windows_NT https://en.wikipedia.org/wiki/Architecture_of_Windows_NT A bunch of things you'll find in Windows Internals, which is pretty much the bible for Windows (https://empyreal96.github.io/nt-info-depot/Windows-Internals-PDFs/Windows%20System%20Internals%207e%20Part%201.pdf https://empyreal96.github.io/nt-info-depot/Windows-Internals..., or buy it online. Mark Russinovich is a treasure trove of Windows knowledge) The various Windows subsystems - Windows is built from the start to be able to impersonate other OSes. While the most obvious one is WSL (despite WSL2 being just a VM), there's an OS/2 Subsystem, a POSIX Subsystem, a Win32 subsystem... Very few things actually run in kernel mode. There exists a almost-kernel-but-not-quite mode called executive mode, which is a much better option than Linux's all or nothing user-or-kernel (and, as far as I know, Mach has the same problem) NT is a hybrid kernel: not quite monolithic, not quite micro. This allows Windows to do things like swapping your video drivers live as it's running, unlike Linux and Mach which would miserably crash. Hell, it can even recover from a video driver crash and restart it safely, and all you'll see is a few seconds of black screen. The breadth of devices it supports is absolutely breathtaking. (well, in part because they very much have a hand in forcing manufacturers to respect the standards that they write) All of Sysinternals (Mark Russinovich's work, again) is also an amazing resource: https://learn.microsoft.com/en-us/sysinternals/ https://learn.microsoft.com/en-us/sysinternals/ Now, mind you, this is purely about technical merits: the NT Kernel is a miracle of technology. The APIs it exposes, and that most Microsoft products expose are downright batshit insane sometimes. But that's also what happens when you support 35 years of software. Also, the HANDLE pattern that most Win32 API uses is the superior alternative to dumb pointers (https://floooh.github.io/2018/06/17/handles-vs-pointers.html https://floooh.github.io/2018/06/17/handles-vs-pointers.html) Oh and a bunch of The Old New Things articles, but I can't be arsed to look them up right now, sorry.
- lamontcg 3y ago> The kernel team is absolutely top tier. The kernel itself is of much higher quality than what you'd find on Linux, or MacOS. > > Now, the upper layers however... You're not selling me on the idea that the compatibility layer has no cost by pointing out that the upper layers that reside over it are a mess. That would actually be my argument.
- ohgodplsno 3y agoWould you consider LDPRELOAD a massive cost to Linux ? Because that's basically what it is. You could give me the best kernel in the world, if I end up reading a file whenever I push a pixel to the screen, my performance will be dogshit. Windows's performance problems are not due to the kernel (or rather, not due to problems/bugs: some performance issues are just a choice. See NTFS's dreadful performance with Git: NTFS simply wasn't thought out for having thousands of very small files all being touched at the same time.)
- User23 3y agoThe NT kernel interfaces are lovely. I’m not at all a windows fanboy and haven’t done windows dev in well over a decade, but when I did the APIs were lightyears ahead of the competition. And Jeffrey Richter’s books were a marvelous resource on the documentation side.
- renonce 3y ago> Performance issues in Windows do not stem from anywhere near the kernel. I remember Windows uses a O(N^2) scheduler so the system slows down when it has a few thousand processes. Would that count as a performance issue in the kernel?
- ohgodplsno 3y agoAs far as I know, Windows uses a multilevel feedback queue, so O(n²) would be surprising. The one issue that pops up with the Windows scheduler is when you have plenty of processes doing tiny little bits of IO instead of one huge slab of it. Could you count it as a performance issue in the kernel ? Maybe. But really, you're mostly hitting an issue in what it's built to do. Windows really likes two things: * don't spawn subprocesses * please do your I/O in one huge batch and thank you. The average Windows machine will barely have 100 processes running. I have 184 right now, and I run a lot of crap. This goes directly contrary to the philosophy of many UNIX programs: create a shitload of processes, fork everywhere, and write tiny files all the time. I wouldn't complain about a hammer not working well if I'm using the handle to nail things. Sure, it would be nice if it also worked there, but it's not exactly made for that either, and for good reason. POSIX fork() being such a can of worms is half the reason that WSL1 was abandoned. Windows does not have the internal machinery to do that, because it wasn't built for that.
- xvilka 3y agoFork and IO performance are major problems when porting *nix software to Windows. It's visibly slower, one of the reasons WSL1 was way too slow to be used for many things while technically being a clever solution.
- CoolCold 3y agoto my understanding it's not really IO (reading/writing bytes), but overhead on OpenFile/CloseFile being under AV/Defender inspection. I'm taking that understanding basing on https://www.youtube.com/watch?v=qbKGw8MQ0i8 https://www.youtube.com/watch?v=qbKGw8MQ0i8 with " "NTFS really isn't that bad" - Robert Collins (LCA 2020) " > Why was rustup slow (3m30s to install (not including download time)) in early 2019 on Windows, and why isn't it slow (14s to install) now? >Early in 2019 I was developing some things in Rustlang on Windows, got frustrated at the performance of rustup (the installer for rust) and looked for bug. I found one which blamed a combination of NTFS, small files and anti-virus software for the problem. This wasn't an entirely satisfactory answer to my mind. Fast forward a bit, and with a combination of changes to rustup and to Windows itself and rustup is now pleasantly usable.... which also improved performance for rustup on NFS mounted home directories.
- ClumsyPilot 3y ago> All those bullshit hacks are a maintenance and debugging burden for someone That’s why that someone is getting paid -it’s their job. If you want software to power important things in society, like transport and energy, you need to have a certain level of responsibility for reliability. As this post demonstrates, Right now we have immature children who are used to breaking things for the sake of a new fad, in charge of critical systems.
- darklycan51 3y agoThis really bothers me and I'm young, I am TIRED of applications FORCING restarts, and other garbage as a software culture. You are doing something? Oh sorry our developer team thought it would be smart to crash your whatever task you are doing by force to give you a 2 line changelog. Typing a dm on discord or talking to people? boom random restart to force update, using firefox nightly? sorry you cannot use it as your main browser because they can decide to brick your browser randomly to force you to restart. for no reason whatsoever, what is the downside of just warning people but not FORCE restarting? none. Doing critical stuff on your pc that requires long term uptime? sorry Windows will decide for you to restart forcefully (at least these can be turned off, for now, via group policy)
- DiabloD3 3y agoRe: Firefox, Firefox only demands restarting if you changed the copy of Firefox out from under it. This only happens if you're managing Firefox with an external package manager, or you're building from the repo and installed a new copy. If you run Firefox from its default mechanism, it will update itself and ask to restart before applying the update, and will continue working forever, never updating until you restart it.
- darklycan51 3y agoMight be the case now (Note, I'm talking about Nightly), this was a few years back, I noticed that first it warned that a new version was working and then mysteriously bricked the browser after, complained and they told me that I "shouldn't be using nightly if I don't wanna have the latest updates"... which I do, but I don't wanna be forced into a restart unless it actually breaks?
- PaulHoule 3y agoThe thing about Microsoft is that they developed a framework for doing that kind of thing in a systematic way so it is not so hackish as it sounds. That's an innocent example but do recall that circa 1995-2005 or so, Microsoft looked like a dangerous monopolist and could have been in legal jeopardy if a product that competes with office (say WordPerfect) quit working when they went from Win 95 to Win 98 or Win 2k to Win XP. I'd also add that more than once I've had web pages and applications I've made been used as test cases by Microsoft and been contacted by people from Microsoft about compatibility issues. (... and I've never been an advocate of Microsoft browsers, often I've been quite the opposite.) I haven't heard once from Netscape, Mozilla, Apple, Opera or Google about something like this.
- amno 3y agoYes, people used undocumented functions, which were left undocumented as they were a subject to change, and accused Microsoft of not understanding software development or thought that those undocumented APIs were somehow better than the recommended documented ones. When stuff crushed after Microsoft changed an API people would be accusing them for deliberately breaking their applications and what not. I remember the hostility in those years 95-2005 towards Microsoft. There is still some cult in some Internet communities where trashing anything developed by Microsoft is seen as some kind of expertise or something by usually self-proclaimed experts.
- michaelmrose 3y agoPerhaps the negativity stems from the all the illegal, immoral, and damaging acts in this era. Not least of which is pouring millions into a baseless pump and dump scheme laying hallucinated charges of infringement against the entire Linux ecosystem but there are plenty of other issues. In short people hated them for being shitty people who do shitty things and present leadership were important folks when these shitty things were done everyone just moved up a few rings. They aren't better people they just have better aligned incentives where illegality and immorality aren't profitable.
- 3y ago
- caycep 3y agoI think that's why they invented containers/virtual machines
- Cthulhu_ 3y agoFrom a sales point of view though, if your operating system can run one of the most popular games at the time, it means people won't just keep using the existing one. It had to be a step forward, not a step back. I mean I don't know what you're using at the moment, but if your favorite application didn't work on the next version, would you upgrade? This is why Apple spent so much on Rosetta, first when going from PowerPC or whatever to x86/64, then from that to ARM / M1, while in the meantime building a developer and application ecosystem that allows for easier transition between CPU architectures and environments.
- charonn0 3y agoBreaking backwards compatibility was one of the biggest customer criticisms of Windows Vista.
- Arrath 3y agoOTOH, Vista and an interaction with a digitally distributed edition of Jagged Alliance 2 with bolted on DRM somehow resulted in it wanting a new registration key every time I launched the game. This drove me into looking for a vanilla executable that wouldn't have that after-the-fact DRM, and I discovered the 1.13 mod. So, I had one happy experience with Vista.
- dijit 3y agoFWIW Safari and Chrome are also doing this with their “quirks” files: https://github.com/WebKit/WebKit/blob/main/Source/WebCore/page/Quirks.cpp https://github.com/WebKit/WebKit/blob/main/Source/WebCore/pa... (I can’t find the chrome one)
- esprehn 3y agoChrome doesn't have one anymore, that's a WebKit thing.
- deaddodo 3y agoYeah, this was removed from the Blink engine. They've also done a lot of work removing namespace hacks (--opera-foo or --webkit-bar). Not that I think the Google/Blink monopoly is a great thing, especially with their recent moves, but they did stick by some of their "sticking to standards" rhetoric.
- jdjehxhdb 3y agoAnd that’s why you stand where you are and Microsoft stand where it does. You’re thinking like an engineer. Microsoft is a business. Backwards compatible is its major core competency.
- sys_64738 3y agoAnd why you don’t allow developers to make business decisions.
- behnamoh 3y agoThe huge backlash against Reddit's policy change is a good example of that. Sure, devs and programmers were upset, but after a week or two, all went back to normal as if nothing happened. Reddit continued to work, and its alternatives didn't gain much traction. I have an engineering background and then pivoted into managements science, and the difference in perspectives in the two fields is really obvious.
- LexiMax 3y agoLet's not give Reddit's management too much credit. They've lit a decade's worth of investor and advertiser money on fire and have precious little to show for it. Their recent moves seem less like calculated business decisions and more like desperate scrambles to make the site appealing to public investors on very short notice.
- cratermoon 3y agoAnd yet Apple has famously broken compatibility on a regular basis. Remember when Apple went from Motorola 68000 to Intel x86? They did it by providing direct support to key companies to port their software, and providing Rosetta for applications that could take the performance hit.
- sowbug 3y agoEither extreme works. There's a sour spot (opposite of sweet spot?) in between, where the platform breaks compatibility, but not so predictably that customers remember how to reach their suppliers, and suppliers remember how to update their products.
- User23 3y agoThe other position is that Microsoft’s customers paid them billions of dollars and maintenance and debugging “burden” is just part of the business.
- ineedasername 3y agoIf it had been a piece of shovelware I doubt they would have bothered. But there were some applications and games like this (Myst also comes to mind) that were so main stream MS may have had them on a punch list of apps to test before a release. When a game or app is sort of a poster child for “why should I buy a pc?” they didn’t have much choice. For countless other apps consumers had to fiddle with voodoo HIMEM configs and other such things you might hear rumored on street corners late at night trying to work so binary magic. I’ve heard the Sim City example before and I think it gives MS entirely too much credit for being OCD on compatibility. Plenty of things simply broke.
- Dalewyn 3y ago>From where I'm sitting this looks like an excellent argument for breaking backwards compatibility. It's precisely because of that backwards compatibility, insane in both the workings and the result, that keeps most people using Windows. People use computers to get stuff done, and Windows lets people use the absolutely massive library of Windows programs whether it was written today or over 30 years ago.
- itsmartapuntocm 3y agoRaymond Chen made a great point in his book “The Old New Thing”. If a hacky program suddenly doesn’t work when you upgrade to a new version of Windows, the user isn’t going to blame the program. They’re going to blame the OS because that’s what changed.
- fnordpiglet 3y agoThe issue is at that time updates for most shrink wrapped software were almost non existent and distribution even worse. Windows had an update facility and I bet you sim city for dos did not. So, either windows yielded and patched it’s behavior to run sim city or sim city users couldn’t run it under windows full stop until maxis distributed a new distribution on media. In todays world it looks like a ludicrous solution to the problem. The game vendor needs to HTFU and distribute a patch via steam or whatever and that’s a totally reasonable stance for microsoft or apple to take, because the infrastructure for patch distribution is pervasive and robust now.
- ukuina 3y agoPeople forget how every software developer had to spin up their own patch delivery infrastructure.
- danbruc 3y agoIf the company even existed when a Windows update caused an issue. And given the number of Windows installations, even the most obscure software or setup is likely to affect a lot of people.
- fnordpiglet 3y agoBack in the day it wasn’t even reasonably possible. You got a floppy/CD from the store and that was the end of the story. I mean, this is “Netscape just came out” times.
- bluefirebrand 3y agoYep. At best you had an updated version on the next run, but even that was unlikely.
- brewtide 3y agoMy AOL updates in the mailbox always lagged behind, week after week...
- rr808 3y ago> and I'd argue that it really shows Yep, the most popular desktop OS in the world and the 2nd biggest company in the world.
- PeterStuer 3y agoThey did this at a point where there was competition for the operating system GUI transition. Having this backward compatibility focus was a major win for them.
- xen0 3y agoWhen your favourite program stops working after an OS update, who do you blame? If you really want that program to run, what do you do? There are business reasons to maintain backwards compatibility, and they were very strong before the easily updated software.
- o1y32 3y agoRaymond Chen said (to the effect of) this in his book the Old New Thing: You have been playing your game fine. You installed a new Windows OS and now the game no longer runs. As an average customer, who do you blame? Hint: not the game studio.