[wxpython-users] [Fwd: Boa Constructor 0.6.1. beta?]

Paul McNett p at ulmcnett.com
Wed Apr 16 12:49:04 PDT 2008


Marc Tompkins wrote:
> On Wed, Apr 16, 2008 at 11:24 AM, Paul McNett <p at ulmcnett.com 
> <mailto:p at ulmcnett.com>> 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



More information about the wxpython-users mailing list