Live data from Hacker News

Windows: A software engineering odyssey (2000)

usenix.org

81–90 of 104 posts

Re: Windows: A software engineering odyssey (2000)

#81
post #79

This has certainly whetted my appetite for a deeper dive - what's a good book on the history of Windows (or even Microsoft), from the earliest days up until at least Windows 95?

G. Pascal Zachary Show Stopper! Cloth: THE BREAKNECK RACE TO CREATE WINDOWS NT AND THE NEXT GENERATION AT MICROSOFT

https://www.amazon.de/Show-Stopper-Cloth-BREAKNECK-GENERATIO...

Re: Windows: A software engineering odyssey (2000)

#82
post #67

Earlier quoted context omitted.

Imagine you're a teenager building gentoo, except every single component of the system is a random development snapshot instead of a tested release.

Linux distributions put together the products of a a huge and very loosely organised community, and I never heard it was anywhere as horrible as these (old) horror stories of Windows development. Is it perhaps the case that the (enforced) loose coupling of open source development prevents the aggregation of build complexity and intermingled dependencies?

> Is it perhaps the case that the (enforced) loose coupling of open source development prevents the aggregation of build complexity and intermingled dependencies?

I think that's a huge help. I think that it's also helpful that the system is intended to be compiled by a bunch of other people and the code is released with that in mind.

Re: Windows: A software engineering odyssey (2000)

#83
post #50

Earlier quoted context omitted.

Certainly building everything from scratch is time consuming, but why should it be difficult? Windows 2000 was developed before I became a programmer, but not too many years later (2003) I was a teenager running Gentoo, and while it was time consuming to build everything from scratch, it was easy and reliable. It was also quite easy to switch out or hack on individual parts. In particular I remember fiddling endlessl…

I have no information here, but I wouldn’t be surprised if in 2003 Windows had an order of magnitude more code in it than a Linux distribution. Don’t forget, back then, Windows NT had support for these runtimes: Win32, Win16, DOS, and POSIX. Also, Windows had drivers for a lot more hardware than Linux did. Add in all the management stuff (Active Directory came about around this time), and I think it almost had to hav…

> Also, Windows had drivers for a lot more hardware than Linux did.

Did it? It had more third party drivers, but did NT itself build in that many?

Re: Windows: A software engineering odyssey (2000)

#85
post #37
post #30

Earlier quoted context omitted.

> Can’t imagine how these Windows engineers feel about the enshitification of their baby. I think people are forgetting how unreliable Windows was in its early days. If you were doing anything complex (programming, editing pictures, ...) Windows couldn't run for 2 hours without crashing every so often. If anything, the core of the Windows operating system has only gotten better with time. Yes, they keep adding fluff…

> Windows couldn't run for 2 hours without crashing every so often. I`m really curious, which version of Windows you mean? Because I don't remember this on win 3.11, win XP, win 95, etc. etc. Of course there sometimes HW/drivers issue, sometime some programs corrupt system files, etc. etc. But crashing every so often.. thats strange.

Windows NT 3.51 was a big milestone in terms of stability. Windows NT 4 got even better from a stability point of view. I can't remember the last time I got a Windows blue screen of death when it used to be common to see one but on a decreasing basis as new versions of Windows came out.

Re: Windows: A software engineering odyssey (2000)

#86
post #30

Earlier quoted context omitted.

> Can’t imagine how these Windows engineers feel about the enshitification of their baby. I think people are forgetting how unreliable Windows was in its early days. If you were doing anything complex (programming, editing pictures, ...) Windows couldn't run for 2 hours without crashing every so often. If anything, the core of the Windows operating system has only gotten better with time. Yes, they keep adding fluff…

Was Windows NT ever that unstable? I know 95, 98, and ME were all notorious for stability issues, but was under the impression that NT was better.

Windows 98 was unstable because its drivers and usermode software components still came from a time where they controlled every aspect of the computer.

