Marc Tompkins wrote:
The specifics are: Windows is still mired in DLL hell. 
Oh, come on. "DLL hell" is just another way of saying "dependencies."
Not really. DLL Hell as I understand it refers to at least two deficiencies in the design of Windows:
1) Inability to update a library when that library is in use (the 'why do I have to reboot my computer after updating Internet Explorer' problem).
2) Inability for different versions of the same library to coexist in the same directory. So if program A relies on version 1.5 but program B needs 1.4, there isn't a good way for program A's needs to not screw up program B, and vice-versa.
I'm not a fan of M$ by any means, but the fact that certain programs depend on certain other files didn't start with them and won't end with them. When a Python program on Ubuntu fails because a module is missing, do we call it Canonical Crap? Not with a straight face, we don't.
In this case, I think I used the DLL Hell label a bit inappropriately, as an application removing a system DLL isn't behaving properly, which isn't really the fault of Windows.
Good practice has always been to only add or remove DLLs from/to your own directory; Windows never enforced that until fairly recently, and it's always been easier to throw your files into \Windows or \Windows\System32 (and yet to regard them as your own property.) If Microsoft is responsible for "DLL hell", it's generally been through failing to enforce best practices on developers - although they have certainly had some screw-ups themselves.
The whole point of having a dynamic link library is so that multiple programs or multiple instances of the same program can share it. Putting a DLL that is specific to your application is appropriately installed in the app's program directory, certainly. But msvcr71.dll? Sorry, that belongs in the Windows system directory.
You brought up the package management system in Debian/Ubuntu, so let's compare:
In Ubuntu, when you go to install a program that has dependencies, those dependencies are installed. If you manually remove those dependencies in the future, the package management system helps you reinstate them. If you remove the program that originally installed the dependencies, and they aren't used by any other installed program, the package manager offers to remove them, but keeps them installed by default.
In Windows, it is every app for itself. Windows knows something about which installed programs depend on certain libraries, but it is up to the app to write the correct registry entries, and the app can still decide to remove a file for whatever reason, if it has the permissions.
In Ubuntu, package management it almost completely centralized and controlled by one chokepoint. In Windows, it is a wild frontier. And to top it off, Microsoft keeps changing the so called 'best practices'. I think DLL Hell is an adequate description, actually. 
Paul
···
On Wed, Apr 16, 2008 at 11:24 AM, Paul McNett <p@ulmcnett.com > <mailto:p@ulmcnett.com>> wrote: