Software in the windows environment has depended chiefly upon dll's, vbx and activex modules to supply functionality.  The intent of the thinking behind these modules is that newly improved ones would contain all the functionality of it's predecessor and offer some new features needed by the new software. HaH! did we every get taken!
       Microsoft made the originals, and over time upgraded the originals, but at the same time software vendors both Microsoft sanctioned (sub-contracted), and independent also made changes to the modules. Very quickly it became apparent that if user A has Module A and installs an application with an identically named module A altered by vendor A and installs another application with the
identically named module A but from vendor B, chances
are that the first application will stop working. To add to
the woes there are so many of these modules, it is easy for
a vendor to create an identically named module to an existing one but that has a totally different purpose.
Hence dll hell

       Microsoft is moving away from this hell slowly. In
their new direction, .NET and Vista & Windows 7  updates would only come from Microsoft. Much of the functionality for apps would
come as downloads from a .NET endowed server
probably at Microsoft. Thusly Vendors would upload special modules to the server needed to run their apps.
As you start their apps on your PC the app would call
over the internet and fetch modules it needs. But here is what I have already seen!:

  1. Yes! having the modules available through a server does mean they are the most up-to-date versions at all times.
  2. Anyone can upload modules without restriction so a badly running module can cause disaster not just for one user at a time, but for thousands.
  3. If anyone can upload a module for whatever purpose, what is stopping a virus, trojan, or worm maker from using the service as an infection spreader.
  4. Use of the service last time I looked was free, but if all our apps become server based there is nothing stopping the runner of the service from charging on a pay per use basis. Did any light bulbs go on here!!!
    Microsoft has been the driving force for us to upgrade our hardware as they release new apps and operating systems with higher operating demands. Charge big dollars for these new apps and operating systems and now want us to get feature access on a per use basis!
  5. Currently, less than 1% of PC's in use at any given time are engaged in doing downloads. How are your internet service providers going to react if 99% to 100% of PC's in use need to download modules. Dialup users already have a restriction on bandwidth use whether it is an extra charge for more bandwidth or being bumped off or an outright connection refused.
  6. The speed of information transfer of your hard drive is something on the order of 4Mbytes/sec, but drops to 1Mbyte/sec ideal on ADSL and less than 0.0056Mbyte/sec on a dial-up modem. My question is therefore Why, if you have invested good money to have a fast system for which you don't have to wait would you want to slow it down for Microsoft's sake and do you really have the time to waste?

        Linux does not have the same issues as with windows dll's. Linux distributions do use function libraries however, each application is wrapped in an RPM that clearly outlines all modules and libraries required including the version of libraries and modules. It should be noted that in windows a dll might be named mfc42.dll which tells you only the name and purpose of file (dll = library). In Linux it is not too uncommon to see xproglib1-4-6.3.2  with a file attribute of -rwxrwxrwx which tells us more precisely that xproglib is a library and is executable by everyone in this case and has the exact version of 1-4-6.3.2.  So when you add more packages look at the package component descriptions before you install. Thusly if you have xproglib1-4-6.3.2 on your system and the description of your new package has xproglib1-4-6.3.2 with the same description you are ok otherwise you might consider modifying the path such that both versions of the same library-name can co-exist. Unlike Windows which writes newer versions of a library (dll) over the older version making existing apps sometimes fail, Linux is quite content to allow both the new and old versions as long as either version paths differ or version names differ as in xproblib1-4-6.3.2 and xproglib1-4-6.4.8 are unique names. In Linux a library is only removed when all applications that refer to that library are removed. Never manually remove a library! RPM software such as rpm drakerpm gnomerpm are designed to keep track of everything installed and their dependancies.