NT solved that problem by not allowing a lot of that nonsense, breaking code in the process. This incompatibility is the reason new Windows 95/98 PCs are produced until this day (https://nixsys.com/legacy-computers/windows-95-computers, https://nixsys.com/legacy-computers/windows-98-computers): back in the Win9x days, programming your computer like you would program a microcontroller today was quite a reasonable thing to do for certain applications, like controlling production lines.

There is the uptime overflow bug to deal with, but a monthly reboot is easier than reverse engineering and porting control software.

Re: Windows: A software engineering odyssey (2000)

#87

Earlier quoted context omitted.

Later Windowses are full blown spyware with ads. If I had to use Windows for some reason it would be 7.

It's not difficult to de-shittify 10/11. There's a tool that automatically does it call ShutUp10. It's arguably a bit shit from a business perspective, but has no real impact on power-users day to day.

You need to be careful with ShutUp10/11. You can easily break automated security rules or system APIs if you carelessly enable all of those settings. You can't just apply these patches and forget about them, sometimes you need to undo your work to get updates installed or to resolve problems (for example, the "disable internet check API" privacy setting can cause some applications to display "you're not connected to the WiFi" popups).

It's also an uphill battle against the ever encroaching Microsoft Edge bullshit; every time you remove part of the bullshit, Microsoft comes out with an update that adds more.

If you're stuck with Windows I'd consider the safe defaults for ShutUp1x as essential but you do need to read the notes for every setting you enable, which may require some Googling so you understand what you're doing.

Re: Windows: A software engineering odyssey (2000)

#88

Earlier quoted context omitted.

It's not difficult to de-shittify 10/11. There's a tool that automatically does it call ShutUp10. It's arguably a bit shit from a business perspective, but has no real impact on power-users day to day.

Does it work without a Enterprise install?

Yes, I'd even go as far to say it's designed for use with Home and Pro; it's setting the toggles enterprise/LTSC users will most likely already be managing through their centralized group management software.

Re: Windows: A software engineering odyssey (2000)

#89
post #50

Earlier quoted context omitted.

Certainly building everything from scratch is time consuming, but why should it be difficult? Windows 2000 was developed before I became a programmer, but not too many years later (2003) I was a teenager running Gentoo, and while it was time consuming to build everything from scratch, it was easy and reliable. It was also quite easy to switch out or hack on individual parts. In particular I remember fiddling endlessl…

I have no information here, but I wouldn’t be surprised if in 2003 Windows had an order of magnitude more code in it than a Linux distribution. Don’t forget, back then, Windows NT had support for these runtimes: Win32, Win16, DOS, and POSIX. Also, Windows had drivers for a lot more hardware than Linux did. Add in all the management stuff (Active Directory came about around this time), and I think it almost had to hav…

NT had a HAL and that's it, with VERY few drivers on its own.

Re: Windows: A software engineering odyssey (2000)

#90
post #75
post #29

Earlier quoted context omitted.

A lot of the original designs of Windows were elegant in theory but never simplified and unified. COM objects are a good example, they were just a pain to deal with from languages at the time (and arguably still are).

That’s indicative of poor bindings for those other languages. The nice thing about COM is that it provides a well-defined, C-based ABI for calling object-oriented interfaces; if your language has a FFI that supports C, then you can call COM objects. I’m a big believer that COM bindings for any language with automatic memory management should not expose refcounts directly to the programmer (at least in 90% of cases).…

COM was still a pain even when using MS languages. The WinRT era COM is a bit better but WinNT era was just needlessly elaborate. Everything was done with giant 128-bit GUIDs that were impossible to recognize or memorize, so they added a naming layer on top but it wasn't used consistently. COM servers had to be registered before they could be used, and that was the _only_ way to use them, so you couldn't just export some objects from a DLL and load them directly from that DLL (or at least it wasn't well documented, my memory is getting fuzzy about this stuff). Then you had the obscure thread safety approach in which instantiating some kinds of COM objects would create an invisible window that you were just expected to know about and then you had to write the boilerplate to pump the message loop, if you weren't doing the COM call on the UI thread. Etc.

The goals were good, and other platforms haven't really tried to achieve them (KParts and Bonobo were the closest equivalents but both were abandoned a long time ago, DBUS isn't quite the same thing). But COM was fiddly.

Post reply on HN