Slashdot Mirror


Linux Descending into DLL Hell?

meldroc writes "Or should I call it "Shared Library Hell"? The top story of LWN.net this week states that the newest version of GnuCash requires sixty libraries(!), many of which are new versions that aren't available out of the box with most Linux distributions. Managing shared libraries, with all their interdependencies and compatibility problems, is a major hassle. How should we go about dealing with the multitudes of shared libraries without driving ourselves mad or descending into the DLL Hell that makes Windows machines so unreliable?" Well, GnuCash 1.4.1 works fine for me, and I feel no immediate need to update to 1.6, the version that needs 60 libraries. But still a good point here.

467 comments

  1. Oh, come on, wussies by Anonymous Coward · · Score: 1

    Just because you have applications running with multiple versions of the same library from one desktop environment running under the other desktop environment with a window manager on top of X on top of an OS, what's the problem?

  2. That's why I use gnofin. by Anonymous Coward · · Score: 1

    Gnucash has always been dependancy hell. Try gnofin, the less fat alternative. http://gnofin.sourceforge.net/

    1. Re:That's why I use gnofin. by alehmann · · Score: 1

      I think that's a pretty funny thing to say about a Gnome program.

  3. Re:uh oh by Anonymous Coward · · Score: 1

    True dat. Frankly it's the first thing that occured to me when I learned about open source coding. The answer is having centralized and directed development, but that's not a GNU idea! I'd mod you up but registering is far too much care for a news recylcing site. --- Of course, I run OS9, Win95 and Win98SE so I don't really know anything about computers. I even run Internet Explorer. Even on my iMac!! I'm sure Guy Kawasaki and Linus will pee all over my grave. And I'm cool with that. I'll shut up now. Goodbye

  4. Well by Anonymous Coward · · Score: 1

    I have noticed this too; there are just too many dll's to deal with. A possible solution, although a bit far out i would admit, would be to have all the dll's in updated for online, and when your computer needs them, it can access them in advance, and have them ready for the program to run. When they are no longer needed, they can be discarded, or saved, depending on how often they will be needed in the future, or user preferences.

    1. Re:Well by Ayende+Rahien · · Score: 2

      Some versions break backward compatability, which is the reason for the DLL Hell in the first place.
      This is unlikely to change.

      --
      Two witches watch two watches.

      --

      --
      Two witches watched two watches.
      Which witch watched which watch?
  5. Star Office! by Anonymous Coward · · Score: 1
    What short memories! When staroffice was statically linked everyone bitched cause it was freaking huge and slow. Now people are saying, "lest go to static linking!!".

    Fools who ignore history are doomed to repeat it.

  6. Was simple enough for people back in the eighties by Anonymous Coward · · Score: 1

    Actually, Amigas did it just fine. Libraries were simply backwards compatible. If a function (say stealmoney(srcAcc, dstAcc)) needed to be altered in a way that made it incompatible, then it would be renamed to something else (say stealMoneyExtended(srcAcc, dstAcc, coverTracks)), and the old function would be kept (probably as a wrapper to the new one).

    Given this understanding, when you need to use a library, you simply require the lowest version that provides the features you need, and you get that version *or higher* (and thus, better) opened for you.

    The same thing applied to device drivers, etc, which were basically object oriented too (if in a primitive way).

    This was back in the early eighties, so come on - sort it out in Linux, guys.

  7. IANAI? by Anonymous Coward · · Score: 1

    self-contradictory? I read that as existentialist: "I am not (am I?)"

    1. Re:IANAI? by Fred+Ferrigno · · Score: 2

      "I am not an IANAI" is what I think he means.

      So, the world's first self-contradictory, palindromic, recursive, self-referential acronym, which is also potentially existentialist.

      --

  8. Re:It's not DLL hell that makes Windows unreliable by Anonymous Coward · · Score: 1
    Unless the admin has been paranoid / smart / had enough copious spare time to implement quotas, a generic user on a Red Hat Linux (and AFAIK, other distros) can crash the whole thing with a one-liner fork bomb
    Exactly how much copious spare time to they need to add:

    ulimit -u 50 -H

    ...to /etc/profile?

  9. Redefine "statically linked" to be "good"? by Anonymous Coward · · Score: 1

    Why is statically linked libraries called "bad". What is the justification? Shared libraries are only needed where disk space and/or RAM is limited. This was the case with Windows when it introduced the ".DLL". Systems had *MB RAM and 120MB hard drives. Yes, dynamic makes sense here. But today? No. Static... is good.

    1. Re:Redefine "statically linked" to be "good"? by Darren.Moffat · · Score: 1
      Issues with static linking

      This is my stock answer for why static linking is a bad idea it is written with Solaris in mind but applies equally well to an UNIX like system and to Windows systems as well.

      Static linking reduces the overhead when the program is started up, mainly because relocations and some other start-up activities are done at compile time.

      However, static linking is generally discouraged. Here are some reasons :

      Static linking prevents libc_psr.so.1 from working for platform specifics. This library automatically enables dynamically linked programs from linking in platform specific versions of various library routines which are optimized for a particular platform.

      Static linking greatly increases working set size and disk footprint.

      Statically linked executables are NOT necessarily binary compatible between releases - the Sun Application Binary Guarantee does not apply to statically linked programs.
      eg. statically linked programs that use libsocket will failed if compiled on 2.5.1 or less and run on 2.6 or later.

      Patches to system libaries for bug fixes and performance enhancements are not automatically picked up by the application. This is most important for library based security fixes.

      Some debugging libraries/tools will fail to work properly.
      eg. malloc debugging.

      Localistation via setlocale(3c) / gettext(3c) is not supported when libc is statically linked.

      When to use static linking

      The binary is critical to system operation when in single user-mode either for the startup of the OS or for disaster recovery.

      Statically linking a private (internal) libarary is okay.

      Don'ts

      Statically link against libc
      Statically link against libdl

    2. Re:Redefine "statically linked" to be "good"? by whereiswaldo · · Score: 1

      I wholeheartedly agree with your reasoning here.

      I would also like to add this thought:

      Imagine if disk space and memory were free and available in unlimited commodities. Also imagine you had infinite processing power. Now, you have built a game that has DirectX 5 statically linked (huge, so what). Ok, DirectX 6 comes out and it has optimizations for the new GeeWhiz 3d card you bought. Because your game has DX5 statically linked, you must provide an update with DX6 statically linked. Now you have to keep up on the new video cards out there in addition to making the game. Isn't it easier and more cost-effective for Microsoft to work on the graphics API separately and for you to stick to making the game?

      Also, consider this is a simple example with only one required library. There is also joystick support, sound card support, tcp/ip, cpu optimizations, etc.. etc.. This is why the operating system itself provides dll's, so you can independently upgrade subsystems. Heh, what if win.com was a 250 meg single executable?

  10. Re:Is there a real solution to this? by Anonymous Coward · · Score: 2

    Http://www.linuxbase.org is trying to acomplish this. They have good backing and if all goes well we should have a bit more of a standard library group.

  11. Theoretically there should be no problem by Anonymous Coward · · Score: 2
    To get into serious trouble simply disobey one of these rules:
    1. Perform proper versioning on your shared libraries. The simplest rule is: If your new version breaks binary compatibility (on any platform!) change the soname. Normally you would bump the major version number. The versioning abstraction layer provided by GNU libtool is far from being perfect, but it does it's job.
    2. Make your shared libraries fully self contained. Many platforms (if not more) provide everything to accomplish this. At runtime (and at compile time for executables or shared libraries that your library is linked to) the system must be able to resolve all needs of your library. The executable and linking (or linkable?) format provides the dynamic tags NEEDED and RPATH for this. Most prominent example for ingnoring this rule is libpng: You think you need to say -lpng -lz for linking against libpng? You are dead wrong! If libpng would be self contained, the linker does not only know, that libpng needs libz, but where it should look for libz (for the case it's not in /usr). So no need to say -lz as long as you don't use libz in your code.
    But there are problems. First of all the GNU ld needs to be fixed. It fails use the RPATH of shared libraries, when looking for NEEDED libraries at link time. I sent patches, but nobody seemed interested.
    So long, happy linking.
  12. Re:Difference from Windows... by Anonymous Coward · · Score: 5

    Wrong - you're talking about COM interfaces. Look up "COM" and "DLL" to see what is being discussed here. If MS had in general followed the versioning requirements of COM, perhaps there wouldn't have been a DLL hell. As someone else pointed out, MS merrily changed the entry points of DLL's (note: not the same as a COM interface), which was simply stupid. It caused unimaginable pain for users and installations. Nothing to do with COM and GUID's.

  13. Re:Relax. by Alan · · Score: 2

    Good point, except that I'm happily running gnome 1.4 under debian unstable and selecting gnucash caused 15 extra packages to be installed:

    libguppi11
    libwrapguile
    libwww-perl
    slib
    scm
    guile1.4
    guide1.4-slb
    libgwrapguile0
    libnet-perl
    liburi-perl
    libhtml-parse-perl
    guile-common
    libnet-telnet-perl
    libhtml-tagset-perl

    This is on a system with a fairly extensive set of apps used normally. I can see where if you use perl for a bunch of your stuff, and guile, there really is no choice but to install the full development files and libs on a system that has no guile stuff on it.

    However, it's 40ish mb of archives that I have to download (Thank $DEITY for fast adsl!).

  14. Re:Why doesn't Linux adopt a Mac OS X type scheme? by torpor · · Score: 2

    That is pretty cool.

    Question.

    Is it like this?

    \SomeAppDir\!Application
    \SomeAppDir\!Application\!Sprites
    etc.

    Or is it like this?

    \SomeAppDir\!Application
    \SomeAppDir\!Sprites
    etc.

    Just curious... RISC OS sounds fun.

    --
    ; -- the corruption of government starts with its secrets. a truly free people keep no secrets. --
  15. Re:Relax. by Patrick · · Score: 1
    Next time they will think before starting a script with #!/bin/bash.

    Picky point, but let's chalk it up under "educating other developers..."

    Starting a script with #!/bin/bash is the right thing to do, if you've (for whatever reason) used bash-specific constructs in your script. What's wrong is starting it with #!/bin/sh so that it fails halfway through running with a page of syntax errors.

    Since autoconf puts in the #!/bin/sh line for you don't use bashisms in your configure.in. Please. Learn what's a bashism and what's not.

    I might even go so far as to suggest that cross-platform developers install a lighter shell as /bin/sh (ash, for example). The key thing is that it's sh-compliant but not bash. Then see how many configure scripts break. In a build of GNOME 1.4, I think it's at least 4.

    (I'd also -- happily! -- settle for all the commercial Unixes making bash their default. Total cost: $0. Value to advanced users: priceless. Sun, are you listening?)

    --Patrick, also frustrated by how much babysitting building GNOME under Solaris requires

  16. Application directory anyone?? by mAIsE · · Score: 1

    How about
    /usr/local/gnucash/lib
    /usr/local/gnucash/bin/gnucashinit.ksh

    You could set your entire environment to point to an application specific lib directory and you're done.

    Don't approach a UNIX problem in a m$ mindset.

    1. Re:Application directory anyone?? by tzanger · · Score: 1

      Yes it is. And the inability of Windows to do this is exactly what is causing the problem on Windows. DLL Hell is not having a great many libraries. DLL Hell is having multiple DLLs with the same name but different versions. Windows is unable to differentiate between them. And since in-memory DLLs have priority over on-disk DLLs, breakage depends on the order you've started your applications.

      Don't forget that Windows DLLs have a nasty habit of lying about their version so that older software will be happy with a newer version. The first time I heard that this existed I nearly shit a brick; it defies all sense and usefulness to having version numbers in the first place!

    2. Re:Application directory anyone?? by buysse · · Score: 1

      Duplication of data is not a valid mindset. Shared library versioning is the answer, young grasshopper.

      Also, imagine if every app did this. And you people bitch about Redhat using up 2 gigs of disk now... :)


      --
      -30-
    3. Re:Application directory anyone?? by Erik+Hensema · · Score: 1

      Duplication of data is not a valid mindset. Shared library versioning is the answer, young grasshopper.

      Yes it is. And the inability of Windows to do this is exactly what is causing the problem on Windows. DLL Hell is not having a great many libraries. DLL Hell is having multiple DLLs with the same name but different versions. Windows is unable to differentiate between them. And since in-memory DLLs have priority over on-disk DLLs, breakage depends on the order you've started your applications.

      This, offcource, would never happen on Unix as ELF does know about versioning.

      --

      This is your sig. There are thousands more, but this one is yours.

    4. Re:Application directory anyone?? by argv · · Score: 1

      That is the /opt approach and the correct one.

      Improvements I would make:

      1. If it is a truly shared library:
      ln -s /usr/local/gnucash/lib/libcool.so /usr/local/lib

      2. If you don't make it backward compatible be told how much you suck by the community.

    5. Re:Application directory anyone?? by Yoo+Chung · · Score: 1

      If you use application specific directories for shared libraries, you may as well statically link the whole thing in the first place.

      --
      I'm not sure if I'm real.
    6. Re:Application directory anyone?? by gatesh8r · · Score: 1
      This I have to agree with. It makes rational sence. Loki does this for their games, and has front end bash scripts to set up the varables, etc, that are needed for the dynamic loading of the program. I am not a Loki developer, but you should try to actually use a hex editor on what you think is a binary to just see the file begin with #!/bin/bash :-)

      The other thing I have to comment about is the universal question of upgrades: 1) Is it too soon, and 2) is it worth it? Things like dependancy hell is one thing that sucks. Another thing is resolving all the dependancies to see all sorts of other apps shatter sucks too. I agree. Sometimes upgrading isn't worth it you know.

      This next phrase sounds redundant, and it most likely is. Let someone weed out the dependancies that gets paid to do so or is willing to volunteer to do so. Hell, I'd wait for GNONE 1.4 and my other programs to resolve with the depandancies if I wanted to do a whole system upgrade; by that time the next release of my favourate linux distro would be out!

      Otherwise, ya, I agree with the parent post here. We should do have a -seperate- package for those who want to keep various other shared libs around, especially if they are core libs!

      --
      Karma whorin' since 1999
    7. Re:Application directory anyone?? by friday2k · · Score: 1

      Maybe I am just plain stupid here? But is it not about _shared_ libraries? Id rather put another abstraction layer in between, agree on standards for call interfaces and call it done. Require minimum version and do not kill the rest if you upgrade. But this requires stringent programming in a distributed environment. And agreements on standards. Welcome to comittee work hell (and is it so much better than DLL hell? Both are hot ...).

    8. Re:Application directory anyone?? by Thurn+und+Taxis · · Score: 1

      Um... what's the point of a shared library if it's not shared?

      You ARE the Missing Link. Goodbye!

      --
      On stereophonic equipment, the monaural sound obtained through multiple channels will enhance your listening pleasure.
  17. Re:It's not DLL hell that makes Windows unreliable by Trepidity · · Score: 1

    But then again I use Opera v5.11 on Win98, and it doesn't go down in flames, so the OS remains stable.

  18. Re:Libraries: Harken to the Bad Old Days by Ian+Bicking · · Score: 3
    When's the last time you saw a "disk full" error?
    What, efficiency isn't worth anything these days?

    But, really, this breaks down under certain usage patterns. On a system like Debian, where package installation is trivial compared to Windows, there are a ton of packages. I currently have 694 packages installed, though a significant number of them are libraries.

    Consider another pattern -- extended environments. Gnome is an instance, as is KDE. I have 12 Python packages installed, and Python by itself doesn't even do anything. I won't speculate on how large Gnome or KDE are.

    I have 41 gnome packages installed (or, at least packages named gnome*). What would happen if I had 41 copies of the Gnome libraries for these applications? What if packages had even greater granularity? What if I get to choose which applets I want installed? What GTK engines I want? Hell, I don't even know how engines could work with 41 copies of the libraries.

    Sym linking identicle libraries to save space wouldn't do any good, because that offers nothing better than what I have now (which works just fine, actually) -- where most libraries end up in /usr/lib. In a funny way, I suppose hard links would almost work right.

    On Windows per-application DLLs kind of make sense. On Windows, people don't have that many applications installed. Each application tends to do a lot on its own. This is partially the influence of commercial tendencies (people don't want to pay for something too small), and partially it's because small applications quickly become unmanagable on Windows. But Debian doesn't have this problem, and RPM-based systems have, well, not too much of this problem. Why "fix" what isn't broken?

    Next you'll have us putting application files in directories named after domain names or company names, to avoid naming conflicts. /usr/applications/org/gnu/gnucash. Uh huh.

  19. Re:Linux Shared Libraries offer more choices by demon · · Score: 1

    I have two words for you: "Use Debian." Debian's package format is _so_ much better in terms of handling dependencies versus RPMs. I've never had to force install DEBs - at most, I might have to add a line to /etc/apt/sources.list, run 'apt-get update' to read the package list, then 'apt-get install <package>'. I've rarely had package installation problems, unlike friends I've known who used a RedHat-derived distro, who seem to frequently have problems with getting packages to install happily.

    Really, if you are a RedHat user, and you're having packaging issues - get and install Debian. You just might like it.
    _____

    Sam: "That was needlessly cryptic."

    --

    Sam: "That was needlessly cryptic."
    Max: "I'd be peeing my pants if I wore any!"
  20. Re:Hey programmers by demon · · Score: 2

    So what would you _like_ programmers to do, then? People talk about reusing existing code, but then complain when you require more shared libs, due to the fact that you're using someone else's code for some particular functionality instead of writing your own (to redo the exact same thing - why solve the same problem AGAIN?).

    People really need to make up their minds. I know I for one would prefer to reuse someone else's code for common functionality, rather than having to rewrite it myself every time I need it (or static link it, making unnecessarily bloated binaries).
    _____

    Sam: "That was needlessly cryptic."

    --

    Sam: "That was needlessly cryptic."
    Max: "I'd be peeing my pants if I wore any!"
  21. Re:Welcome to Windows? by jedidiah · · Score: 1

    ...or barring that: just installing all of the packages related to a particular desktop. "The latest GNOME" satisfies most of the dependencies in question.

    This is not what "DLL hell" is/was under WinDOS. This is actually the polar opposite: end user fright induced by being made aware of what exactly is going on and being the one managing it.

    If the 5 required meta-packages have some conflicts with some older software, then this would be actual DLL-hell and cause for alarm.

    --
    A Pirate and a Puritan look the same on a balance sheet.
  22. Re:Windows, Gnome - same thing by jedidiah · · Score: 1

    It can be thought of as one huge monster package that is organized as a single unit. It's not as if you have 60 completely independent subcomponents that could potentially all be competiting with each other.

    What is under discussion here is not really a list of 60 components, but 5.

    --
    A Pirate and a Puritan look the same on a balance sheet.
  23. 60 Libraries indeed! by jedidiah · · Score: 2

    According to the gnucash site, the requirement is for GNOME 1.4 plus 4 other libraries. This is hardly as complicated as the situtation is being made out to be in the editorial.

    --
    A Pirate and a Puritan look the same on a balance sheet.
    1. Re:60 Libraries indeed! by albanac · · Score: 1

      Consider, if you will, the fairly high likeliehood that you want to use GNUCash without installing GNOME...

      ~cHris

      --
      Chris Naden
      "Sometimes, home is just where you pour your coffee"
  24. Re:Yea but by jedidiah · · Score: 2

    ...Another fine example of slashdot respondents not bothering to inform themselves on the issue before spouting off.

    Most of the GNUcash dependencies are satisfied merely by "obtaining latest version of associated desktop". That hardly rates as "including every single doo-dad" or "spans 10 DVD's".

    This is more a matter of a developer using "bleeding edge" libraries rather than creating some perverse octopus.

    --
    A Pirate and a Puritan look the same on a balance sheet.
  25. Re:Relax. by Sludge · · Score: 3

    I agree that code reuse causes bloated software in that libraries often are required to deal with a very general case of the problem, which requires much more time than just coding an example by yourself.

    However, I can prove that code reuse isn't always bloat: the ANSI C library on your system. If the ANSI C library was statically linked, there wouldn't be any shared memory redgarding it between your processes. When you run 'top' and a process says it takes up a few more megabytes than you thought it would, be sure to check the shared column.

    Saying that code reuse causes bloat is not the whole story. Code reuse serves both sides of the bloat war.

    \\\ SLUDGE

  26. Relax. by Sludge · · Score: 4

    The software requirements require "60 libraries" because "The majority of the GNUCash 1.6.0 dependancies are satisfied by Gnome 1.4".

    If major distros don't yet support the libraries of recent software releases, that's fine with me. The push for newer versions should come from bleeding edge software.

    Aside from that, I personally commend the code reuse of GNUCash. Functionality needs to be reused as much as possible: We're working alongside giants. Let's stand on each other's shoulders.

    \\\ SLUDGE

    1. Re:Relax. by Goonie · · Score: 1

      Aside from the download time (which, I'll grant you, might be a PITA on a 56k modem, but takes very little time on a DSL or cable connection) what's the problem with that?

      Go you big red fire engine!

      --

      Any sufficiently advanced technology is indistinguishable from a rigged demo
      --Andy Finkel (J. Klass?)
    2. Re:Relax. by Goonie · · Score: 2
      Come on. I'm sure they could have done better. Installing gnucash on my system, not counting the libraries I already have installed, would take 35332k! (yes I actually checked).

      Sure. You can then install Abiword, Gnumeric, Nautilus, Evolution, and Dia in another few megabytes. That's the point of shared libraries.

      Oh, and by the way, have you checked just how much screenshot-heavy documentation gnucash provides?

      Go you big red fire engine!

      --

      Any sufficiently advanced technology is indistinguishable from a rigged demo
      --Andy Finkel (J. Klass?)
    3. Re:Relax. by cabbey · · Score: 1

      the problem is not scripts that start with #!/bin/bash, the problem is scripts that start with #!/bin/sh but depend on bashisms that aren't part of the standard sh. I can't count how many of these types of things I've encountered compiling stuff on AIX.

    4. Re:Relax. by alehmann · · Score: 1

      Come on. I'm sure they could have done better. Installing gnucash on my system, not counting the libraries I already have installed, would take 35332k! (yes I actually checked).

      This isn't a troll. Code reuse is sometimes a good thing, but often it results in awfully bloated software.

    5. Re:Relax. by alehmann · · Score: 2

      Okay, but what if I don't _want_ any of those applications? Well, I have AbiWord installed but it has no Gnome dependency (as long as I'm a developer...)

      The package maintainer for Debian should consider splitting gnucash into itself and a -doc package. That way people will have more flexibility. I like to install all documentation on my fileserver but keep my workstations light.

    6. Re:Relax. by alehmann · · Score: 2

      I agree with you, but you're just restating what I said! I quote myself: "Code reuse is sometimes a good thing, but often it results in awfully bloated software."

    7. Re:Relax. by Arricc · · Score: 1

      But surely Solaris is available for download from Sun for FREE, so many developers could in fact be using it for testing?

    8. Re:Relax. by MROD · · Score: 5

      The problem here is that you're looking at things from a purely Linux-centric viewpoint.

      The other week I had a go at building and installing GNOME under Solaris so as to get a certain piece of scientific software running on our Sun Solaris systems (which range from versions 2.6 to 8).

      I first went to the GNOME site and downloaded the libraries the web pages told me I needed.. plus everything else fromt he stable directory. I thought that as I'd read the instructions and downloaded all of the stable source I would be home and dry, it'd just need a lot of configure, build and install cycles.

      Little did I know that most of the libraries in the "stable" branch required a multitude of libraries fromt eh unstable one, many of which didn't play well in the configure scripts (they assumed that /bin/sh == bash and a few other Linux-centric assumptions).

      Basically, after a week of trying to build things, finding I needed yet another library or utility from an unstable branch or from an obscure web site somewhere I managed to build enough of the core libraries to build the application.

      And before anyone says "Why didn't you download a binary version?" I did look into this but the version on SunFreeware was disgned as a single machine installation, not a network wide one. The recently released Sun beta release version of GNOME 1.4 is only for Soalris 8 AND half the libraries needed by the scientific application were newer than in the GNOME 1.4 "release."

      If the library API's aren't standardised soon and kept stable then people will shun such things as GNOME. For someone tinkering on their own system it may be fine to play for weeks getting things working, but in the "real world" this is just untenable.

      --

      Agrajag: "Oh no, not again!"
    9. Re:Relax. by Rakarra · · Score: 1
      How much of Gnome 1.4 did you actually install? All the Guile and slib packages came with my Gnome 1.4, but then I use Ximian's. The libnet and liburi are some pretty basic/common perl libraries, I'm pretty surprised Debian doesn't install them by default.

    10. Re:Relax. by Rakarra · · Score: 1
      Thats the biggest problem with the Linux community and with applications written for Linux.

      The community couldn't give a rats ass about anything other than their own precious operating system. There is no concept of reality.

      Or perhaps a more realistic explanation is they simply don't run those operating systems and therefore have no way to test them. It's hard to test an OS incompatibility if the tests pass on all the machines you have available to you.

    11. Re:Relax. by BlowCat · · Score: 5

      Don't just complain on Slashdot. Send patches to the developers. Many developers don't have Solaris or other commercial UNIX to test their software. What is obvious to you is not always obvious to them. Help yourself. Educate developers. Next time they will think before starting a script with #!/bin/bash. An hour spent by you on bugreports will save an hour to thousands users of your OS.

    12. Re:Relax. by txe · · Score: 1

      I use Solaris extensively. I like it very much, probably because I know more about it than any other Unix, but I also like Linux, because it's easier to just blow onto a box when I need to create a workstation or test something trivial.

      I dare say that I am moderately to very experienced in compiling freenix (Linux, *BSD) soures to work with Solaris, both GNU and of other origin. A few times, I have submitted patches of what I have done, not necessarily "correcting" an "error", but most often dealing with Solaris idiosyncrasies that can be "fixed", but typically might not be (think DNS round-robin and the result when using INADDR_ANY).

      However, an overwhelming amount of times, the people maintaining the sources have just shrugged and said "well, post it on some Solaris messageboard, we don't run Solaris", or given some other response in the same vein. I'm not saying everyone's guilty of this, but a lot of developers think that if it can be fixed on the system, it should be, not in the software. This is unfeasible when speaking about server installations, that cater to a multitude of other applications. I will not break, or even force reconfiguration of, iPlanet, for instance, just to be able to run a small util.

  27. Re:Installing Free Software by jafac · · Score: 2

    hence the vast market for Ghosting and Imaging software.

    --

    These are my friends, See how they glisten. See this one shine, how he smiles in the light.
  28. X drivers, etc. by Xenophon+Fenderson, · · Score: 2

    You're wrong. Even the regular XF86_SVGA server must directly access the IO space, and it does so through the kernel. On my Alpha, when I still ran Linux on it, I had nothing but problems with X. A perverse combination of user operations (e.g. a fill or scroll) would completely lock up the machine.

    Yes, there are times when some poorly-written X app kills the server, and there are times when the X server bugs out without killing the OS. But your statement "X and the Kernel are clearly different" is a gross oversimplification, ignoring, iovec(), memory-mapped IO, and the like. Even the most lowly frame buffer drivers must directly access the hardware.


    Rev. Dr. Xenophon Fenderson, the Carbon(d)ated, KSC, DEATH, SubGenius, mhm21x16
    --
    I'm proud of my Northern Tibetian Heritage
    1. Re:X drivers, etc. by loopkin · · Score: 1

      Ok, i am wrong, X is the Linux kernel, you are right. I'm gonna tell Linus we've found a new feature of his kernel.
      My statement IS NOT an oversimplification, since there are BOTH a LINUX KERNEL MODULE AND AN X DRIVER, which means "X and the Kernel are clearly different". BTW the kernel module is usually generic, whereas the X driver is usually specific. This distinction DOES NOT EXIST on Windows.

      And i can go further: with X-systems, the GUI server, window manager, etc. are clearly independant piece of software. That's what "layer programming" (sorry i must not know the exact english term) means, and that's one of the reasons why the UI is heavier but more stable on Linux than on Windows... (the main other beeing the open-source coding)

      Of course, this doesn't mean it's impossible to lock the machine with an UI app, but it's far more difficult... The main problem beeing that if you don't have a network access to your machine, the OS can actually be still running and functionnal, but the keyboard beeing locked by X (well... the faulty X app), you can't log on a text console and kill X. I barely never had a case when i had to reboot my linux box because of a faulty app (and believe me, i use crappy apps !).. I think it happens twice a year... on windows it used to be twice a day... Last time i had serious total locks-up problems with Linux, was simply because of faulty hardware...

  29. Re:This is why 'Stable' distributions exist by Jason+Earl · · Score: 2

    I found it a little bit ironic that I read the lwn.net article about Gnucash yesterday afternoon and this morning my daily 'apt-get update ; apt-get -dy dist-upgrade' of Debian unstable put a copy of gnucash-1.6.0 on my desktop. Also included in Debian unstable is Evolution 0.10, Mozilla 0.9.1, and Nautilus 1.0.3 they all seem to work together fairly well. It seems that a version of Netscape is also available, but I wouldn't know, I haven't used Netscape in some time.

    Shared libraries are good. And shared libraries are especially good in Linux where it is a trivial thing to have different applications use different versions of the same dynamic libraries. With the next generation of Linux distributions all of these libraries will be included (probably by default), and so installing will be a piece of cake.

  30. Re:Difference from Windows... by Jason+Earl · · Score: 2

    The difference is that in Linux you can use LD_LIBRARY_PATH so that you can guarantee that your application loads the dynamic libraries that you need. Couple that with a library versioning system that has major and minor revision numbers and that allows you to have several different versions of a library and you have a system that is basically DLL-Hell-proof.

    The author of the original lwn.net article apparently simply doesn't know what the heck he is talking about. If the Linux system that you are using does not make adding new libraries a trivial undertaking then this needs to be filed as a bug. Gnucash 1.6.0 is a new release, and to run new releases you either have to know how to build and install software, or you have to wait until someone else does it for you.

    To illustrate this, I spent a small portion of time this morning playing with Debian unstable's version of gnucash-1.6.0. I installed it with a simple 'apt-get install gnucash' and it painlessly downloaded gnucash and all of the required libs (that I didn't already have). After nearly an hour of playing things seem to be just fine (and gnucash is much improved over the 1.4 series).

    Dynamic libraries are good. They are even good on Windows now that Windows 2000 has finally got their act together and allows multiple versions of the same DLL to be in memory at the same time. They have been useful on Linux for quite some time.

  31. Re:This is why 'Stable' distributions exist by Jason+Earl · · Score: 2

    The my entire /etc/apt/sources.list consists of two lines:

    deb http://http.us.debian.org/debian unstable main contrib
    deb http://non-us.debian.org/debian-non-US unstable non-US/main

    Notice that I am not using Ximian's packages. I have used them in the past, but unstable has generally had the software I needed without the extra hassle of dealing with Ximian and their sometimes not quite Debian compliant packages. I ended up removing all of the ximian packages some time ago.

    RedHat is a fine choice for a distribution, and Debian isn't for everyone. It seems to me that RedHat probably would be the way to go if you were primarily interested in Ximian's Gnome packages. At least with RedHat those packages are likely to be well tested.

    Either way, there certainly is no evidence of DLL Hell. It is just a case of a program that has a lot of required libraries. To my mind this is the best sort of code reuse, and is definitely a good thing.

  32. Don't Confuse DLL Hell with the Linux Situation by Mihg · · Score: 5

    Linux isn't experiencing anything remotely similar to DLL Hell.

    DLL Hell is when Foo DLL 1.0 and Foo DLL 6.0 both stored in the file foo.dll (unlike libfoo.so.1.0 and libfoo.so.6.0) and brain damaged installer programs blindly replace foo.dll version 6.0 with foo.dll version 1.0, thus breaking every single program that depends on the newer version of foo.dll

    Because so many of these crappy programs exist, Microsoft has made an attempt at fixing the problem by introducing the Critical Files Protection mechanism, in which the operating system itself monitors file creations and modifications, looking for these stupid installers as they attempt to replace the new versions with the old versions of the libraries. Attempts at change silently fail, and the installer runs along its merry course without breaking things too badly.

    1. Re:Don't Confuse DLL Hell with the Linux Situation by blirp · · Score: 2
      DLL Hell is when Foo DLL 1.0 and Foo DLL 6.0 both stored in the file foo.dll (unlike libfoo.so.1.0 and libfoo.so.6.0) and brain damaged installer programs blindly replace foo.dll version 6.0 with foo.dll version 1.0, thus breaking every single program that depends on the newer version of foo.dll

      ... or blindly replacing ver. 1.0 with ver. 6.0 leaving apps dependent on features and bugs of 1.0 unusable.

      M.

  33. what is realy hell by hany · · Score: 1
    Making dozen of applications use same library takes just good design decisions from library and app developers. User has to just make decision whether this brand new application is worth of updating also some libraries.

    What is far more harder (and the true hell) is having avery application use bundled version of needed libraries - user can end up with system filled up with various instances (even same versions) of same library. Do the security updates in such situation!
    Not mentioning the fact that such attitude completely misses the core point of SHARED libraries - being shared

    Note: Of course there are some situations, where library bundling is good think - that's why we have also static linking.

    --
    hany
  34. Basically the problem is only gnucash by Moritz+Moeller+-+Her · · Score: 2

    The developers ALWAYS use the latest and greatest odd little library. The program has not worked on SuSE forever.

    I am not surprised that they chose gnome-1.4 which has been available for 6 weeks as a base for a finance app, that would happily work as a gtk app (like gimp).

    --

    --
    Moritz
  35. Let the package maintainers take care of it by Bruce+Perens · · Score: 2
    Once this software becomes part of a Linux distribution, the package dependencies will take care of those 60 libraries for you. At least that's the case with Debian, if Red Hat doesn't put this in their official distribution it might be a bit harder.

    Thanks

    Bruce

    1. Re:Let the package maintainers take care of it by Goonie · · Score: 2

      Indeed. GnuCash 1.6.0 is already in Debian unstable, in fact (thanks to the great work of the Debian maintainer).

      Go you big red fire engine!

      --

      Any sufficiently advanced technology is indistinguishable from a rigged demo
      --Andy Finkel (J. Klass?)
    2. Re:Let the package maintainers take care of it by MikeFM · · Score: 3

      Tools like apt, Red Carpet, and the Apache Toolbox are doing a good job of handling this problem for me. I constantly run the newest versions of applications without any extra legwork.

      Since the majority of Linux software comes in packages we'll never enter the DLL Hell in the way Windows has because you can always see where each file comes from and how they relate just by bothering to do some legwork.

      Upgrading is no big hassle for the most part. Use something like one of the above mentioned tools to stay updated or if you must resort to a program that is none-standard try something like wget (or in many cases just plain old ftp) to suck all the needed files in.

      --
      At what price learning? At what cost wisdom? The price is a man's peace of mind, and the cost is his life.
    3. Re:Let the package maintainers take care of it by Chris_Keene · · Score: 1
      Fine if you have a network connection.

      Consider trying to install the latest version of Gnome... At work (using FreeBSD), cd /usr/ports/x11/gnome ; make install ta da!

      At home (using Debian stable), well, it's a non starter, for all the hype about apt, I haven't found a way to use it without a internet connection (if there is a way then it's well hidden). I see no reason why we should not be able to download a huge single file, burn it to cd, take it home and install it. With mirrors in place, large files with all the dependencies, shouldn't be a problem.

      There might be something in place at the moment to do this, I'm sure that if I knew what I was doing I could just download the right files from a gnome mirror. But the point is not 'what I do and don't know', rather that a large amount of people will not install the latest version of Gnome/KDE/etc until it just involves downloading one file and taking it home. Not night after night after night, downloading a program, home machine moans it lacks x,y,z, download x,y,z from work, install them at home, y requires a,b,c (which, on the next night, I will find require d,e,f).

      I want to spend time being productive, not trying to work out how to upgrade my browser/desktop/wm etc...

      --
      You will forget this sig before you next see it
    4. Re:Let the package maintainers take care of it by revengance · · Score: 1

      If I want to let the package maintainers taking care of it, I would be better off using Windows. I use linux because it allows me to fiddle with it, and if doing anything going to break some dependencies, it is gonna to be a sad day for linux.

    5. Re:Let the package maintainers take care of it by Prior+Restraint · · Score: 1

      Remind me to remove gnucash tonight.

      Why? If it's already installed and working, why not use it?

    6. Re:Let the package maintainers take care of it by MrDBCooper · · Score: 1

      > At home (using Debian stable), well, it's a non starter, for all the hype about apt, I haven't
      > found a way to use it without a internet connection (if there is a way then it's well
      > hidden). I see no reason why we should not be able to download a huge single file, burn it to
      > cd, take it home and install it. With mirrors in place, large files with all the dependencies,
      > shouldn't be a problem.

      Read /usr/share/doc/apt/offline.html/index.html and/or check out the apt-zip package.

      --

      --

      --
      Free Software enthusiast; Debian GNU/Linux (powerpc) developer
    7. Re:Let the package maintainers take care of it by jsse · · Score: 2

      the package dependencies will take care of those 60 libraries for you. At least that's the case with Debian,

      A package relys on such a huge set of dependencies would cause many dependency problems when you apt-get upgrade once a while. Slight problems would cause packages holding back or something like "...package xxxx is needed but yyyy is installed instead." failure.

      Remind me to remove gnucash tonight.

      P.S. apply to Debian unstable/sid distro only. Stable version shouldn't have that much problem because it's well-tested and upgrade is less frequent.
      &nbsp_
      /. / &nbsp&nbsp |\/| |\/| |\/| / Run, Bill!

  36. Re:You wanna talk hell... (not NeXT style) by spitzak · · Score: 2

    I think this idea has been suggested several times here, and is a good one. However it does mean the "application bundles all the libraries it uses". What you are saying is that the application does not necessarily use those libraries if the same version can be found in a more central place. Personally I feel this could be done with some kind of hash codeing of all the read-only pages swapped into memory, thus merging any matches without any version or file matching at all, but what do I know...

  37. Re:Installing Free Software by spitzak · · Score: 2
    YES EXACTLY!

    Why the hell is there anything more complicated than this. I really want to be able to test the software without "installing" it.

    Just put the libraries in there and fix the system so it is trivial for a program to turn argv[0] into it's execution location and it looks in that lokcation for shared libraries first. Yea, it's different, but it will be far better.

    Or put the source code in there and when the user double-clicks it pops up a window that says "please wait, compiling gnucash" and then it works and is perfectly adapted to your system. This would be a huge win, and is something closed-source providers just cannot do! Don't worry about the time it takes, people are apparently willing to waste hours running "install" and the compile is nothing compared to that.

  38. Re:Difference from Windows... by spitzak · · Score: 2
    I have been writing shared libraries for NT for awhile, and it does appear to do weird unpredictable things. I don't bother to figure it out, I just logout and back in (that seems to reset it) and continue.

    I am just making normal DLL's (whatever you get when you "link /DLL" all your .obj files). It does appear it searches $PATH when it needs a DLL (I always must remember to delete my optimized copy, which is an earlier directory, before running if I want debugging to work). In this case it works exactly like LD_LIBRARY_PATH (which reminds me, I am just as confused by Linux as Windows. Why isn't this variable *always* needed, why is there some other mechanism to locate shared libraries?)

    However one nasty screw up I have seen several times (but I can't reproduce at will, that's NT for you!) is that sometimes the other library will get "locked into memory", so that it refuses to load my new copy. I swear that I have exited, and even deleted, all the executables that are using that shared library, but it is still there! It appears that logout/in fixes it. Also deleting the library itself works (though that crashes running apps using it, why aren't the files locked like NT locks the executables?)

    Another annoyance not mentioned here about NT is that you must use a DLL if you want to support "plugins" because all functions the plugins call must be in the DLL. Linux also has this but you can link your program with "-shared" and it then works like the Unix systems I am more familiar with (though I don't do this here as the software has to port to NT and repliating the difficulties of NT helps to keep things portable). For this reason I have to produce a DLL for no good reason at all, only my program uses it, and it is likely only one copy of my program is running at any time. I have heard there is some way to make a "DLL executable" but I can't locate it, just building a DLL out of all the source does not make a runnable program.

    Another huge Windows annoyance is "__declspec__(dllexport)". That crap is going to pollute header files in code for ages after NT is dead and buried. What a waste.

  39. Re:Difference from Windows... by spitzak · · Score: 2
    That link is used to locate the newest version when linking a new program. Already-linked programs have the version number in them and do not use the link (however after that it gets confusing and I do not understand it, it has complex rules to select from many possiblities and only the first number in the filename must match).

    This can be demonstrated easily by removing those links, programs still work, but you cannot compile programs (or they find the static versions of the libraries).

    You can use symbolic links to get DLL hell, as I will sheepishly admit I have to get downloaded programs to work. Link the version name of the library the program complained about to whatever version you have and often the program will work! However newer things like libc seem to have version information in the file that is checked so you can't outwit it that way.

  40. Re:It's not DLL hell that makes Windows unreliable by spitzak · · Score: 2
    Woe is me to defend MicroSoft, but MFC really is equivalent to Qt, while the Win32 API's are equivalent to libc plus Xlib. Before you complain that somebody says "don't use MFC" you should realize that there are plenty of Linux people who say that for reliability you should not use Qt. The same argument applies to both systems.

    PS: MFC is also as big a lock-in for MicroSoft as Word is. A huge stumbling block for getting programs ported to Linux is that they are written with MFC or VB systems. The MFC source code is totally useless for the port as it calls Win32 stuff (like structured file parsers) that nobody would ever use in any real code but MFC does so they can hide the implementation.

  41. Re:Libraries: Harken to the Bad Old Days by spitzak · · Score: 2
    How come nobody has tried some kind of "compression" file system that uses hash codes or something to locate identical blocks of files and maps them to the same place? This would allow thousands of copies of the same DLL to take much less disk space, and would even allow "static linked DLL" where the disk and memory are shared just because the pages are equal, and in general would work with no symbolic links or os support.

    Would this work, or am I just clueless? Is anybody trying this? Never saw anything about it in all the file system discussion.

  42. Re:Debian != smart by spitzak · · Score: 2
    I agree with you 100%

    Too many posters here seem to have no concept of a program that you can "run" without "installing" it first, and go on about how great apt-get is at "installing".

    Listen to the orignal poster. The steps desired to run a new program are:

    1. Download the file

    2. Double click it.

    3. It's running! No, it is not "installing", it is RUNNING!!!! Get that through your thick heads.

    Also not mentioned is what the user does if they decide the program is crap and don't want it:

    1. They drag the downloaded file to the trash (and empty it, I guess).

    2. THAT'S IT! We are exactly in the same state as they were before they downloaded it. It does not "deinstall", it's one file!

    What is being talked about has nothing to do with "installation".

    If you want "installation" here is how it should work:

    1. The user runs the program

    2. The program somehow shows a question like "do you like this program and want it to appear in your Gnome/KDE startup, and in everybody else's (or for services, do you want to run it for real versus the simulation that is running now). The user clicks "yes".

    3. It pops up a panel and asks for the root password.

    4. It churns and it is "installed".

    To "deinstall" you do this:

    1. Somewhere in the system directories is a file with exactly the same name. You (as root) take this and put it in the trash. It's GONE!!!!

    2. Somewhat later KDE/Gnome may notice that the menu items don't point at anything and hide or delete them.

  43. Think about this for a second by ivarneli · · Score: 1

    This article claims that many libraries are re-used only if the same application is running twice. However, this probably happens more often than you would think. I can remember times when I've had 15 Internet Explorer windows open. If all of these were using completely independent portions of memory (with no shared libraries), I doubt if a 128 MB system could handle the load. Furthermore, consider the case of Linux, where nearly ALL applications are linked to the standard C library. To run a quick test, I compiled "Hello World" both statically and dynamically linked. The shared library version was just under 12K, while the statically-linked version was slighly under 1 megabyte! Imagine if every little utility in Linux - cp, ls, touch, chown, date, df, echo, more - were statically linked. Just this extremely minimal set of utilities would be larger than Netscape 4.76 statically linked with the Motif libraries! Furthermore, look at the difference between the statically and dynamically linked versions of Netscape. The static version is 7.69M, which is almost 33% larger than the dynamic version, weighing in at 5.8M. The author claims that dynamic libraries do not lead to significantly smaller executables, but I consider 33% in this case to be quite a significant difference.

    I admit shared libraries can be a pain when not widely distributed. I recently wrote a simple GUI-based program in Visual C++ 6, which links against the latest VC runtime library. When I gave this to the person who had asked for it, they were unable to use it because they did not have the latest library. For the sake of simplicity, I made a statically-linked version and was amazed when my little 400K program started approaching 5MB in size. Transferring such a program over a dialup connection is not fun, and to do so more than once because of statically-linked libraries is both a waste of time and space.

    I remember several years back when I first wanted to install the Enlightenment window manager and having to compile and install about 10 different programs and libraries just to get it to work. It was a pain, and I thought there should be an easier way. When a program uses a library speficically written for that program, and with only limited usefulness outside the realm of that program, I think static linking is acceptable. However, doing away with shared libraries altogether would be foolish and shortsighted.

    Just my opinion. If my figures are horribly inaccurate, feel free to correct me.

  44. Re:It's not DLL hell that makes Windows unreliable by Howie · · Score: 2

    as root, I can hose a Linux system, not matter how stable it is supposed to be).

    Hell, as a regular user you can hang X and the console badly enough that you can't use it or reset it. I did it yesterday with RH7.1 and Konqueror (sp?). The X server should not be able to crash based on requests from it's clients, but it does.
    --
    the telephone rings / problem between screen and chair / thoughts of homocide

    --
    "don't fall into the fallacy of believing that Perl can solve social problems. Maybe Perl 6 can, but that's a ways off"
  45. That's exactly how Unix works by RelliK · · Score: 1

    Unix (and hence Linux) also allows you to have multiple versions of libraries installed. Take a look at /lib and /usr/lib directories some time. You'll see things like:

    libfoo.so.x.y
    libfoo.so.x
    libfoo.so

    libfoo.so.x.y is the actual library, and x.y is the major/minor version (it might be x.y.z or whatever). Point is that you can have multiple versions of those installed at the same time. libfoo.so.x and libfoo.so are symbolic liks to the actual library. An application can use either the default library (libfoo.so) or it can specify the version.

    DLL hell occurs in Windows precisely because multiple versions of libraries cannot be installed at the same time. So if app1 needs foo.dll version 1.2 and app2 needs version 1.3, one of these will not work. This situation generally does not occur on Unix as long as the library developers bump up the version when they change the API.
    ___

    --
    ___
    If you think big enough, you'll never have to do it.
  46. Re:Libraries: Harken to the Bad Old Days by Lars+Arvestad · · Score: 3
    I mean, is this really the right answer? Do I need 20 copies of the same damned .NET DLL on my disk, one for each application? I think not. I do not consider this an intelligent move at all.

    I now virtually nothing about MS Windows and MS's plans for it, but I do remember the commotion here on /. a year or so ago when MS patented "a new OS feature", basically automatic links. You can have as many copies of same file on disk as you want, without using more space than one file. When an application wants to change a file, the link is substituted with a real file.

    Managing DLL:s was the purpose of this "invention".

    Lars
    __

    --
    Reality or nothing.
  47. Re:Libraries: Harken to the Bad Old Days by buysse · · Score: 1
    applications will keep their own .DLL's in their own application directories

    Dammit, I know that disk is cheap, but this makes me start wondering if the conspiracy theorists aren't bloody right! (Intel/Microsoft -- sell the OS and apps to sell new hardware, which of course comes with an OS... How many people would buy a bigger drive, vs just saying that their computer can't handle it and buy a new one?)

    I mean, is this really the right answer? Do I need 20 copies of the same damned .NET DLL on my disk, one for each application? I think not. I do not consider this an intelligent move at all.

    --
    -30-
  48. Re:Libraries: Harken to the Bad Old Days by buysse · · Score: 1

    I'll be honest -- from a technical standpoint, it's the best way to make a broken system (Windows) work without fixing the technical problem -- that you don't link against a version of a shared library, you link against a filename.

    Honestly, the concept of having to keep N copies of a given file just offends me on some level... it just seems inefficient and wrong.

    Really, how is it that my uber-l33t 1.2Ghz Athlon feels slower than a 2.8 Mhz Apple II running a program with the same basic functionality -- a word processor? Just needed to get that off my chest. </rant>


    --
    -30-
  49. Re:static goddamnit! by buysse · · Score: 2

    Um, you don't run a multiuser system, do you... the problem is that if this program is statically linked against 60 libraries, it's probably going to use up a fuck of a lot of memory. And, if you have 10 users running statically linked programs, you hurt. Badly. Especially since it's usually not just one program -- imagine Gnome statically linked. There are several resident programs, all linked against X and libc at a minimum (call it an extremely -- almost psychotically -- optimistic 5 megs each for library code, plus the app.) That's a lot of memory for 10 people running a desktop... and they might want to do work too. Shared libraries exist for a reason.

    --
    -30-
  50. Difference from Windows... by buysse · · Score: 5

    The major reason we refer to it as dll hell on Windows is very simple -- there's no concept of a version. App A uses v6 of foo.dll, app B uses v8. It's still named foo.dll. Oops -- the API changed. Hell.

    Unix systems have the concept of a version -- you change the API, you rev the major version of the library. The old one's still there if you need it, but apps will get (dynamically) linked against the version of the library they were originally linked against.

    Yeah, it's a bitch (and a half) to compile all that shit -- I've compiled Gnome (and all dependencies of it) on a Solaris box from sources. It's a pain in the ass. But, as Bruce Perens said in another post, that's the job of the packager -- Ximian, RedHat, the Debian volunteers (thanks.)


    --
    -30-
    1. Re:Difference from Windows... by rpk · · Score: 4
      I've got some experience with this issue, having had to make different versions of DLL from the same vender coexist, and perhaps some of you Linux whippersnappers will learn something. Windows DLLs can be used in a upward compatible manner; it's just that it's hard for most people to understand the issues of DLL compatibility.

      When we're talking about DLL hell, the first thing to keep in mind is that usually we are talking about incompatible changes in behavior or interface in libraries that are *meant* to be shared. Once a software designer decides to expose an interface, he becomes hostage to his installed base. Effectively, as others have pointed out, the name of the DLL becomes its interface identifier. So by convention you should encode the lowest compatible revision number of the interface in the DLL name. You can keep the name the same as long as you are binary-compatible, not matter how much the implementation changes. For example, MFC didn't change much from version 4.2, so when Microsoft came out with MFC 5.0, the names of the DLLs didn't change from MFC42*.DLL because they were still binary compatible.

      If you need to share some state even between different versions of the same facility (like a list of file handles for different versions of libc), you are going to have to factor the internal state into yet another interface -- and that one that better be evolvable for a very long time.

      The sad fact of the matter is that maintaining binary compatibility is hard, because there are technical details to master, and because of the discipline required to keep all potential clients working without have to rebuild and relink. You can't change the names or signatures of functions, you can't change the layouts or sizes of structures or classes, and older bugs that clients rely on as features will become features that have to be supported. If it's a C++ interface, you can't add virtual functions to base classes, although you can add new nonvirtual class functions. Of course, you can add new functions. It is also possible to "version" structures for expandibility, but this is tricky.

      By the way, while static linking is a way around some DLL problems, one of the cases in which it can't work is when a DLL implements in interface to functionality that requires shared state in the same address space. You can have multiple clients of a DLL in the same address space when both and application and its extension libraries refer to that DLL. This happens a lot with ActiveX controls on Windows (and in-process COM servers in general), and I suspect that this also happens in Apache on Unix as well.

      Both Windows XP and Mac OS X have mechanisms for allow shared libraries to be hived off so that you can have private version for yourself, but I don't know much about how they work.

      Note that shared Java classes are much easier to deal with, but isn't like there are no interface changes have binary compatibility implications.

      The other way around this problem is to expose the interfaces(s) in a language-neutral object model that supports interface evolvability, such as [XP]COM or CORBA. Unfortunately, it's not always easy to use these kinds of interfaces, and most of these kinds of systems don't offer implementation inheritance (with the notable exception of .NET, which is Windows-only currently and also requires language extensions), which is a handy feature of a C++ class exposed in a DLL.

    2. Re:Difference from Windows... by Pig+Hogger · · Score: 1
      The ONLY option for true compatibility is to have multiple, separate DLLs, and dynamically link against the correct one.
      The ONLY option is to keep the fucking DLLs that come with an application within the fucking application directory!!!!

      --

    3. Re:Difference from Windows... by Stiletto · · Score: 2

      Unix systems have the concept of a version -- you change the API, you rev the major version of the library.

      Now if only glibc followed this guideline... :-)

    4. Re:Difference from Windows... by Deven · · Score: 2
      Unix systems have the concept of a version -- you change the API, you rev the major version of the library. The old one's still there if you need it, but apps will get (dynamically) linked against the version of the library they were originally linked against.


      Sure, it works great in theory -- until you realize that many of these shared-library authors haven't bothered to CHANGE that major version number when the API changes! And this has even happened with libc!!!
      --

      Deven

      "Simple things should be simple, and complex things should be possible." - Alan Kay

    5. Re:Difference from Windows... by ethereal · · Score: 2

      Congratulations, Microsoft has successfully duplicated (er, I mean "innovated") the technology of multiple shared libraries and LD_LIBRARY_PATH. They're only how many years late to the party? :)

      Caution: contents may be quarrelsome and meticulous!

      --

      Your right to not believe: Americans United for Separation of Church and

    6. Re:Difference from Windows... by dillon_rinker · · Score: 2

      As does Windows - it's not an 'exclusively Unix' kind of thing. The problem only arises when developers DO NOT follow the convention that you change the filename when the version changes.

      Wrong...it's a problem that arises when developers DO NOT follow the convention and you DO NOT have the ability to alter code. In the Windows world, bad code is uncorrectable.

    7. Re:Difference from Windows... by flink · · Score: 2

      Windows DLLs do have versions. That's what the Class ID is for. When you break binary compatability, you generate a new ClassID.

      Take, as an example, msado.dll. You want to use the Recordset object. We'll assume there are two versions. Your registry will look something like this:
      (This is from memory, I don't have a win machine in front of me)

      ...
      HKEY_LOCAL_MACHINE\Classes_Root\ADODB.Recordset\ Cl assID = {aaaaa-11111-blahblah}
      HKEY_LOCAL_MACHINE\Classes_Root\ADODB.Recordset\ Cl assID = {bbbbb-22222-fooey}
      ...
      HKEY_LOCAL_MACHINE\Classes_Root\{aaaaa-11111-bla hb lah}\InProcServer32 = C:\Program Files\Common\ODBC\msado15.dll
      ...
      HKEY_LOCAL_MACHINE\Classes_Root\{bbbbb-22222-foo ey }\InProcServer32 = C:\WINNT\System32\msado20.dll

      The upshot of this is that if you use static binding, i.e. you point your compiler at the DLL, the ClassID of the dependancy is compiled into your program, and you're guarunteed to get that version or later loaded at runtime.

      If, on the the other hand you use late binding (CreateObject() in VB) the ClassID is determined at run time by checking the registry. If multiple copies exist, I think you get the one with the newest version string.

    8. Re:Difference from Windows... by spectecjr · · Score: 1

      Unix systems have the concept of a version -- you change the API, you rev the major version of the library. The old one's still there if you need it, but apps will get (dynamically) linked against the version of the library they were originally linked against.

      As does Windows - it's not an 'exclusively Unix' kind of thing. The problem only arises when developers DO NOT follow the convention that you change the filename when the version changes.

      Simon

      --
      Coming soon - pyrogyra
    9. Re:Difference from Windows... by CharlieG · · Score: 1

      Russ,
      Thanks - Didn't know that it had made it into W2K (which is what I run at work and on one of my home machines)

      --
      -- 73 de KG2V For the Children - RKBA! "You are what you do when it counts" - the Masso
    10. Re:Difference from Windows... by CharlieG · · Score: 5

      Doesn't work in windows, and I've been telling developers this for years.

      First, some background - I'm a windows developer, and have been since Windows 3.0 (programming for a living since 82), and I even played around with development before that

      Windows, when looking for a NON OLE DLL, first looks in MEMORY, then in the local application directory, then the Windir, Then Winsysdir, then apppath. When loading an OLE type DLL (as most are today), it looks where the REGISTERED version is, and ignores all other copies on your system

      Putting the NON OLE DLL in your applications directory works fine, IF you ONLY run that one app at a time. What happens if you run the app the uses the OLD version of the DLL FIRST, then load the second app at the same time - RIGHT the dll is already in memory

      What is supposed to be done, and I've spent years yelling at some of my co workers is this

      YOU NEVER BREAK BACKWARDS COMPATABILITY WITHOUT RENAMING the DLL. It will bite you in the ass. Your install program should NEVER overwrite a newer version of a DLL with an older version.

      The BIG problems are the following
      1)Developers writing non backwards compatible DLLS - Crystal Reports is famous for this. CTRL3D32 is also a example
      2)MANY companies thing that running install programs is too much work, because their in house developers come out with "The Version Of The Day", so they use batch files to overwrite DLLs/programs without checking versions or what is in the registry

      Folks, MSFT has said "Don't Do That" for years. Unfortunately, they don't prevent you from doing this. That is why XP is supposed to (last I heard) load a different copy of the DLL for each application - then the idea of "DLL in the application directory" works great - The .NET project is also supposed to fix this - we'll see.

      Shared libs will cause this same descent into hell if we're not careful to prevent this problem. The answer is NOT "Make sure you install the latest RPMs (debs)" assuming that they will be backwards compatible - this WILL fail. It's the same answer Microsoft took - "If you do it right, it works". The problem is, when you become the OS that sits everywhere, people WILL do it work, and then complain

      --
      -- 73 de KG2V For the Children - RKBA! "You are what you do when it counts" - the Masso
    11. Re:Difference from Windows... by throx · · Score: 2

      You've been telling developers the wrong thing. Windows 3.1 behaved this way, but NT has always loaded different DLLs for different applications. I've used that fact many times in my developement life.

      It's even simple to prove. Create two DLLs of the same name - one that prints "1" and one that prints "2". You can easily get two different apps to load the two different DLLs at the same time.

      Basically, if you read NT Internals or even MSDN, you'd realize that tha path of the DLL AND the relocation address has to be the same before the DLL can be shared. If these two aren't the same then you have two copies of a DLL with the same name in memory.

      --

      Fear: When you see B8 00 4C CD 21 and know what it means

    12. Re:Difference from Windows... by throx · · Score: 3

      I wasn't sure at the time that it worked on Win9x as well. I just tried it. It does.

      So, the REAL problem with DLL Hell is simply that people are installing DLLs into the system directory instead of with their applications.

      --

      Fear: When you see B8 00 4C CD 21 and know what it means

    13. Re:Difference from Windows... by Dwonis · · Score: 2
      Exactly, and with stuff like apt-get, your packages can depend on (or recommend, or suggest) the libraries it needs.

      I would say that a large number of dynamic libraries on GNU/Linux is actually be a good thing (code reuse). In fact, it should go even further, so that rather than relying on stuff like Visual Basic, a programmer could just write a small program that does little except calling library functions.

      On Debian, you can install any non-repository package and its dependencies by running: dpkg --force-depends -i packagename.deb ; apt-get -f -y install
      ------

    14. Re:Difference from Windows... by be-fan · · Score: 1

      Actually, if you look at the PE file format, there are fields for not one but two version fields (library and subsystem) and something resembling a soname. So Windows supports it, its just that Windows developers don't use it.

      --
      A deep unwavering belief is a sure sign you're missing something...
    15. Re:Difference from Windows... by rossz · · Score: 1

      Then explain why the instructions for something I installed on Linux said to create a link to the shared library: "ln -s foo foo12". What happens when another app requires something similiar: "ln -s foo foo20"? Now you have dll hell on Linux.

      The problem is going to get worse - I guarantee it. Shared libraries/DLLs are a bad idea.

      I realize this problems is the result of lazy programming. Unfortunately, lazy programmers exist on all platforms.

      --
      -- Will program for bandwidth
    16. Re:Difference from Windows... by Desdicardo · · Score: 1

      In regards to your last paragraph...

      If you have a well defined interface you can usually get the same effect as implementation inheritence by using aggregation. This is often referred to as the decorator pattern. In gerneral, it is a better way of doing things since implementation inheritence breaks the notion of encapsulation. Joshua Bloch does a better job of describing this in his book, Effective Java.

    17. Re:Difference from Windows... by Steeltoe · · Score: 2

      That's all jolly good, but why do Microsoft and 3rd party companies insist on delivering DLLs with only one possible simultaneous version? Hint: 32 is usually NOT a version number in MS Windows. To save space and memory? Well you're back to square one => DLL Hell.

      - Steeltoe

    18. Re:Difference from Windows... by mkcmkc · · Score: 1
      The major reason we refer to it as dll hell on Windows is very simple -- there's no concept of a version. App A uses v6 of foo.dll, app B uses v8. It's still named foo.dll. Oops -- the API changed.

      Right. And along with that, the custom in the Windows community seems to be for each application installer to overwrite whichever DLLs they like with whatever version they like, potentially breaking your other applications in arbitrary and mystifying ways.

      We're past that problem in Linux, since multiple versions can exist peacefully side by side.

      --Mike

      --
      "Not an actor, but he plays one on TV."
    19. Re:Difference from Windows... by mkcmkc · · Score: 1
      Although, I must say, I've not encountered such a problem on windows in a long time. Has something changed?

      I don't know--it's been several years now since I really have used Windows in any serious sort of way. (By observation, I gather that it is at least still quite unreliable anyway.)

      --Mike

      --
      "Not an actor, but he plays one on TV."
    20. Re:Difference from Windows... by rabtech · · Score: 3

      Windows 2000 can already do this... multiple copies of different versions of a DLL in memory at the same time.

      Also, if you create a ".local" file in your app's directory, Windows will first try and load all shared libs from your app's directory.

      For example, "foo.exe".... if you wanna load ALL dlls out of your own directory, just create a file called "foo.local", and problem solved.
      -- russ

      --
      Natural != (nontoxic || beneficial)
    21. Re:Difference from Windows... by cjwatson · · Score: 1

      You're confused about how symbol versioning works (as are a lot of people complaining about this, it seems). glibc has it arranged so that it can change its API without it breaking things.

      You change the major version number of a library (or, more accurately, its SONAME) when you make changes that break programs properly linked against older versions of the library. But when you install a new version of libc6, programs linked against the old version continue to work! So they have backward compatibility, and don't have to change their soname. Sure, if you link a program against the newer libc6, people will need a comparable version of that library to run it, but they can upgrade the library and not break everything else on their system. This was not the case between libc5 and libc6, which was why the soname had to change.

      (Oh yeah, and before everyone jumps in with libc6-2.0 to libc6-2.1, sure, that caused a few problems, but only because a minority of people linked against libc6-2.0 in weird undocumented ways. In 2.1, the glibc people closed that so that this problem couldn't happen in future.)

      If you still don't understand library versioning, and care enough to want to find out, the libtool documentation has some notes on how it works. If you don't believe me about libc6, try objdump -p /lib/libc.so.6 and look for the "Version definitions" section. That lists all the interfaces it supports.

      Forgetting about GNU/* for a moment, Solaris is still on major version 1 of its libc: it has (or at least claims to have) never broken backward compatibility.

    22. Re:Difference from Windows... by Twylite · · Score: 2

      This unfortunately is not good enough. Replacing an old DLL with a new one can break things.

      Too often the new DLL corrects old bugs for which a program had to use a workaround, which causes the workaround to fail. Alternatively the new DLL can change functionality subtly or introduce new bugs, causing the same problems.

      The ONLY option for true compatibility is to have multiple, separate DLLs, and dynamically link against the correct one.

      This does, however, cripple the OO capabilities inherent in the OS: if you update DLLs like MSVCRT, you can cause L&F changes to all apps, keeping the system updated and consistent in L&F. BUT you do this at the risk of introducing the problems given above.

      --
      i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
    23. Re:Difference from Windows... by Twylite · · Score: 2

      There are two aspects to "DLL Hell":

      First, the inability to distinguish a relationship between applications and DLLs, because not all applications correctly add this information to the registry.

      Second, the tendency of the system or applications to "break" because a DLL upon which they depend has changed.

      In the second case, refer to the problem of the glibc upgrades. All applications had to be recompiled. Not a massive problem in a world where everything is distributed as source code, but when it came to binaries (and the Windows platform is completely binary based), it was a big issue. Unix has the same problems as Windows, we just don't see them as often because the core libraries are more stable.

      If you don't install DLLs in the system directory, and they are shared DLLs, then you lose the benefit of software reuse. You end up with dozens of copies of the same DLL.

      --
      i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
    24. Re:Difference from Windows... by Ayende+Rahien · · Score: 2

      Actually, MS' guidelines says that installer has to make certain that it doesn't replace newer DLLs with older ones. It also has a good mechanism to track DLL usage, so you know when you can safely delete a DLL.

      Unfortantely, a lot of people ignored both recomendations, which cause the problem.

      Although, I must say, I've not encountered such a problem on windows in a long time. Has something changed?

      --
      Two witches watch two watches.

      --

      --
      Two witches watched two watches.
      Which witch watched which watch?
    25. Re:Difference from Windows... by Ayende+Rahien · · Score: 2

      The assumstion is that DLLs with the same name won't break backward compatability.
      This may not always be the case in reality, of course :-)


      --
      Two witches watch two watches.

      --

      --
      Two witches watched two watches.
      Which witch watched which watch?
    26. Re:Difference from Windows... by NutscrapeSucks · · Score: 2

      Well some Windows developers have used it - to lie about what version of the DLL they are installing in order to get the installer to drop their back-revision into the system directory.

      This sorta thing is essentially why Microsoft removed control of the system DLLs from the user-err-installer.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    27. Re:Difference from Windows... by ThePilgrim · · Score: 1

      Developers like Microsoft you meen :)

      --
      Wouldn't it be nice if schools got all the money they wanted and the army had to hold jumble sales for guns
  51. Re:You wanna talk hell... (not NeXT style) by acroyear · · Score: 2
    I as a developer hate that use of the word, "framework". A framework already has a meaning in OO-speak, and not all of the "frameworks" in the Mac system fit that definition...probably very few.

    Its a bad use of a word/phrase that already has a meaning, that will in the end only confuse young and budding developers. I hate Java's "Design Patterns" (in this case, the naming scheme for JavaBean accessors and event methods) for the same reason -- "Design Patterns" already had a well used, and mostly well understood meaning.
    --
    You know, you gotta get up real early if you want to get outta bed... (Groucho Marx)

    --
    "But remember, most lynch mobs aren't this nice." (H.Simpson)
    -- Joe
  52. Re:Installing Free Software by JSD · · Score: 1

    If you're smart as use Debian:

    apt-get install gnucash

    done.

    --
    seth
  53. This has been solved in other areas... by davecb · · Score: 2

    The problem is a particular instance of the general "continuous maintenance problem", which is now reasonably well understood (i.e., it's not academically interesting any more). This has been solved in particular cases as far back as Multics and, more topically, in the relational database world.
    I have one of Paul Stachour's papers on the subject, although it needs to be OCR'd...

    What's a suitable place/list to discuss this?

    dave (formerly DRBrown.TSDC@Hi-Multics./ARPA) c-b

    --
    davecb@spamcop.net
  54. Re:Is it really necessary.. by Mr.+Frilly · · Score: 2

    well, if you want a slimmed down version of Linux, try:
    rm -rf /usr/share

    hell, even better, try this:
    rm -rf /home /usr /var

    now you're down to a bare-bones, 10 MB linux install with all the cool commands left (ls, cp, sort, etc.). Pretty cool eh?

  55. Re:Helping the community? by zimage · · Score: 1

    I fully agree. These guys have brought the software a long way since I started using back with 1.2.5 (thanks to a slashdot article abuot it :)
    The "60 libraries" quote is actually just the output of `ldd gnucash | wc -l`! Guppi contributes 8 of them, ORBit contributes 4, etc... It really only requires 4 packages or so that aren't part of the standard Gnome distributions.

  56. GLibC can't be upgraded by erl · · Score: 2
    There are very serious problems with the shared library versioning scheme on Linux.

    I pointed out some of them on the bug-glibc mailing list:

    • if glibc (or really any shared library, bug glibc is fundemaental for all apps) is updated (even from, say, 2.1.1 to 2.1.2), the n all applications (including things like X-windows) on the system need to be recompiled for guaranteed correct behaviour.
    • If a user has glibc 2.2.2, downloads an application which was compiled with glibc 2.2.1, but uses some shared already on the user's computer compiled under glibc 2.2.2, correct behaviour is not guaranteed.
    I havn't had time to propose a solution, but there should be one if you think hard enough...

    The current situation is not acceptable.

  57. Why doesn't Linux adopt a Mac OS X type scheme? by VanL · · Score: 5
    One of the most interesting features I read about in Mac OS X was the way in which they distributed binaries. They have a "package" that appears as one binary object, but it acts (for the loader and linker, I presume) like a directory. Inside are stored versioned libraries.

    Couldn't something like this be done to reduce the clutter? Have "gnome-libs.pkg" which is actually a tar or tgz file. When an application needed to use a library, it would involve an extra step -- extracting it from the tarfile -- but that would only be on first load (after that it would be cached in swap) and the cost to retrieve the file would be minimal.

    On the other hand, the possible gains would be enormous. Packaging would become simple. For most applications, install/uninstall could simply be putting the binary in bin and the libpkg in /usr/lib.

    I guess what I'm thinking of is like GNU stow, just taken further. Why not make those directories into tarfiles?

    Want to make $$$$ really quick? It's easy:
    1. Hold down the Shift key.

    1. Re:Why doesn't Linux adopt a Mac OS X type scheme? by gutter · · Score: 3

      I agree that the Mac OS X does things is pretty cool, but you're slightly off. Applications are distributed as folders, but the GUI treats these folders as single objects (although there is a command to open the package). From the command line, they still look like folders. You launch them like 'open OmniWeb.app'.

      Shared libraries are treated much the same way - they go in folders called 'OpenGL.framework' or whatever. They contain the library, the headers, other resources, and can contain multiple versions of the framework, which are versioned with a major/minor scheme - minor upgrades don't contain API changes, while major versions do - this way, programs can still use the right version of a framework if an incompatible one is installed, but can still benefit from framework upgrades.

      I really do wish Linux and other UNIXes would move to this scheme - it's really nice.

      --
      Check out DRM-free movies at http://www.bside.com
    2. Re:Why doesn't Linux adopt a Mac OS X type scheme? by number6 · · Score: 1

      First off, just to confuse things, RISC OS uses '.' as a path seperator. It also doesn't have the concept of a file extension - you have filetypes which are encoded into the directory data, and control what icon to use, and what to do when the file is run, edited or printed.

      Anyway, a typical directory of applications will look like:

      $.Apps.!MyApp.!Boot
      $.Apps.!MyApp.!Sprites
      $.Apps.!MyApp.!Sprites22
      $.Apps.!MyApp.!Run
      $.Apps.!OtherApp.!Sprites
      $.Apps.!OtherApp.!Run
      $.Apps.!Otherapp.datafile

      The '$' is the root directory, plus you can have multiple sprites files for different resolutions.

      A simple virus could propagate by writing stuff into the !Boot file (!Boot and !Run were normally scripts), since it was always run as soon as the $.Apps directory (or wherever) was opened.

      There's a screenshot at:

      http://www.bifrost.demon.co.uk/comp/graphics/des kt op.gif

      More info at http://www.riscos.com/

      It was good for its time.

      --
      I'm a number, not a free man!
    3. Re:Why doesn't Linux adopt a Mac OS X type scheme? by number6 · · Score: 3

      RISC OS has been doing something like this for ~15 years, and is one of the things I really like about it.

      If a directory name starts with a '!', it's an application directory (this could have been done better, but it's not too bad). Inside is a file called !Boot, which is run when the directory is first 'seen' by the filer. This sets up filetypes and other info for auto-running the application if a document is run for instance.

      There's a !Sprites file which provides icons for the application in the filer window. There's also a !Help file which gives info on the application.

      Finally, there's a !Run file which is run if the application is doubleclicked.

      This makes it very easy to keep multiple copies of the same application around. Installation consists of copying the app-directory onto your hard drive. Uninstall involves just deleting it.

      Things can get more complicated if it starts using shared modules, but I never had problems with backwards compatibility with these.

      --
      I'm a number, not a free man!
    4. Re:Why doesn't Linux adopt a Mac OS X type scheme? by Malcontent · · Score: 2

      It seems like a shell could be made to run a particular binary in a directory to mimic this function. For example if all apps had a binary named runme in ./appdir/bin/ then the when you typed ./appdir the shell would know to run ./appdir/bin/runme.

      --

      War is necrophilia.

    5. Re:Why doesn't Linux adopt a Mac OS X type scheme? by Peter+Harris · · Score: 2

      More like: SomeDir.!Applicati.!Sprites
      (Weird pathnames, and 10-char filename limit).

      It was fun, while it lasted. But it's pretty much dead now, and it was a bit limited.

      Having said that, if you like that sort of thing and you have Linux, try ROX. It's a set of GUI applications that look and act (a bit) like
      RISCOS, only better. I prefer it over Gnome.

      --

      -- What do you need?
      -- Gnus. Lots of Gnus.
    6. Re:Why doesn't Linux adopt a Mac OS X type scheme? by forgoil · · Score: 1

      This is since they have been thinking when they made NeXTStep which grew into OpenStep and then MacOS X (iStep? MacStep? NextMac? ^_^). To the user, there is one icon == one application. Can it be more simple? I love this, it's great.
      What I don't know is how they fix the libraries that are shared... that is still a problem, a big one, and nobody seems to want to fix it. Some try to manage it, but that is seldom a way forward.

    7. Re:Why doesn't Linux adopt a Mac OS X type scheme? by commanderfoxtrot · · Score: 1

      This brings up one major failing of the tar.gz format: it is just a tar file which has been gzipped. Thus to extract a single small file, even if it is only one byte and at the very start of the archive, the entire archive must be decompressed. This could take a bit longer.

      AFAIK, the zip format compresses each file individually. The best way of implementing your scheme would be lots of individual gzipped files in a normal tarchive.

      --
      http://blog.grcm.net/
    8. Re:Why doesn't Linux adopt a Mac OS X type scheme? by tal197 · · Score: 3
      The 10-char limit was removed a while back IIRC.

      The RISC OS scheme has security problems on multiuser systems (running !Boot when you look at a directory is not good!) but ROX doesn't use boot files.

      Incidentally, ROX uses Gtk and XDND, so it should play nice with GNOME apps.

  58. It's so simple! by Lazy+Jones · · Score: 2
    Problems such as these can be easily avoided:
    • If you're the package maintainer, release source code and statically linked binaries, so that people can use your program without hassle
    • If you're a distribution maintainer, figure out the dependencies and only release problematic versions once all the necessary libraries are available in your distribution
    I would also recommend that projects that need so many libraries do not depend on the latest version of all of these (usually, there's no real reason to hard-code such dependencies into configure scripts etc., it's just the lack of information about incompatibilities between libary versions). If you can't ascertain that your code will work with older library versions, or if you're just too lazy to check, stick to these older versions while developing - it's what your users will have!

    (why do open source software authors pay so little attention to their users' needs?)

    --
    "I love my job, but I hate talking to people like you" (Freddie Mercury)
  59. Is all libs needed? by CrazyFraggle · · Score: 1
    Is it really necessary to upgrade every lib or is that just lasy programming from the developers? I've seen very often lately that configure-scripts require you to install the latest version of libs even though nothing has changed in the lib on the functionality that the program uses.

    Developers should take a bit more care to check which versions are absolutely needed to get their programs compiling and running, instead of forcing us to upgrade to every new library.

    I don't believe for a second that Gnucash uses bleeding edge new functionality in every one of the 60 libraries it is dependent on.

    --
    - the Crazy Fraggle
  60. That reminds me... by rpk · · Score: 1
    Is there any Unixoid solution to the problem of recompiling and reinstalling things from source when the correct version is already installed ? For example, the ports system on FreeBSD (which I think is basically pretty cool) can't seem to figure out that you've already a X library from XFree86 4.x is already installed, so it helpfully goes off and download (to build) XFree86 3.x because somebody didn't upgrade a port description. Why can't it look inside the library/executable or a database and check the implementation number against what it requires, and try to build a new version of a dependency only if it doesn't mean the requirements ? You can't just go by the file date !

    Seem to me that you need a VERSIONINFO-like tag inside Unix modules (and perhaps static libraries, unless the library format can) so that unrelated facilities like the OS installer, package installers, and dependency-driven builders can all avoid stomping on the new versions of things.

    1. Re:That reminds me... by cjwatson · · Score: 1

      Debian has an equivs package that gives you a handy way to fool the packaging system if need be.

  61. Re:This is why 'Stable' distributions exist by rpk · · Score: 1

    I guese the essencce of problem with gnucash is that wants some .so's with are are at least planned to be compatible with existing versions, so in theory, if they were all working, nothing would break. But if they really are not ready, they've got to be put in a place that's private to gnucash for the time being...

  62. Re:Welcome to Windows? by PD · · Score: 4

    You forget the other part of the equation.

    On Windows, the libs are called Dynamic Linked Libraries. On UNIX, they are called SHARED libraries. Of course, we all know they are the same thing, but apparently on Windows many people don't understand their purpose.

    Part of the DLL hell is the vast amount of them that are unnecessarily created by people who don't understand when static linking will work just fine. I still hear people claim that DLL's magically keep the executable size small. DUH! All it does is unnecessarily chunk up your program, increase file count, and increase loading time.

    So far under Linux I have hardly seen any abuses of this. Shared libraries are generally reserved for geniunely sharable code, and the rest is statically linked the way it should be.

    It sounds like GNU Cash is using shared libs correctly and once the distros catch up we'll wonder what the fuss was about.

  63. Re:Welcome to Windows? by msouth · · Score: 2
    It sounds like GNU Cash is using shared libs correctly and once the distros catch up we'll wonder what the fuss was about.

    Assuming we remember the fuss. You're giving our collective attention spans way too much credit.
    --

    --
    Liberty uber alles.
  64. Use debian by Ex+Machina · · Score: 1

    This is why systems like debian's apt-get that automagically satisfy dependencies are good. Granted, 60 is a lot!

  65. Re:uh oh by toriver · · Score: 1
    Sure you can! just put the dll in the same dir as the app

    Excellent idea! Now, how do I tell this to the non-configurable installation program which will install it in %SysDir%?

  66. Re:why use gnucash... by jsled · · Score: 1
    1. I can look at my financial state, in guppi-provided beauty, on an airplane w/o net access.
    2. I can add new features if/when I want them.
    3. I know exactly what's happening to my financial data.
    4. I can recover my data [and entry time] if the project/site goes belly up.
    5. The UI is better.
    ...jsled
  67. Re:Yea but by jsled · · Score: 2

    Indeed. In fact, the development of GnuCash helped push a couple of those packages to have new features [there was a lot of back-and-forth with respect to Guppi, for instance, that benefits both projects]. Guile got a few things GnuCash was including itself into the guile distro, IIRC.

    The deps for GnuCash are at the forefront of the state of the art for the GNU desktop, but c'mon: this ain't no half-hour hack; it's one of the more serious desktop applications for Linux, and thus requires some recent libraries. Or, you could just dual-boot and run Micros~1 Money or Quicken...

    ...jsled

  68. Helping the community? by jsled · · Score: 5

    Hmmm... 2 or 3 GnuCash developers independently post story submissions to /. about how they've released a significant new version of a key Linux application ... one which has the potential to replace some people's last hurdle for switching away from Micros~1 completely...

    And /. decides to reject all those, and instead posts a poor LWN piece which overstates a problem that is valid, but has nothing to do with GnuCash, and more about the poor state of Linux software installation, package management and impatience of users regarding the package system they're using.

    Thanks Slashdot story selectors! The GnuCash folks did their part and wrote a bunch of code that works really well... ignore it if you must, but don't piss on their efforts.

    1. Re:Helping the community? by Arandir · · Score: 2

      At first I was going to rebut this post, since to my mind, 60 libraries for the type of application that GnuCash is sound absurd. I found that WindowMaker uses only 16 libraries, and Konqueror only 28.

      But then I started thinking about it. Eight of the libraries were X11 libraries. And one other library was Qt, which is the equivalent to seven or eight libraries in the GTK world.

      Obviously there are two different library philosophies here. One philosophy is to bundle all of the funtionality into a single massive library like Qt. The other philosophy, used by X11, GTK and others, is to split the funtionality amongst smaller libraries. For example, the KDE world does not have the equivalent of libxml, since that functionality is already rolled up into Qt.

      Neither of these philosophies is wrong. A few large libraries or many small libraries. Both have their advantages and disadvantages. Personally I like being a Qt user. I don't have to worry about any dependencies or with one module getting out of sync with another. But I'm also a Qt developer, and I often wish I could use just one small module from Qt without having having to use all of it.

      As long as GnuCash can keep its dependencies under control, then I don't have a problem with it using 60 libraries.

      --
      A Government Is a Body of People, Usually Notably Ungoverned
  69. Re:One wrong fact by Enthrad · · Score: 1

    Since ca. 1970, in fact. (Was Gates even born then? I wasn't.)

    Err, yes. Unless he founded Microsoft when he was 5 years old.

  70. Re:Is it really necessary.. by Delphis · · Score: 1

    Thank god with Linux you can actually DO something about bloat. Linux user skill (on average) has gone from mainly very compentent to mainly 'whiney-ass Windows lusers' in a suprisingly short time. Right now you can configure your particular setup as you see fit, removing programs and areas of the filesystem you don't use. WTF is wrong with that?

    --
    Delphis

    --
    Delphis
  71. Re:Is it really necessary.. by Lumpy · · Score: 3

    Ok that's fine and dandy, but the gnucash developers refuse to release statically built binaries so that the 90% of the world that would try to use it can. I was grinning from ear to ear when ximian came out and I was able to help several windows only friends make the crossover to linux.. Now I have to tell them NOT to upgrade their most used software (like gnucash) because the developers would rather them not have it, or I have to start a linux babysitting group and build everything for everyone... Sorry, it's crap like this that makes the job really hard for us advocates out on the front line getting linux in the faces and on the desks of normal users.

    If you release a version that uses all kinds of new libraries, take 3 more seconds and release a statically linked version so you don't undo every success the advocates have achieved...

    I ran into this gnucash problem 3 days ago, and now I need to tell my small group of new linux users that the newest version is not for them and will probably never be for them. (getting linux there was hard enough, asking them to re-install to redhat 8.0-8.1-8.2-etc to satisfy the whims of programmers? no way.)

    my suggestion? go ahead and use 925 libraries for your program, but if you expect people other than programmers anf gu-ru's to use it make a package that is 100% compatable with a current distribution -1 (I.E. subtract a decimal from the distribution release). Sorry to pick on gnucash directly but it is one of those apps that was able to switch windows users over, so they have more riding on their backs than they really know.

    --
    Do not look at laser with remaining good eye.
  72. not really dll hell, more like mini -mayham.. by eshefer · · Score: 3

    The Problem is actually differant in linux the simple dll incompatabilities, it's the lack of a aggreed standard.

    For those just tuning in, linux has the concept of package managment, which doesn't really exist in windows, and intheory should solve the library problem.

    In practice there are two competing standards, AKA debian DEB/APT (which works pretty well), and red hat RPM (which is a mess, and not trully automatic).

    There are solutions that try to solve the probelms with RPM (mostly the lack of centralized QA on indevidual packages), like the distributions them selves (many, many, many distributions), but couse other problems with diferant distribution packages, (suse RPMs with red system are likly to have problems, etc).

    Some other solution are surfacing, like Aduva's manager, which uses a central database as well as a client which analizes the usrs dependancies/interalations on his machine. But that solution is not Free software/gpl/OSS.
    Another problam with these solution is that the typical Linux users are reluctant to use automatic systems on thier systems.

    (I'm feeling genorous today)
    --------------------------------

  73. Ever used Red Carpet? by nft · · Score: 1

    I don't really worry about library hell, cause I use Red Carpet from Ximian. It's free, it does security updates and such, and it resolves dependencies pretty well. I think linux really need more auto-updating software to make it less work to run. Red Carpet is just like Winders Update, cept there's a BUNCH of software available and I don't worry about anything breaking.

    I like Ximian so much, I even bought a shirt from Think Geek. Hold me down...

    -=nft=-

    --
    "We must be the change we wish to see in the world." -Gandhi
  74. Re:Installing Free Software by Graymalkin · · Score: 2

    As I look through the System Folder on my Powerbook I notice there aren't a large number of platform specific tools in there. The drivers are Apple drivers comforming to driver rules and everything is compiled for PPC. Oh yeah, Mac OS 8 worked on just about every piece of Mac hardware after the introduction of the 603. Linux is pretty much the same way. I've installed binary packages on lots of different computers and never had a hardware related problem before. If you DO have problems thats your own fucking fault for using shitty hardware that doesn't comform to specs like everyone else does. You don't install different C libraries because you've got an Athlon on a Via chipset. The dude had a valid point, installation procedures on linux are pretty retarded sometimes and turn people off to using it. Not only that but it is fairly daunting to have a thousand little apps that do the exact same thing a different way. Do I really need Yet Another (insert function name here)? Saying OS X is inferior because it doesn't work on Y platform is retarded. Linux doesn't "support" any more chipsets than x86. All the other platforms are worked on by third parties besides Cox and Torvalds. And lastly, Linux != X (as in windows).

    --
    I'm a loner Dottie, a Rebel.
  75. Re:libjpeg DLL problem by Silver+A · · Score: 1

    haven't been able to successfully compile it, or install from RPM.

  76. libjpeg DLL problem by Silver+A · · Score: 2
    I use SuSE 6.2, with lots of stuff I've added on, mostly compiling it. But - I've got one big DLL problem: ImageMagick 5.1.0 requires libjpeg.so.6.1, and breaks on 6.2, while Mozilla & Opera require 6.2, and break on 6.1.

    Since it's only two programs, I've modified the Mozilla startup script and created a startup script for Opera to set LD_LIBRARY_PATH to find libjpeg.so.6.2, instead of 6.1. I've tried upgrading ImageMagick, but both non-SuSE rpms and the source break, and the SuSE rpm essentially requires upgrading all of SuSE. oh well - DLL Hell is warm in the winter...

    1. Re:libjpeg DLL problem by camadas · · Score: 1

      Why not use Image Magick 5.28 ?

  77. dll hell on Linux? by josepha48 · · Score: 2
    Not the same thing. As many others have said Linux uses version numbers. If you really wanted you could have multiple versions of the same libraries on your system. For instenace, gtk+ 1.0.x and gtk 1.2.x, or libc5 and libc6, and even more revisions of libc6, like glibc2.0, 2.1 and 2.2 all on the same system. Get the point?

    I don't want a lot, I just want it all!
    Flame away, I have a hose!

    --

    Only 'flamers' flame!

  78. Re:Is it really necessary.. by ethereal · · Score: 1

    A developer can't really win, though - if a statically linked version of gnucash was released, the story would be "damn, this free software is so bloated! etc.". Heads you win, tails I lose :)

    Most of the Gnome 1.4 stuff is actually from Ximian (at least on my system), so you just have to wait for Ximian to pick up gnucash as a supported package, and then their installer will automagically set you up with it. You can either have the software right away and go through some configuration headaches, wait a little bit for it and avoid the configuration problems, or if you're really in a hurry you can pay a gnucash developer to build you a special staticly-linked version. Unfortunately, you can't get software with no configuration issues without waiting and for free.

    Caution: contents may be quarrelsome and meticulous!

    --

    Your right to not believe: Americans United for Separation of Church and

  79. Re:Is it really necessary.. by ethereal · · Score: 5

    It's never necessary, unless of course you want one of the cool new features in that library. It doesn't take too many active developers before you're pulling in a lot of new technology and thus a lot of new library dependencies.

    For most people this won't be a problem since their distro will figure it out, and for everybody else that's trying to install RPMs or build from source, take a look at the mailing list archives on gnucash.org. If gnucash didn't use brand-new tools like Guppi and Gnome 1.4 libs, much of the cool new stuff in gnucash 1.6 wouldn't be there.

    It's not really DLL hell, since you can have multiple copies of the same library installed for use by different apps. DLL hell would be if gnucash blew away the libs that gnumeric needs, and then reinstalling gnumeric screwed up the libs that nautilus wants, etc.

    Caution: contents may be quarrelsome and meticulous!

    --

    Your right to not believe: Americans United for Separation of Church and

  80. GnuCash 1.6.0 problems and solutions. by Skeezix · · Score: 3
    The real problem with GnuCash 1.6.0 wasn't really it's large number of dependancies. It was the the binaries provided didn't seem to be built for a specific platform. It required some new things found in the latest Gnome 1.4 while also requiring an older version of guile, e.g. It wan't too bad to build the rpm's for the latest Ximian platform. I rebuilt them for Red Hat 7.1 against the latest Ximian packages:

    grab them here

    Incidentally I think it's very worthwhile to upgrade to GnuCash 1.6.0. It's slick Play around with the reports for a few minutes and read the excellent documentation. The documentation gives an excellent summary of the principles behind handling your finances and covers the new features in 1.6.0.

  81. Re:Why use shared libraries? by Raven667 · · Score: 2
    Worse, when you bring in a shared library, you bring in the whole thing, not just what you need.

    I don't think so. I'm pretty sure that Linux merely memorymaps the libraries when they get linked in. Only the parts that are actually accessed are loaded into memory where they are cached for later use. It's very fast.

    --
    -- Remember: Wherever you go, there you are!
  82. Re:It seems to me that.... by Raven667 · · Score: 2

    Not all Linux distributions are like that at all. I use Debian GNU/Linux and when I want to install package foo I just type "apt-get install foo" at a prompt. Done. apt will resolve all dependancy issues, download all required packages install them and configure them without you having to lift a finger. Just about any piece of software you can think of is available as a package in the Debian system.

    Debian also has guidelines about how packages are built so that software is installed in predictable places. All packages have a dedicated maintainer (and changelogs) and are generally of higher quality, ie. they work on the first try.

    Yes, the Debian installer is a real piece of crap but the Progeny installer is Slicker 'n Snot(tm). Yes, there is a bit less handholding, but it is also less required as stuff Just Works(tm) out of the box. If you want all the benefits of apt but don't want Debian, however, you can always use the new Mandrake or Connectiva which have moved to apt.

    --
    -- Remember: Wherever you go, there you are!
  83. Re:Why use shared libraries? by Raven667 · · Score: 2

    The filesystem does read-ahead cacheing, as well as using all available memory (save 1-2MB) for filesystem cache. I think it would be inefficient to have free memory sitting around not doing anything for the system. Any performance problems would only occur on the first load of a shared library and shouldn't be a problem unless you are randomly access a lot of libraries (see the LD_BIND_NOW=true trick that KDE uses on how to work around this).

    Unix style systems are generally optimized to start lots of small processes very quickly and small processes are often used where threads are used on other OS's. For example, on Linux process creation time is comparable (if not faster) then thread creation on NT and threads aren't scheduled any differently than processes. Sorry, tangent alert.

    I think that in the common case, libraries for whatever you are using will usually be loaded into memory already.

    --
    -- Remember: Wherever you go, there you are!
  84. Re:Load libraries by checksum, not version number by Compuser · · Score: 2

    What would be really neat is to have the compiler
    autogenerate a test suite for your app. Say you
    are a coder and you just made this nifty app Foo.
    Your compiler figures out what interfaces you need
    from shared libraries, then builds a test suite
    to find these interfaces. On user machine, the test
    suite would automatically launch on install, query
    all installed dlls for required interfaces, figure
    out if these interface lead to expected implementation
    (kinda like OS fingerprinting), then install your
    app against stuff that will work. If some interfaces
    were missing, then tell the user which versions of
    libraries are preferred for the stuff to work.
    The search bot could even be smart and try to
    consolidate interfaces, i.e. find and use libraries
    which would have the most interfaces, so as to reduce
    memory footprint. It amazes me that computers can
    do complicated logic yet much of the install
    process requires the user to implement their logic
    by hand.

  85. Microsoft's solution to this is novel... by gatkinso · · Score: 1

    ...but unwieldy (and of course buggy). However, I find that COM/DCOM neatly solve this issue with little hassle (from the users point of view).

    Programming that cr@p is a whole other issue: one that makes me ill.

    --
    I am very small, utmostly microscopic.
  86. Re:You wanna talk hell... (not NeXT style) by Midnight+Thunder · · Score: 2

    The application does not need to bundle all the libraries it uses. The framework is, in most cases, separate to the application though there is nothing stopping a framework from being included as part of the application's bundle. For more information see Framework Versioning. The is probably more docs on the issue, but this should get you started.

    --
    Jumpstart the tartan drive.
  87. lamer by Scudsucker · · Score: 1

    This story isn't about GnuCash, its about the problems that can arise with shared libraries. GnuCash was just an example.

    how they've released a significant new version of a key Linux application ...

    You want some cheese with that whine? Its only a .x upgrade. Generally, the only .x upgrades that get mentioned on /. are kernel and xfree updates. If every little version upgrade of every little program that someone thinks is important was announed on /., it would turn into Freshmeat.

  88. Yes, there is. by vik · · Score: 3

    The way around it is for people to use the lowest version number of GLIBC/libSVGA etc. rather than the latest we-are-the-dogs-bollox version shipping on Freshmeat. It never ceases to amaze me how the compilers of distros seem to go out of their way to make the latest version of the code incompatible with the stable version. Take RH6.x for example, when you were hard pushed to find any new software because it was all in V4.0 RPMs whether it needed the V4.0 features to be installed or not! That was only fixed by RH eventually releasing a V4 compatible RH6.x RPM.

    Vik :v)

  89. Re:Welcome to Windows? by alfredo · · Score: 1

    I wish IBM and others hurry and get those PPC Linux boxes on the market.

    --
    photosMy Photostream
  90. Re:Could we please make up our minds. by digitalunity · · Score: 1

    (I dabble, but I do ass-sucking VB in uncle-humping Windows to pay the bills)

    You too, eh?
    I hate windows, and I hate VB and VBScript even more.
    I come home from work everyday rubbing my a$$ from getting bent over by IIS.

    all your Recordsets are belong to us.

    --
    You can't legislate goodness. Let each to his own destiny, by will of his freely made choices.
  91. www.modules.org by LL · · Score: 1

    I'm surprised more people don't use it ... it's really useful for managing multiple versions of libraries and different applications which depend on them. Unforuntately when you start hitting C++ class interdependencies or zillions of versions it starts being tricky ... which is where namespace managment and scoping rules become more important.

    LL

  92. Re:Solution: Mix Dynamic and Static by GroundBounce · · Score: 2

    I agree with this problem, which is why I suggest that static linking be used primarily for the bleeding edge libraries - especially any library that is more recent than the most up to date included in the majority of current distributions.

    Once the library used by the program is less bleeding edge and has a more stable API, then dynamic linking would be more appropriate.

  93. Solution: Mix Dynamic and Static by GroundBounce · · Score: 5

    One of the original reasons behind DLLs in the first place was to save redundant disk space and memory. This is still true, but when DLLs were first popularized on PCs by Windows 2.x (or whatever it was), most machines had a 20-30Mb hard drive and 1Mb of RAM.

    Things have changed. While the larger, most common libraries (GTK, QT, glibc, X libs, gnome and kde libs) should remain dynamic, it would be helpful for binary packagers to statically link the smaller and more obscure libraries, especially if they are using a bleeding edge version that is not even in the most current distributions.

    With a combination of static and dynamic linking, you'll achieve the majority of the benefit of shared libs because your largest and most common libs will be dynamic, but you'll be able to avoid much of the DLL hell and upgrade hell that accompanies packages that use bleeding edge libraries.

    1. Re:Solution: Mix Dynamic and Static by Pont · · Score: 2

      This is even more true of open source applications. As has been mentioned, one of the advantages of shared libraries is the ability to fix bugs and security problems in all applications that use the library just by upgrading the library. If there is a security fix in even one of the obscure libraries in an app that comes with the source, you can just recompile the program.

    2. Re:Solution: Mix Dynamic and Static by karb · · Score: 2
      That's nice, but imagine a bug uncovered in a static library by another system change ... you would have to patch Every Program that used that static library :P.

      I think it would be cooler to have a more solid versioning system (especially since I get such a kick out of configuration management).

      --

      Jack Valenti and the MPAA are to technology as the Boston strangler is to the woman home alone

  94. Re:It's not DLL hell that makes Windows unreliable by Katravax · · Score: 2

    You're right that most applications can't be uninstalled that way. That's *another* symptom of the problem. As to the shared dlls in common folders, note I said most of the good developers aren't writing their apps that way. Granted, you may have file associations that need tending. I personally feel Windows ought to handle that by itself, and to a small degree it does with the "Open With" dialog. Other info stashed in the registry generally amounts to exactly squat; it's no more harmful than having an unused config file on a unix box.

  95. Re:It's not DLL hell that makes Windows unreliable by Katravax · · Score: 2

    You're absolutely right it shouldn't. But the real cause there is most likely the sound driver or the mp3 player's use of it. That's exactly what I was talking about :)

    The bit about Netscape taking down Windows... Once again I'd wager the coders did something bad with privileged code. The equivalent portion in Linux may not be privileged. Are you talking even about the same kind of crash?

  96. Re:It's not DLL hell that makes Windows unreliable by Katravax · · Score: 2

    Was all that hardware on the HCL? Or was it generic crap that you had lying around? Would you complain if OpenBSD didn't work with your NIC correctly if it weren't on the supported hardware list?

  97. Re:It's not DLL hell that makes Windows unreliable by Katravax · · Score: 2

    I completely understand; I had the same problem with 3.1, 3.5, and 3.51. When I made sure it was all HCL, though, the problems went away. I also run NTx on generic stuff. I have also had better luck with Linux and hardware in that if it runs at all, it runs solidly. I think we both suffer from wishful thinking that "standard" hardware means "standard" hardware. But apparently it doesn't and some vendor may leave certain features unimplemented, badly implemented, or what-have-you. Also, MS may handle certain thing incorrectly in their code, and thus don't HCL something that brings out that mishandling.

  98. It's not DLL hell that makes Windows unreliable by Katravax · · Score: 4

    How should we go about dealing with the multitudes of shared libraries without driving ourselves mad or descending into the DLL Hell that makes Windows machines so unreliable?

    DLL hell is a small part of the problems Windows faces, but most of the better programmers started putting their libraries either in their app directory or static linking... Most every app on my Windows machine can be uninstalled by deleting a directory. But don't blame Windows instability on DLL hell. DLL hell is just another symptom of the same thing that causes the instability.

    What makes Windows boxes unstable, plain and simple, is faulty drivers and applications. Out of the box, the NT series has been rock-solid even since 1.0 (version 3.1). The Windox 9x series has also been way more reliable than it has the reputation for. Drivers provided directly by Microsoft have traditionally been very stable, even if not very feature-rich. The drivers provided by third-parties, however, tend to suck overall. I would estimated 50% of instability problems I see are related to VIDEO drivers.

    The big thing people forget when they compare stability of Windows and other OSes is that in monolithic kernels, the drivers are provided by the guys that know the kernel, thus are typically more stable. I cannot say the same for many Windows drivers. In addition, something like a FreeBSD web server is hardly comparable to an end-user Windows machine, yet this is always the example held up by the anti-Windows crowd. Add MP3 software, graphics apps, kids' games, a crappy sound and video card, and all the other stuff people put on user machines and then see how stable the other OS is.

    I'm not blind. I know that on the whole Windows boxes are not so stable. I'm a professional Windows developer. I can say from first-hand knowlege that the bulk of problems with Windows is due to lazy, unknowledgeable, or sometimes hurried and overtaxed programmers. It's a real problem. I also keep a FreeBSD boot around and I'm very pro-GNU/Linux and especially pro FreeBSD. But I program Windows as my work, and know that the instability blamed on Windows itself rarely has anything to do with code written by Microsoft.

    1. Re:It's not DLL hell that makes Windows unreliable by Katravax · · Score: 4

      ...There has never been a MDAC released by Microsoft that didn't crash windows? IE never crashed windows? MS-Office never crashed windows? Give me a break.

      I was referring to a clean box, and said so clearly in my original post. There are plenty of sloppy coders working in the apps division of MS. The MDAC installs are among the most awful installs of anything available. No argument from me there.

      If you can't expect Microsoft themselves to be able to write software that doesn't crash windows how do you expect your average VB programmer to?

      I don't :). The average VB programmer is a beginner and doesn't know much more than drag-and-drop window building and basic event-handling. I'd guesstimate that fewer than 5% of VB programmers understand how Windows actually works. I'll also say that most VB apps can't crash Windows, either, because they don't have access to anything privileged.

      The fact of the matter is that it's awfully difficult to write an app for windows that won't take down the system occationally. If for no other reason then you are using DLLs and you have no idea what's in them. How many apps depend on wininet.dll or the vb runtime or MSVCxxx Dlls?

      Bullshit. I write system services and plenty of system-privilege apps that don't crash Windows. The *app* may crash until I get it finished, but that's not what you said. Anyone writing code that depends on wininet or the MSVC runtime and MFC dlls, frankly, is asking for what they get. But if you use the interfaces correctly, these don't crash Windows either. There are bugs in the common libraries to be sure, but that can be said for common Linux libraries as well, can't it? Of course the massive advantage with most Linux libraries is that the source is available. But my original post wasn't focused on the availablility of source.

      You know I went to install the MS soap toolkit the other day and it insisted that I install IE5.5 and some service pack or another, then the rope.dll wouldn't register properly so I had to go download a later version and register it by hand. Just to be able to work with XML I had to download over thirty megabytes of stuff. So If I write an app using this toolkit is it my fault if the app crashes or is it possible that somewhere along that 30 megabytes of crap I installed on my machine something was broken?

      Yep, it is your fault. All that shit is not necessary to work with XML. There are some reasonably good third-party libs that don't require all that crap. You apparently know as well as I do that developers using all that crap (besides the existence of that crap itself) are the cause of the problem. The most useful frame of mind I've found for writing Windows apps is "think small". Write with the fewest dependencies and libs possible. That pretty much leaves out developing in VB or using MFC, and avoiding the C runtime if possible. ATL is an excellent library, though, and there are some outstanding compilers out there if you prefer BASIC (check out http://www.powerbasic.com".

    2. Re:It's not DLL hell that makes Windows unreliable by nuke · · Score: 1

      I would have to say that it is microsoft code that makes windows unstable. By this time perhaps the microsoft code has stabilized but the APIs they developed are awful. This makes it difficult for windows programmers to develop stable code. Which makes windows unstable. When Microsoft finally decides to dump their crappy Win16/Win32 APIs we will be rid of at least part of Windows Hell. I think the blame definitely is on Microsoft, however indirectly. Brian

    3. Re:It's not DLL hell that makes Windows unreliable by Ozric · · Score: 1

      A>
      I run programs as root all the time on Linux. I have never had a Linux program bring down the whole OS. I have had X corrupt my TDFX module and leave my consol un/semiun usable, but the system stays up.

      B>
      Direct access to hardware. Whos fault is that? Mine? If I recall DOS did the same thing. I never had DOS crash on me half as much as WIN9X. Win9X is crap, a shell for playing games.

      They call Linux a toy! Toys have ways of hurting people who do not respect them.

    4. Re:It's not DLL hell that makes Windows unreliable by AntiFreeze · · Score: 2

      This is slightly offtopic, but I wanted to address one quick thing imipak mentioned:

      Unless the admin has been paranoid / smart / had enough copious spare time to implement quotas, a generic user on a Red Hat Linux (and AFAIK, other distros) can crash the whole thing with a one-liner fork bomb

      It doesn't take paranoia, smarts, or lots of spare time for a competent sys-admin to fix the fork bomb problem. /etc/limits (at least under Debian GNU/Linux) allows you to limit the number of simultaneous processes a user can run. Place a limit on all users except root (and any trustworthy or daemon based accounts which might need the extra processes) and boom, no more fork() bombs from users. [please excuse the bad pun]

      Of course, this is a truly trivial issue, and there are still many security flaws within Linux and MS Windows. I'm just trying to say that the answer to what looks like a simple problem can sometimes be ridiculously stupid.

      Back on topic:

      The main flaw in operating systems [from my experience] come from memmory issues. This can be caused by bad third party software (as I saw someone else mentioning earlier), unstable software, an incompetent or unknowledgeable systems administrator, or for various other reasons. But let's focus on the sys-admin. That to me is the reason Linux is more stable than Windows. The everyday user doesn't have the power to make changes which could ruin the machine.

      Take a look at most games. On the side of the box they come in, the game usually has a warning under WinNT saying "must have administrator access", and many other programs ask a user to log in as administrator and add "C:\whatever\" to their PATH environment variable. Adding hardware has the same issues.

      It's little things like this which cause companies to provide "Expert Professioanl Installation". They've learned from experience that the majority of users just can't handle these simple tasks. And they're right. How many people do you know who renovate their houses or apartments themselves without a contractor? It's not because they're stupid, it's because they realize they don't know what they're doing or are unsure of their own abilities or just don't have the time to learn the trade.

      The problem is, lots of people like to try to do these types of things on their own. Like the home-fixit addict [my father is one, and I'm damn close to one], you can save yourself lots of time and money, or completely screw things up. It's fun, and hey, why not take the risk? Well, when it comes to computers, you risk taking out vital support beams without ever knowing what you have done. This is the problem which runs rampant with Windows systems as I see it: the users, not the software. If I were to hire a professional contractor, he'd tell me exactly why my place is falling apart: I didn't hire a contractor and tried to do it myself. One has to be reasonable and learn what to do by oneself and what to hire a professional to do. To too many people, computers are simply toys to fool around with. When their operating system crashes, they get annoyed. It's like a screaming baby crying over its new yellow rubber-ducky. "Honey, it broke because you ripped its head off." Don't expect the baby to understand.

      I'm not saying that the majority of users are like this (if I did, concider the statement retracted), but I definately know a LOT of people who fit the description. Windows machines tend to be treated as toys, for MS Windows is the most common pre-packaged operating system out there. Linux, on the other hand, is not used as a toy. It takes a conscious decision to switch to Linux (or any *nix for that matter), usually requiring the deleting of a nice fat Win32 partition, and takes knowledge and know-how and a clue to get started. It's like buying a fully furnished house versus buying an empty house in a small, slowly growing, semi-isolated community. It's a lot easier to play around in a house with the cool furniture and a stocked fridge than it is to play around in a house with quasi-built bookcases, nails scatterred all over the floor, and a sign where the fridge should be which says "Cook it Yourself!" All in all, I bet that if Linux ever becomes as mainstream as Windows, and typical users have root privleges, the exact same problems will arise as have arisen with windows. Do you know how many new Linux users look stunned when I tell them they should never log into their system as root? Hell, I had that shocked look the first time someone told it to me.

      Hope I made some sense. If I'm wrong, don't flame me, correct me.

      ---

      --

      ---
      "Of course, that's just my opinion. I could be wrong." --Dennis Miller

    5. Re:It's not DLL hell that makes Windows unreliable by Malcontent · · Score: 1

      This post takes astro-turfing to new levels.

      "instability blamed on Windows itself rarely has anything to do with code written by Microsoft."

      So let me see now. There has never been a service pack released by Microsoft that didn't crash windows? There has never been a MDAC released by Microsoft that didn't crash windows? IE never crashed windows? MS-Office never crashed windows? Give me a break.

      If you can't expect Microsoft themselves to be able to write software that doesn't crash windows how do you expect your average VB programmer to?

      The fact of the matter is that it's awfully difficult to write an app for windows that won't take down the system occationally. If for no other reason then you are using DLLs and you have no idea what's in them. How many apps depend on wininet.dll or the vb runtime or MSVCxxx Dlls?

      You know I went to install the MS soap toolkit the other day and it insisted that I install IE5.5 and some service pack or another, then the rope.dll wouldn't register properly so I had to go download a later version and register it by hand. Just to be able to work with XML I had to download over thirty megabytes of stuff. So If I write an app using this toolkit is it my fault if the app crashes or is it possible that somewhere along that 30 megabytes of crap I installed on my machine something was broken?

      --

      War is necrophilia.

    6. Re:It's not DLL hell that makes Windows unreliable by Malcontent · · Score: 2

      A clean box (one that is never patched or upgraded) is a useless piece of junk. At best it's insecure and inadequate piece fo junk. Nobody but nobody runs a unpatched OS. I guess the people who modded you up to 5 thinking you were paraising MS did not realize that you were damning them instead. MS products are only stable as long as they remain in their untouched pristine state. Wow what a damning statement.

      Add to that the outragous remarks like don't use VB, don't use MS tools, don't use MFC etc. Congratulations you just described .0001% of all windows programmers. Just code to the API and forget all those tools MS offers and then you'll have a stable app that won't crash windows. It might take you 5 years to code that app because you had to hand code the FTP client bit and the http client bit and the proxy piercing bit but what the hell it won't crash. Yea right.

      I guess we agree on one thing. People writing MSXML crap and the wininet.dll crap are indeed incompetent morons who are getting paid by MS to foist this crap on the VB coding fools. Pity the poor programmer who hasn't memorized the win32 API and instead is relying on crappy tools like VB to try and get his work done.

      --

      War is necrophilia.

    7. Re:It's not DLL hell that makes Windows unreliable by deKernel · · Score: 1

      Bullshit. I write system services and plenty of system-privilege apps that don't crash Windows. The *app* may crash until I get it finished, but that's not what you said. Anyone writing code that depends on wininet or the MSVC runtime and MFC dlls, frankly, is asking for what they get.

      Lets take a look at your statement for a moment. You say that if you use MFC any of that _SYSTEM_ provided resources, that you asking for it. Whhhoooaaa, aren't those and I say again _SYSTEM_ provide resources. Hmmmmm.

      But if you use the interfaces correctly, these don't crash Windows either.

      So now how do you get to the interface without MFC. Hmmm, wait that would be the Win32 API's. Who in the hell really wants to use OO languages anyway when doing UI's. I guess I am just in the minority

      Yep, it is your fault. All that shit is not necessary to work with XML. There are some reasonably good third-party libs that don't require all that crap. You apparently know as well as I do that developers using all that crap (besides the existence of that crap itself) are the cause of the problem. The most useful frame of mind I've found for writing Windows apps is "think small". Write with the fewest dependencies and libs possible. That pretty much leaves out developing in VB or using MFC, and avoiding the C runtime if possible. ATL is an excellent library, though, and there are some outstanding compilers out there if you prefer BASIC (check out http://www.powerbasic.com".

      Again I say, arent' these _SYSTEM_ resources that are causing the stability issues? Okay, so they had to be installed, but they did come from the OS vendor directly, and they caused stability issues. Again I say Hmmmmmmmmmmm.

    8. Re:It's not DLL hell that makes Windows unreliable by ka24 · · Score: 1

      Let's not mention what results from the crash. On Linux, when an app crashes you might have a window disappear, or X might die if it's really bad. All without affecting other users on the system. On Windows, you might as well reboot the first time IE gets a little sluggish. That _is_ mircrosoft's fault.

    9. Re:It's not DLL hell that makes Windows unreliable by Walles · · Score: 1
      Out of the box, the NT series has been rock-solid even since 1.0 (version 3.1).

      Nope. Not NT3.51 at least. Back when I tried that on my (at the time rather cool) 386, I had lots of problems:

      • It refused to even install unless I switched off every non-necessary feature in the BIOS.
      • Every third time I booted the system it failed to recognize the mouse I had attached.
      • Every tenth time I attempted to boot the system it just gave me a blue screen saying that "The kernel-something.dll file is missing or broken, can't boot". Press the reset button however, and the file would magically appear again.
      On the same computer, Linux was running fine. With Slackware, my problems were in the category "I don't know how to untar a file", "how do I get my modem working" and so on, but once I fixed a problem on Slackware it went away for good. So your statement may be correct as far as other versions go, but NT3.51 was not "rock solid" by any means.

      Cheers //Johan

      --
      Installed the Bubblemon yet?
    10. Re:It's not DLL hell that makes Windows unreliable by Walles · · Score: 1
      Was all that hardware on the HCL? Or was it generic crap that you had lying around?

      Generic crap. I have no idea whether it was on the HCL or not, but that most of it wasn't isn't such a wild guess. And the hardware wasn't on any compatibility list for Slackware Linux either.

      The reason I think it should work either way is that I had only standard components; a 386 from Intel, an IDE hard disk, a standard serial port (for my mouse) etc...

      Would you complain if OpenBSD didn't work with your NIC correctly if it weren't on the supported hardware list?

      If it didn't work at all, I would call it "insufficient hardware support". If it did work some of the time but not all of the time then yes, I would complain that the drivers that the OS shipped with were broken. In my book, not having drivers for a certain NIC is not the same thing as flaky performance on standard hardware.

      Hope this clears things up!

      Cheers //Johan

      --
      Installed the Bubblemon yet?
    11. Re:It's not DLL hell that makes Windows unreliable by Galvatron · · Score: 1
      OK, I'll take an RPM. And then lib hell began... three days later I gave up and told her I couldn't do it.

      Actually, if you're using Mandrake, the Mandrake-Update tool is actually starting to become useful, give it a go. It's definately not ready for primetime (it sometimes hangs on downloads, or gives highly uninformative error messages ("package installation failed")), but when it works, it does a very good job of satisfying dependencies for you. Basically, the theory is, it uses .rpm, but it acts like .deb.

      I'm very much looking forward to this a year from now. Given how much it came along from 7.2 to 8.0, I have high hopes for how it'll work in 8.1 and 8.2. Of course, if you're running 7.0, you'll have to first upgrade to 8.0, which comes with GnuChess and XBoard anyway.

      The only "intuitive" interface is the nipple. After that, it's all learned.

      --
      "The question of whether a computer can think is no more interesting than that of whether a submarine can swim" -EWD
    12. Re:It's not DLL hell that makes Windows unreliable by rainer_d · · Score: 1
      > A> The OS can only protect itself from > applications whose permissions are limited. > (IE, as root, I can hose a Linux system, not > matter how stable it is supposed to be). Not per-se on FreeBSD.
      chflags has saved me once in a while from
      rm -rf * 'ing
      in the root-Directory...

      Rainer
      --

      --
      Windows 2000 - from the guys who brought us edlin
    13. Re:It's not DLL hell that makes Windows unreliable by clare-ents · · Score: 2

      Easy to crash it,

      Install Adaptec Easy CD Creator 4/5, that'll almost certainly crash it with a solid 50/50 chance that the hard disk recovery software will convert your hard disk into one that needs recovering.

      --
      Only two things are infinite, the universe and human stupidity, and I'm not sure about the former. (Einstein)
    14. Re:It's not DLL hell that makes Windows unreliable by RadioTV · · Score: 1

      I agree, but comparing a $1500 PC to a $500,000 IBM mainframe (or even a $20,000 AS/400) isn't fair. If I could manage to get things to run in kernel mode on that mainframe I bet I could screw things up real quick.

      I don't agree that there are stability problems with IE and Office. If you do identical installs on two machines with different video and sound cards one might be stable and the other isn't. This isn't a problem with the app, but with a call that the app is making that hits a bad driver. That is why those of us that admin large install bases of Windows machines don't use bleeding edge hardware. We want to make sure that someone else has all the problems while we run happily along.

      As for servers, NT isn't as stable as Linux, but I routinely get 90-100 day uptimes from my NT servers (except the one running Backup Exec - that POS leaks memory like it is going out of style). But even Linux doesn't compare to my 350 days on an AS/400 or 700 days on Netware 3.2.

      --
      I have great faith in fools - self confidence my friends call it. - Edgar Allan Poe
    15. Re:It's not DLL hell that makes Windows unreliable by RadioTV · · Score: 1

      I'm not saying that the application is running in kernel mode, but that the application does something that causes a driver running in kernel mode to crash - crashing the kernel. This is a poorly written driver, not a problem with the application. Windows can protect itself from properly written 32 bit applications, but not bad drivers. This is why Windows NT warns about loading third party video drivers. I'm not saying that Windows is as stable as Unix, but that it isn't as bad as most people say it is.

      My point about the price of mainframes is people are willing to spend money on them. They don't go out and buy the newest video card they can find and install drivers written by the intern of the month. For those of us that wait until the hardware has proven itself and the drivers have been debugged, crashes are few and far between. As soon as Linux becomes mainstream enough that all new hardware is released with (unfortunately, binary only) drivers immediately, I think that we will see similar stability problems.

      --
      I have great faith in fools - self confidence my friends call it. - Edgar Allan Poe
    16. Re:It's not DLL hell that makes Windows unreliable by spongman · · Score: 1
      just two??!

      The 'Windows is detecting your hardware' bit of the win95 install was probably one of the more complex (and most reworked) parts of the whole operating system. Mostly due to the fact that probing for one type of card can easily cause another card to get into a weird state. No other operating system has this kind of hardware support, even six years later.

    17. Re:It's not DLL hell that makes Windows unreliable by Twanfox · · Score: 1
      That's kind of the thing, though, and a difference you should be aware of. No Application should need to run in kernel mode (see note below for special system apps). A Driver might, but a driver is a special beast, and not an application.

      I agree with the the statement that a Real operating system should be able to tell any Application to take a hike when it's done something bad, and do so without side effects. Protecting against Drivers is another issue, as once that driver is loaded into the kernel, in that situation, the kernel becomes the Application in question (kind of a bizare way to think of it, but hopefully you can see the point).

      Remember the difference between Applications, Drivers, and the Kernel. Applications (except rare ones like system manipulation programs) do not need access direct to the kernel, and should not cause any OS instability. Drivers (that are loaded into the kernel itself) need to be checked severely for stability.

      As for comparing PC's to Mainframes (or an AS/400), I don't think price matters, only the way applications are written, and treated by the OS kernel. Mainframes may be rock solid and not as feature rich, but then again, the mentality of stability should be the same across all hardware, irreguardless of it's features.

    18. Re:It's not DLL hell that makes Windows unreliable by cthugha · · Score: 2
      There are bugs in the common libraries to be sure, but that can be said for common Linux libraries as well, can't it? Of course the massive advantage with most Linux libraries is that the source is available.

      MS does include the source for the MFC libraries with VC++. I've seen it. I'm not saying it's pretty, but it's there.

    19. Re:It's not DLL hell that makes Windows unreliable by cthugha · · Score: 2

      The bit about Netscape taking down Windows... Once again I'd wager the coders did something bad with privileged code.

      The real reason is that memory protection is handled incompetently under Win9x. IIRC, the upper 2 GB of every process's address space on any Win32 box maps to kernerl memory. Under WinNT, a process trying to access this region will segfault. Under Win9x, this region is totally open to userland processes.

      Again, IIRC. I'm not a professional Windows developer.

    20. Re:It's not DLL hell that makes Windows unreliable by jonnystiph · · Score: 1
      Add MP3 software, graphics apps, kids' games, a crappy sound and video card, and all the other stuff people put on user machines and then see how stable the other OS is.

      Alright I did just that on a linux slackware box with a gui, not just a shell, and well its a hell of a lot more stable than any windows machine I have owned.

      What I am saying more than anything, is that the reason that I switched to linux was because of windows instablility, well among other things, but I didn't switch machines and I had much of the same genre of software, so perhaps you are right, but in my expiernce that statement was incorrect.

      --

      If we don't make light of everything, we are just stumbling in the dark - Blank

    21. Re:It's not DLL hell that makes Windows unreliable by lfourrier · · Score: 1
      You: On top of that, after two years of being Microsoft free, I have to use Windows 2000 at work. The operating system no longer crashes, but MS Office and MS Explorer sure do, and I have lost work several times because of it.

      Microsoft (anti trust trial): IE is integral part of the OS

      Me: IE down => Microsoft OS down (except on the Mac)

    22. Re:It's not DLL hell that makes Windows unreliable by FreeMath · · Score: 1

      I agree that bad drivers and shitty hardware can bring down the system. But Netscape or a crappy mp3 player crashing shouldn't bring down the whole OS. I use Netscape 4.7(motif) in Linux and when I goes down in flames the OS remains stable.

      --
      This sig intentionally left blank.
    23. Re:It's not DLL hell that makes Windows unreliable by FreeMath · · Score: 1

      Unfortunately not every application is as stable and well prodouced as Opera

      --
      This sig intentionally left blank.
    24. Re:It's not DLL hell that makes Windows unreliable by Dave+Emami · · Score: 1

      This is like giving a car to someone who can't drive a stick; they try to start the car in third gear, release the clutch too soon, and the whole car explodes. Then the car manufacturer blames the incompetent driver.

      No, it's more along the lines: you buy a car, and then put non-OEM tires on it, and the tires blow out causing you to crash. Then the car manufacturer blames the tire manufacturer.

      But as far as the perception of Win2K being more stable than Win95: that depends. Win2K is rock solid for me -- except when I play Everquest or Starfleet Command, when it locks up or spontaneously reboots every hour or so, probably because I can't get non-beta drivers for my video card. Win95 on the same machine plays EQ and SFC all night without a hitch.


      --

      "The Greens lynched a hacker in Chicago. Last month, but I think the body's still hanging from the old Water Tower."
    25. Re:It's not DLL hell that makes Windows unreliable by imipak · · Score: 2
      Hmmm, I used CD Creator at $previous->[1] without too many problems beyond the inevitable expensive silvery coasters...

      OTOH, according to an ex-boss of mine, NT will reliably BSOD when any program tries to rip from CD audio. I've certainly never found a working mp3 ripper that runs on NT4 (plenty that claim to run, though...)

      I haven't had a BSOD on the machine I mentioned above for, oooh, at least 9 months I'd guess - at that was caused by dicking about with low level kernel-space drivers.
      --
      "I'm not downloaded, I'm just loaded and down"

    26. Re:It's not DLL hell that makes Windows unreliable by imipak · · Score: 2

      ...and obviously, if you have the source and the skillz, you can modify & recompile Free OSes to work around any similar limitations - which isn't an option with NT. Don't get me wrong, I'm wearing a Copyleft T shirt as I write this (the one with the GPL on the back)... but (this is getting dangerously tangential) I think Freedom is more important than Openness (as in: OSS vs Free software) precisely becuase the "better engineering" argument ESR et al make is, well, debatable.
      --
      "I'm not downloaded, I'm just loaded and down"

    27. Re:It's not DLL hell that makes Windows unreliable by imipak · · Score: 2

      ...ah, but how long would they need to study systems admin before they got to that bit? (We're small enough that we pretty much admin our own workstations.)
      --
      "I'm not downloaded, I'm just loaded and down"

    28. Re:It's not DLL hell that makes Windows unreliable by imipak · · Score: 2

      Nah, just rambling in a vain attempt to avoid work ;)
      --
      "I'm not downloaded, I'm just loaded and down"

    29. Re:It's not DLL hell that makes Windows unreliable by imipak · · Score: 5

      >(IE, as root, I can hose a Linux system, not
      >matter how stable it is supposed to be).

      (/me waving goodbye to the karma..)

      Unless the admin has been paranoid / smart / had enough copious spare time to implement quotas, a generic user on a Red Hat Linux (and AFAIK, other distros) can crash the whole thing with a one-liner fork bomb. I know, I did it to a co-worker who was relentlessly (and ignorantly) trolling me about how flakey NT is vs the never-crashes, 200 day uptime, uber-secure Linux machine he was using as his w/s. A Rude thing to do, admittedly, but he doesn't go on about it quite so much now. And he couldn't find a way to do that to my NT machine... running BIND, dial-on-demand IP gateway & NAT, Apache w./ mod_proxy and mod-perl, local mail server, plus my generic workstation apps (mail, mozilla, emacs, cygwin apps etc) and currently has nearly 60 days' uptime. Nothing special there, I agree, but really NT isn't as bad as some of the zealots would like to believe...

      Incidentally I'm only still on NT whilst I get an OpenBSD config working to provide the network services and get round to Bastillifying my Linux machine. And I'm lazy. And there aren't enough hours in the day...

      Back on topic: I moved frrom RH6.1 to Mandrake 7 and lost Gnuchess & Xboard along the way. The grilf complained (she's (50%) Russian, so she really needs her chess practice ;) - "no problem" I chortled, "I'll just grab the source, config, make, make install..." HA! chess is > 20Mb as src. OK, I'll take an RPM. And then lib hell began... three days later I gave up and told her I couldn't do it. Perhaps I should give Debian another go... wtvr, RPM sucks.
      --
      "I'm not downloaded, I'm just loaded and down"

    30. Re:It's not DLL hell that makes Windows unreliable by KenRH · · Score: 1

      I had problems on NT 4 while debugging an app with a real big memrory leak. When the app had allocated a LOT of memory NT could not recover even if I killed the app with the taskmanager.

    31. Re:It's not DLL hell that makes Windows unreliable by loopkin · · Score: 1

      right, but i remember using netscape 4.7sthg with XFree 3sthg, and whenever netscape crashed, X was gone with it... (but not the whole OS !!)
      I think that must be pointed out: one big flaw in the Windows 9x/NT/2k design is that the UI is not as much independent from the "kernel" as it should be, and therefore faulty drivers are more likely to crash the OS.
      I agree also with the fact that drivers released by third parties are often less reliable, and i have a question about that: did anybody use on linux closed-source third party drivers (kernel modules or X modules) ? how much stable are they ?

    32. Re:It's not DLL hell that makes Windows unreliable by loopkin · · Score: 1

      I didn't meant drivers didn't run in kernel space (i hope they do ! that's the point of a kernel !!), i meant the UI run too close from the kernel on Windows.
      In other words, i mean that if you don't have clearly different layers in an OS, this is a design flaw... and don't tell me that kernel32.exe and explorer.exe are two different layers...
      BTW 9x isn't single task at all. That is even the problem, because the "DOS-like" design worked, as long as only one task was launched at a time.
      And neither is the single user design of 9x a problem, as for end-users. The problem is that it makes no difference between the end user, the apps it launches, and the kernel. NT does, but the UI remains, as i said too close from the kernel, and too "integrated": explorer.exe is a window manager, a file manager, a GUI server (as X), etc.

      As for linux, X and the Kernel are clearly different, and it happens to me often having X crashed, whereas my linux box was still working.
      Apparently that's not happening when using NVidia drivers (X drivers AND Kernel modules), which makes my point about closed-source drivers.

    33. Re:It's not DLL hell that makes Windows unreliable by loopkin · · Score: 1

      Because of the way NT is designed, if USER crash, regardless of where USER lives, NT goes down as well.
      Why? Because without USER, all the information that Win32 has goes south and dies.
      This has adverse affects on any program that uses Win32 (99.999999999% of them does).

      ok, therefore we agree: not enough separation between UI (User Interface, which meant to me User Space if i get it, again, pardon me if i don't have the right english terms) and the "kernel".
      and i agree with all your part about win9x as well

      Forth, X does makes direct hardware calls, and as such, capable of making the machine hang.
      right as well, but when an app crashes X for some reason, it is therefore less likely to hang the whole machine, as NT does (regarding ur comment about Win32 use, the apps, Explorer.exe and Krnl ARE closer than an app,X and the kernel on Linux, no ?).
      X is an app, the wm is another app and so on... i just mean there are better chances that the faulty app crashes or locks only the "layer" (which i don't mean as NT's HAL.DLL counterpart.. actually, for me, KDE or GNOME are layers, since they provide more or less their own set of libraries to access hardware, communication between processes and so on...) closest to it than the whole machine, that can happen only every time with NT's design (not to talk about 9x), and therefore there is a chance on linux that you can use another UI (such as text console) to kill and restart X (no need to restart the whole thing).. well if X didn't lock the whole machine, which can still happen, but less often. or am i missing something again ?

    34. Re:It's not DLL hell that makes Windows unreliable by Ayende+Rahien · · Score: 2

      I'm going to ignore most of the above, I can't agree with you, but I won't argue.

      Most applications *can't* be uninstalled by deleting their directory.
      You have registry keys, Dlls in Common Files, etc.

      --
      Two witches watch two watches.

      --

      --
      Two witches watched two watches.
      Which witch watched which watch?
    35. Re:It's not DLL hell that makes Windows unreliable by Ayende+Rahien · · Score: 2

      I think that you can limit forking per user on Linux.

      On NT, you can do something *like* it, by taking all the GDI objects to yourself.
      IIRC, there is a (global) limit of 4000 GDI objects, and once you hit this limit, no application can create more GDI objects.

      This require the use of two processes, btw, because a single proccess is limit to 3000 GDI objects /only/.

      You can also give stricter limitations.

      --
      Two witches watch two watches.

      --

      --
      Two witches watched two watches.
      Which witch watched which watch?
    36. Re:It's not DLL hell that makes Windows unreliable by Ayende+Rahien · · Score: 2

      But that require an administrator privileges.

      I must say that EZCD 4&5 are POS.
      I mean, there is a (cause BSOD!) bug from 4(!) that not only have not been fixed up until now, but is also present in 5(!!!).

      --
      Two witches watch two watches.

      --

      --
      Two witches watched two watches.
      Which witch watched which watch?
    37. Re:It's not DLL hell that makes Windows unreliable by Ayende+Rahien · · Score: 2

      No, that isn't that much of a flaw as you present it.

      Drivers *always* run in kernel space, both in NT/9x & Linux.

      And *much* of the instability of windows can be traced to the fucked up design of 9x, which can be traced to the signle user/single task/no-protection-whatsoever-any-application-has- complete-control-on-the-box model of DOS.



      --
      Two witches watch two watches.

      --

      --
      Two witches watched two watches.
      Which witch watched which watch?
    38. Re:It's not DLL hell that makes Windows unreliable by Ayende+Rahien · · Score: 2

      Um, any relation to my post?

      --
      Two witches watch two watches.

      --

      --
      Two witches watched two watches.
      Which witch watched which watch?
    39. Re:It's not DLL hell that makes Windows unreliable by Ayende+Rahien · · Score: 2

      Not really, there is plenty of seperation on NT, but because all of Windows' programs use Win32, its crashing trigger a BSOD.

      NT itself can keep on running, but because of "political" (for lack of better term) reason, it BSOD.

      Okay, NT employs layers for almost anything, btw.
      You can read a file from disk without going through 3 layers at least, usually.
      Explorer can be liken to kpanel, or whatever it's call.
      It handle the desktop, the taskbar, tool bars (like quick launch), etc.

      USER can be liken to windows manager, it handle (among other things) the windowing.

      GDI is like X, I would argue that it's better, because it abstract the hardware details from you, but this is a subject for more debate.

      The problem is with USER crashing, because it handle more than just windowing, it also handle the messaging for Win32. For detials, refer to Inside Windows 2000.
      It is possible to not use the GUI, but having a GUI stub, which is how NT Embedded does it, IIRC.



      --
      Two witches watch two watches.

      --

      --
      Two witches watched two watches.
      Which witch watched which watch?
    40. Re:It's not DLL hell that makes Windows unreliable by Ayende+Rahien · · Score: 3

      I agree, but you have forgot two things:
      A> The OS can only protect itself from applications whose permissions are limited. (IE, as root, I can hose a Linux system, not matter how stable it is supposed to be).
      B> Windows 9x is a single user OS, meaning that everything runs as root. We can spend a long time discussing how bad it is. But it was neccecary for backward compatability.
      Win9x can't be blamed for its instability, it allows direct access to hardware, for crying out loud. What you *could* blame is Win9x design, which prevents the system from being stable.
      MS did a wonderful job making it semi-stable, though. I mean, I can seat on a 9x machine and don't get a BSOD for an hour at a time, sometimes. :-D



      --
      Two witches watch two watches.

      --

      --
      Two witches watched two watches.
      Which witch watched which watch?
    41. Re:It's not DLL hell that makes Windows unreliable by Ayende+Rahien · · Score: 3

      Okay, first, drivers don't have to run in the kernel space.
      They *can* run on ring 1/2, the reason that they don't is that some proccessors only have 2 levels of speration, so NT & Linux (no idea why 9x doesn't implements it, as it's as platform spesific as possible.) are forced to use 2 levels of speration, kernel (ring 0) & user (ring 3) because they are portable.

      Second, ntoskrnl.exe & explorer.exe *do* run in seperate spaces. Explorer.exe run on ring 3, as a user level process.
      (I wouldn't be surprised if notepad.exe would run at ring 0 on 9x, btw)
      What you are referring to is USER & GDI, GDI is the graphic primitives, which actually translate the orders from the program to the hardware.
      USER is where most of Win32 lives, it handle the GUI (higher abstraction than GDI), Windows Messaging, etc. [*]

      Because of the way NT is designed, if USER crash, regardless of where USER lives, NT goes down as well.

      Why? Because without USER, all the information that Win32 has goes south and dies.
      This has adverse affects on any program that uses Win32 (99.999999999% of them does).

      There is nothing I can compare this to in Linux, I believe, as Linux employs monolitic, rather than layered, model.

      On Win9x, if USER goes down, there is nothing to "catch" the computer if USER goes kaboom.

      * This is not a techincal explanation, but it should give you some understanding on how it works.

      Third, I didn't say that Win9x is single task, I said that it's design was influence from the single-taskness of DOS.
      Because one of the *major* design goals of Win9x was to stay compatible with DOS applications.

      This made it impossible to implement real seperation of applications from the hardware, as many DOS applications did direct hardware calls.
      Memory protection was also a problem.

      The single user aspect of 9x kicks you in the balls when you want to talk about security & seperation of tasks.
      It's just an extention of the problems caused by DOS compatability, though.

      Forth, X does makes direct hardware calls, and as such, capable of making the machine hang.

      --
      Two witches watch two watches.

      --

      --
      Two witches watched two watches.
      Which witch watched which watch?
    42. Re:It's not DLL hell that makes Windows unreliable by shiftless · · Score: 1

      I've certainly never found a working mp3 ripper that runs on NT4

      Eh? I'm running NT4 now, and I can rip fine with any number of ripping utilities. Audiograbber, Autocatalyst, etc. Poor drivers on your end, I'm guessing.

    43. Re:It's not DLL hell that makes Windows unreliable by Gollo · · Score: 1

      Agreed, it is the apps and drivers that cause the 'instability' you're talking about. But when I say that an OS is stable, I mean that no matter what I run on it, the OS remains up and operational.

      OSes should not be relying on the abilities of application programmers for the overall stability of the OS. As an OS writer, one should be expecting application programmers to do stupid things, and the code should cope with that. Real operating systems (and I don't necessarily mean *nix only here, or even at all) remain stable no matter what an application is doing or has done. If the application misbehaves, then the OS should tell it off, and allow the user to gracefully terminate the program (eg, End Task for windows, kill for unix) without any sideeffects.

      Most unices can do this most of the time, Windows 2000 is getting there, and mainframe operating systems (IBM or otherwise) have been doing this reliably for the last 15 (at least) years. So when I say stability, it is OS stability, not application stability, and, as far as I am concerned, if your OS stability is directly dependant on application stability, your OS is not stable.


      Gollo.

    44. Re:It's not DLL hell that makes Windows unreliable by NutscrapeSucks · · Score: 1

      The orgin of the HCL was that NT 3.x was not intended to run on "standard components" at all - it was designed to run on certified systems. I'm sorta shocked it even booted on your system.

      The problem is that what you thought of as "standard" components probably weren't. Was it an authentic i8042 keyboard controller, or a clone? Was it an authentic Rockwell whatever serial controller, or a clone? (Before Windows 95, was realeased, I read that Microsoft had two full time engineers doing nothing but writing detection code and working around bugs in the thousands of 'clone' serial controllers out there. Linux has taken a similar elbow-grease approach to PC hardware compatibility.)

      They loosened hardware requirements for 4.0, and as a result many more people ran the OS, at the cost of greatly increasing NT's reputation for instability.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    45. Re:It's not DLL hell that makes Windows unreliable by NutscrapeSucks · · Score: 1

      I did DAE rips on 2 different NT 4.0 machines. However, they were both SCSI.

      (Beyond CD-ripping, NT4 did not run well on IDE boxes. It dated from the early-90s assumption that 'workstation' == SCSI)

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    46. Re:It's not DLL hell that makes Windows unreliable by NutscrapeSucks · · Score: 1

      Just 2 on serial ports, or so the story goes - multiply that by all the mystery components in the average 486/586 machine of the era.

      I agree that the ISA hardware detection bit was genius (MS actually bought it from an independant hacker) - it could find everything I threw at it except a Madge Token Rink card. However, I think it's been dropped from more recent OSes - Win2000 only picks up ISA PnP cards, and ISA itself is of course going away.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
  99. misleading by austad · · Score: 2

    The article is misleading. It requires around 60 .so files, which are available in 5 different packages. The author of the article omitted this fact, and it's just plain poor journalism.

    --
    Need Free Juniper/NetScreen Support? JuniperForum
  100. Descending? by Smallest · · Score: 1

    Linux is already there.

    --
    I have discovered a truly remarkable proof which this margin is too small to contain.
  101. Re:Installing Free Software by gmhowell · · Score: 2

    UNinstalling apps in Windows is a serious PITA. I'd say that roughly 50% of the uninstallers that I've used don't work. And no, I won't go buy a commercial 'uninstaller helper'. They think a browser is an important and integral part of the OS. I think a working uninstaller is a bit more important.

    In Linux, I can usually do:

    1) cd /usr/local/src/PACKAGE && make uninstall

    OR

    2) rm /usr/local/bin/PACKAGE-BINARY && rm /etc/PACKAGE-CONFIG

    --
    Jesus was all right but his disciples were thick and ordinary. -John Lennon
  102. Re:You wanna talk hell... (not NeXT style) by gutter · · Score: 1

    Well, it means that the application _can_ bundle all the libraries it uses, but it doesn't _have_ to. I believe early betas of OS X, OmniWeb (really cool browser) used to make you install OmniFoundation.framework or something like that, which contained a bunch of code that was shared across Omni's apps.

    However, it definitely makes things easier to install if the frameworks are included with the application. I'm not sure if the loader is smart enough to only load one copy of OmniFoundation if two of Omni's applications are running - I think it is, but I could be wrong.

    --
    Check out DRM-free movies at http://www.bside.com
  103. Re:You wanna talk hell... (not NeXT style) by gutter · · Score: 5

    Actually, NeXT didn't necessarily bundle all the packages inside the app, although some applications did. I never owned a NeXT box, but most of this works the same way in Mac OS X, which I do use.

    Most shared libraries on NeXT/Mac OS X are installed as frameworks. These frameworks are basically directories with .framework suffix, like OpenGL.framework.

    Each framework contains a folder called Versions - this folder contains all the installed versions of a framework, which includes shared libraries, the headers necessary to use them, and any other necessary resources. They are versioned with a major/minor numbering system - minor versions get bumped for compatible upgrades, and major versions get bumped for API changes and the like. Programs know what version they were linked against, so if you install a new, incompatible version, the program can still use the old version. This pretty much eliminates DLL hell - you can install new versions without breaking old stuff.

    Apple's frameworks go in /System/Library/Frameworks, local frameworks go in /Library/Frameworks/, user-installed frameworks go in ~/Library/Frameworks, and application frameworks can go in the application bundle. I'm not really sure of the precedence though.

    It's a really cool system, and makes a lot of sense. Unfortunately, there seems to be a trend in Apple to install many unix shared libraries the regular way instead of as frameworks, to increase compatibility - makes many more things 'just compile'. I'd be much happier if more unix systems went to frameworks instead.

    --
    Check out DRM-free movies at http://www.bside.com
  104. Everything old is new again! by Jay+Carlson · · Score: 1
    If you have good ideas on how to solve the cluster of issues related to shared libraries, cmon over to the Linux VR project, where everything is up for redecision. Trying to fit as much useful stuff as possible on an Agenda VR3 means everyone's open to new ideas---if they work!

    For instance, Shane Nay and I implemented old-style Linux a.out shared libraries because of significant overhead in MIPS PIC code. There's no dynamic linking, but boy does it run faster. Some people are playing with dynamic-linking applications into a common base executable. And so on. Maybe these things seem silly on a desktop box, but this kind of embedded environment is clearly not a desktop box....

  105. Re:Nothing New by PigleT · · Score: 2

    Truly. Not only is it nothing new, but also
    a) the concept of `standard distributions' is totally bogus; there is no reason why software should be constrained to the contents of RH CD1 for compatibility;

    b) the whole GNU/Linux scene has not evolved this far by sticking to distributions;

    c) developers seem to be able to keep track of what version of what file they have installed where, including multiple versions for debugging etc, with fair amount of ease (I envy the blighters! I tend to fall back on a package manager for that, and heaven help me when I'm writing anything like code);

    d) If you have a decent distribution where software is indeed correctly regarded as a big pool with ever-flowing version numbers, tracking this sort of thing is not exactly a problem.

    In short, somehow, before you label me a Debian freak for suggesting `man apt-get` is a useful thing, remember that the whole point of this comment is to draw attention to the existence of apt as *FREE SOFTWARE* for whaever distro/platform you choose, not as a `Debian thing'. Use the source, Luke. Source is all; categorizing things into versions is like the Matrix compared to reality.
    ~Tim
    --
    .|` Clouds cross the black moonlight,

    --
    ~Tim
    --
    .|` Clouds cross the black moonlight,
    Rushing on down to the circle of the turn
  106. Re:Welcome to Windows? by swingerman · · Score: 1

    I don't know if this is a myth or once was true but I heard that dll's can be shared, but exe's cannot.

    No, it's not true. Modern OSen utilize a technique called memory-mapping of files that allow the code of an application to be shared among its running instances. Only its private data areas (data segment, stack, and heap) cannot be shared. So, much of an executable is still shareable in memory between instances of it.

  107. Re:Installing Free Software by themack · · Score: 1
    That's because Mac OS X = ONE OS/HARDWARE. The developers know EXACTLY what you have.

    Yea if linux only ran on one processor/chipset then installing a program could be that easy.

    If OS X supported x86, PPC, Mips, Alpha... not to mention all the chipsets and other hardware the I think you might have an argument.

    Sure if all linux boxes had the same video card (like your macs) then it might be easy.

    But just like our founding fathers, I would rather have freedom than ease of use.

  108. Re:Welcome to Windows? by spectecjr · · Score: 1

    Part of the DLL hell is the vast amount of them that are unnecessarily created by people who don't understand when static linking will work just fine. I still hear people claim that DLL's magically keep the executable size small. DUH! All it does is unnecessarily chunk up your program, increase file count, and increase loading time.

    Hmmm... increase loading time? Imperceptibly if you use Rebase and Bind to tidy up your DLL use.

    Unnecessarily chunk up your program? Not if it's done on functional divisions; one big advantage this has is that you can in-situ replace DLLs that are faulty by ONLY replacing the DLL - not the entire file (which software designed to patch files might not necessarily be able to do).

    Besides... who's worried? I've been told since 1998 by all KINDS of people that Linux has never and NEVER WOULD have ANY problems of this nature, because it's not fundamentally flawed like Windows. Surely they weren't all wrong?

    Simon

    --
    Coming soon - pyrogyra
  109. Re:Is it really necessary.. by Flower · · Score: 2
    But what's to stop someone from grabbing the source and development libs and compiling a static version for distribution? Heck it's GPL'd, if you're savy enough, do the compile yourself; burn it to CD and distribute it to your friends. Or wait to find someone with the same itch who has done it and packaged the binary.

    I don't see what the problem is.

    --
    I don't want knowledge. I want certainty. - Law, David Bowie
  110. Re:Could we please make up our minds. by Znork · · Score: 1

    There is no actual place where the programs look for the libs. Dynamic linking is handled by the dynamic linker, which has a list of places where libraries are found (often /etc/ld.so.conf).You can edit this and run ldconfig -v to update your list.

    If you wish to use a very specific version for a special application you can always set LD_LIBRARY_PATH before starting the application to ensure it gets the right libs.

  111. there are solutions ... by madmaxx · · Score: 1

    a few systems have good solutions for dll/so madness ... though good design really reduces the problem. for example, nextstep and apple's os-x use resource maps/app packages so the shared objects are mapped properly in the application package, and can be stored there or in the system packages. tru64 uses a filesystm/kernal .so versioning scheme ... that allows multiple versions of libraries to exist and be served somewhat sensible. and i am sure there are others. luckily, linux has the potential to improve the library hell ...

    --
    mx
  112. Re:Installing Free Software by mpe · · Score: 2

    If you prefer having to reformat and reinstall your OS every time something goes wrong, because it's all happening "behind the scenes" and you can't fix anything, stick with Windows. Or a system administrator has to do this because something went wrong. Possibly the clueless enduser trying to install something.

  113. Re:Installing Free Software by mpe · · Score: 3

    But installing apps on Linux more difficult then Windows.

    In some situations this might be a bad thing. But in a great many situations it is actually a good thing. Indeed there is a whole industry providing tools to make it difficult to install programs under Windows. On the vast majority of corporate systems you explicitally don't want end users installing apps any more than you want they customising their company cars or taking woodworking tools to their desks.

  114. It seems to me that.... by Foxman98 · · Score: 2

    It seems to me that dll's are both a blessing and a curse for windows. I've always found that installing software on windows tends to be much, much simpler than on linux. For example, say you want to install program x on a windows machine. Typically what is required is running some type of setup.exe file, and the rest is taken care of. On the other hand, in Linux (Redhat for this example) one may download the rpm, only to find that many other rpm's are required. Upon trying to install those rpms, one finds out that each new rpm requires others... It gets freakin annoying as hell. Is the doze approach better? Probably not. I mean, I hate having my win\system folder filled with crap that I no longer need after uninstalling a program. But at the same time, I know that installing a new program isn't going to take more than 5 mins or so. Keep in mind that I'm a redhat/mandrake kinda guy, so apt-get isn't too helpfull for me. Surely there must be a more elegant solution?

    --
    S.t.e.v.e.
  115. DLLs in themselves are not the problem by CAIMLAS · · Score: 2
    Blaming the problem on DLLs - dynamically linked libraries - is not the problem with DLLs in Windows. The problem is, as already stated, is that DLLs are plagued by the same sympoms as the rest of windows - over stressed programmers, poor/no documentation, and sometimes, just plain ol' poor programming.

    Contrast this to linux 'dynamically linked' libraries that are generally developed at a leasurely rate - or even at an excelerated rate. However, the difference is, these libraries are not rushed out 'into the wild' - they're kept in development or even CVS until they're deemed stable enough for the rabid, er, using public. :)

    As far as the stability of Windows iself is concerned (from my perspective): it can be anywhere from pretty darn good (5+ days uptime on a win98 gaming/programming/multimedia box w/o any glitches) to really freaking bad (4 or so reboots a day). All in all, I'd say the main determinant I've seen in saying to which extreme a system will go is the quality of the hardware and drivers for that hardware (as well as the presense (or lack there of) of shizzy VB programs and their inbred next-of-kin). My Duron 700 system with a GeForce 2 MX and 256 megs of PC133 Micron memory (to name a few of the components) has some quite surprising uptimes - all I do is use the latest Detonator, 4-in-1, and various other drivers (or older ones that run well/stable). On the other hand, I've had systems in my possession with fairly 'generic' components in them, and their performance is really bad. The video card (being that Windows video functions are in the kernel) and the quality of the system memory seem to have the most to do with Windows stability, overall.

    Whoa, quite a bit. :)

    -------
    Caimlas

    --
    ~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
    1. Re:DLLs in themselves are not the problem by CAIMLAS · · Score: 2
      Partially. Also in part was my failure to communicate properly. I meant that stable releases aren't rushed. It is indeed true that 'non-stable' releases are 'released early, released often'. It assists in the development process.

      -------
      Caimlas

      --
      ~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
    2. Re:DLLs in themselves are not the problem by oojah · · Score: 1

      Contrast this to linux 'dynamically linked' libraries that are generally developed at a leasurely rate - or even at an excelerated rate. However, the difference is, these libraries are not rushed out 'into the wild' - they're kept in development or even CVS until they're deemed stable enough for the rabid, er, using public. :)

      "Release early, release often", something I've heard many a time here and other places. Tends to go against your belief that Linux developers only release rarely.

      Or have I misunderstood what you meant?

      oojah
      --

      --
      Do you have any better hostages?
  116. Yea but by brianvan · · Score: 2

    - then you have a Linux distro that spans 10 DVDs just so you can include every single doo-dad program (and its libraries) on the planet. Next thing you know, MS starts advertising themselves as the quick and easy OS that needs only one CD to install. That, my friends, is hell.

    1. Re:Yea but by NutscrapeSucks · · Score: 1

      Yes - that is the correct fix (packaging the DLLs into a common installer), politics be damned.

      Look at "Microsoft Money" - Installing in onto a virgin Win98 box no doubt requires umpteen upgraded and new DLLs. Fortunately, Microsoft has created a package where you can get many of these DLL. The package is called "Internet Explorer 5.0SP1". That pisses off Netscape-fans and the government, but, more importantly, it works.

      Why? Because if MS required people to find and upgrade 32 system DLLs, nobody would ever run their software. GnuCash should do the same and just put "Requires Gnome 1.43* (*see release notes for actual library requirements)" on the webpage and build the packages that way - simply because it's cheaper and easier for users to upgrade Gnome than it is to hunt-n-shoot DLLs.

      It sounds like the system is now slanted towards people who don't want to install Gnome , but end up with 90% of Gnome anyways to run Gnucash.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
  117. Why DLL Hell exists on Windows... by throx · · Score: 2

    The Windows linker works pretty much the same way - an application always loads the DLL that it was originally bound against. If you change the interface you should change the version (ie filename) of the lib.

    The real problem with Windows comes from the two simple facts:

    (i) Windows developers got lazy and didn't put versions in their filenames.
    (ii) Windows developers got lazy and put all their application DLLs on the path (ie system directory) instead of in the application directory.

    Despite what other developers may lead you to believe, all versions of Windows NT (and I believe Windows 9x is the same) will load DLLs from the application directory first, regardless of whether there is another DLL of the same name already loaded. For a DLL to be "reused" in memory the following conditions have to be satisfied:

    (i) The DLL must have the same full path name.
    (ii) The DLL must be able to be loaded at the same logical address.

    If the logical address is already used (probably by another DLL) then NT will simply dynamically load a new copy of the DLL at a new address. For those who don't understand why it has to be a new copy, look in any OS book about Dynamic Loading and "fixups".

    Remember that: You can load two DLLs of the same name on any version of Win32. Many people still live in Win16 land where you couldn't do this, but it is definitely possible (try it and see).

    Linux is NOT descending into DLL hell for the simple reason that it has a logical way of maintaining the separation between major versions of DLLs. As developers are being good on Linux, DLL hell won't exist the way it does on Windows.

    --

    Fear: When you see B8 00 4C CD 21 and know what it means

    1. Re:Why DLL Hell exists on Windows... by Dwonis · · Score: 2

      That's why strict policies like whatDebian has are so important. To be included in Debian (and remain there), an application must meet a certain level of quality, and one set of things that are not tolerated is things that break other packages (like not incrementing major versions on incompatible API changes).
      ------

    2. Re:Why DLL Hell exists on Windows... by VFVTHUNTER · · Score: 1
      It has nothing to do with doing a lousy job. You can do kick ass job, but when a deadline is three hours away, you tend to compile things until they work, without taking the time to understand the code.

      With free software we have no deadlines; we can afford to take the time to understand the code, and instead of releasing something that just compiles and "works", we release things that work because we KNOW how they work.

    3. Re:Why DLL Hell exists on Windows... by VFVTHUNTER · · Score: 3

      Not really. Windows programmers get paid to write code, and laziness in this sense means getting the project done quickly and out to market. We in the Linux community write software in our free time because we love it, and do not release things until they kick ass.

    4. Re:Why DLL Hell exists on Windows... by Chester+K · · Score: 3

      Linux is NOT descending into DLL hell for the simple reason that it has a logical way of maintaining the separation between major versions of DLLs. As developers are being good on Linux, DLL hell won't exist the way it does on Windows.

      That's the way it is now, but it's only going to get worse as Linux gains popularity. For the reason why, let me quote another portion of your post:

      (i) Windows developers got lazy and didn't put versions in their filenames. (ii) Windows developers got lazy and put all their application DLLs on the path (ie system directory) instead of in the application directory.

      The application developers got lazy. And if/when Linux picks up mass market speed, you can expect the exact same thing to happen.

      --

      NO CARRIER
    5. Re:Why DLL Hell exists on Windows... by stiggystiggy · · Score: 1

      What do you do for money? I assume it has something to do with computers! Do you to a lousey job just because you're getting paid? Of course not!

      Get a grip!

  118. Re:DLL hell? by bludragoon · · Score: 1

    Just say apt-get install and there's no hassle.

    amen to that!
    but remember most people have no idea how actually powerfull that can be.

    --
    Elephant: a mouse built to government specs
  119. shared library madness... by _Quinn · · Score: 2

    ... is the primary disease which package managers propose to remedy. I would suggest creating `autopkg', a tool like autoconf and automake, which is used to automate the production of packages (start with .rpm, .deb, and .tgz, perhaps). This way maintainers could just 'gmake distribution' when they announce a release and the packages would be built automagically. More importantly, however, would be autopkg's ability to fetch shared libraries required during the build and recursively make them. Finally, if incompatible libraries are found, the installation process should wrap its binaries in scripts which set LD_LIBRARY_PATH to the necessary compatibility libraries (/usr/lib/compat) -- and they should be linked to _specifically by version_, so that different versions of compability libraries don't fight with each other.

    -_Quinn

    --
    Reality Maintenance Group, Silver City Construction Co., Ltd.
  120. Windows, Gnome - same thing by alehmann · · Score: 1

    Windows has DLL hell. Well, so does Gnome. Gnome tries hard to emulate windows in all ways.

    Look at the motif version of gnucash - how many dependencies does that have?

    Me, I write software with minimal dependencies. Often just the C library, but sometimes libraries like GTK or SDL.

    1. Re:Windows, Gnome - same thing by alehmann · · Score: 1

      I didn't say that I liked it. My applications link against X, libc, glib, and gtk. No berkeley DB, sorry.

      I think SDL is pretty great. Just because whatever messed up version you got from your distribution was bad, well... SDL itself can use either or any of aalib, xlib, svgalib, or even GGI iirc for video. It supports esd, oss, and/or alsa for audio. Every single one of these is optional, although it helps to include at least one :).

  121. LD_LIBRARY_PATH by chrysalis · · Score: 2

    Multiple versions of the same library aren't that problematic, because libraries are versionned (xxx.so.version) . The real problem is that developpment headers (you know that include / .h files) aren't versionned. So when you upgrade a library, the new headers overwrite the old ones. And if backward-compatibilty isn't provided (#ifdef everywhere), some older software depending on older versions of the library won't compile any more.
    When installing a new library that might conflict with what is already installed on your system, use a different prefix than /usr/local or /usr. For instance, configure with ./configure --prefix=/usr/local/libalsa0.9 .
    Include files will be in /usr/local/libalsa0.9/include, and libraries in /usr/local/libalsa0.9/lib .
    No, add /usr/local/libalsa0.9/lib in /etc/ld.so.conf if you found that most existing programs are compiling and working with that version.
    And if some programs are incompatibles : - Set LDFLAGS="-L /usr/local/libalsa/lib" and CFLAGS="-I /usr/local/libalsa-/include" in your environement variables. - Compile with that. - For pre-compiled binaries, use LD_LIBRARY_PATH. This environment variable can specify alternative paths to search for libraries. It isn't a global setting like /etc/ld.so.conf. It just affects programs launched when LD_LIBRARY_PATH contains a path. You can easily write little shell script wrappers that will set LD_LIBRARY_PATH before launching an application.

    --
    {{.sig}}
  122. Mac OS 9 and below by sometwo · · Score: 2

    The way classic mac os does shared libraries is it looks in several different places for them. I know off the top of my head of 2 different places. First, it looks in the directory that contains the application. If it doesn't find it there, it looks in the extensions folder. That way, older apps can have their own version of the shared library. This was necessary for older MS apps. I know my friend used this technique when he couldn't get his X-Files games to work correctly with the new Mac OS.

  123. Unshared DLLs are very nessecary by Local+Loop · · Score: 1

    Actually, building non shared code as DLLs is very useful for testing. It's also a good workaround for the 'lot's of developers need to work on the same files' problem that VC++ tends to have.

    Also, building as DLLs contributes to code reusability within an organization.

    Lastly, OCX's, VBX's (are they still around?) and ActiveX controls are great ways for closed source companies to distribute modules, since they avoid the link-time incompatibilities that plague Windows compilers. All of the above are of course just gussied up DLL's.

    I won't argue that many Windows developers are downright clueless though.

    -Loopy

  124. you have a choice. by BenLutgens · · Score: 1

    It's very simple, you run a more minimalistit system, one based mostly off console apps, leave gnome and kde on the ftp sites because they are bloated unstable piece of crap. The key difference here is that you aren't forced into having all that crap on your box. Heck if you wanted you do an install that was less than 100MB and still be able to anything you needed to

    --
    "If you love someone, set them free. If they come home, set them on fire." - George Carlin
  125. Simple by be-fan · · Score: 2

    The answer is quite easy. Simply stop making so many shared libraries! On Linux, there are at least a dozen different libraries that do the same thing the same way, and progams use all of them. If GTK+ and Qt weren't equally used by different programs, there would be a dozen libraries you could remove right off the bat. If people didn't keep releasing toolkits and wrappers as fast as they could code them, the total library bloat would greatly decrease. Say what you will about closed-source OSes, they do have one advantage. A closed source OS is usually managed as a whole (rather than having seperate projects for the kernel, GUI, etc.) Thus they are able to impose standards on developers (yes, imposing standards is a good thing, just like imposing law) who, while free to not follow the standards, do so at the risk of pissing off consumers who have grown used to uniformity.

    --
    A deep unwavering belief is a sure sign you're missing something...
  126. Re:Installing Free Software by mghiggins · · Score: 1

    > In some situations this might be a bad thing. But in a great many situations it is actually a good thing.

    What?! Defending difficulty of installation because it makes being a sysadmin easier?! Why not just avoid giving your users root access, but make installation easy for the who can/should do it?

    --
    All opinions expressed herein are not my own; I haven't had free will since last year when aliens ate my brain.
  127. You're right - BUT by vrt3 · · Score: 1

    You make some good points, if one assumes that DLL's are used as shared libraries - same code used by different programs. That's the intent, and it happens of course. But on the other hand, it also often happens that some software package uses a number of DLLs that were written specifically for that package. That wouldn't be a problem if they would be installed in the application's directory - but often they are installed in Common Files or System or System32 (a lot of Windows developers seem to think that's the easiest or only way to make sure the DLLs can be located at program start). Which is one of the reasons the system partition of a Windows system keeps growing and growing, and you can't do anything about it except format c: and reinstall.

    --
    This sig under construction. Please check back later.
    1. Re:You're right - BUT by dbarclay10 · · Score: 2

      Oh, definetly. Shared libraries that are 100% application-specific should be kept in the application's space.

      In fact, this is what happens on Linux too. Check the subdirectories in /usr/lib. Netscape is there, and a whole bunch of others :)

      Barclay family motto:
      Aut agere aut mori.
      (Either action or death.)

      --

      Barclay family motto:
      Aut agere aut mori.
      (Either action or death.)
    2. Re:You're right - BUT by cjwatson · · Score: 1

      In fact, if a library's just designed for use with one program, chances are it won't go through all the rigmarole of doing interface versioning and so on properly. Putting it directly in a system library directory would then be a bug, so distributions should - and usually do - do the right thing and put them somewhere private.

  128. Re:Installing Free Software by Ramses0 · · Score: 3

    You can (mostly) under linux, if you're using the right distribution.

    apt-get -y install gnucash; gnucash

    Type that into any command prompt or whoknowswhat run dialog, and gnucash will automatically be installed and run. Oh, you have to be 'root' to do it, I'm sorry. Linux has this nice thing called 'permissions', so that you can't break anything unless you've logged in as root.

    No need to show folders, or double-click anything, etc... Debian's Advanced Package Tool will automagically put an icon in Start->Programs->Applications->GNUCash, so it's even easier than what you're describing.

    I'd love to spend some time wiring up a few scripts to "apt-cache search", "apt-cache show", and "apt-get install", with a nice GUI interface, so that it *would* be as easy as double-clicking. Ahhh... a project for another day.

    --Robert

  129. It's only DLL Heck by hamjudo · · Score: 2
    I thought we called them shared libraries...

    Shared library versioning can be made to work, so it's only annoying to have to have multiple versions of a library installed. Some other OS's still haven't figured that out.

    Another usefull feature is that shared libraries don't have to be system wide. The system doesn't share libraries based on the name, it's really based on the inode and mount point. So two different libraries can be named libfoo.so.4.2 as long they're in different directories. The user may get confused, but the system won't.

    As long as everything has a reasonable license, we our allowed to fix it ourselves.

    I assume the Debian package is already done, or will be done shortly. Type apt-get install gnu-cash and let it sort it out.

  130. One of the problems with DLLs and COM Objects is by Louis+Savain · · Score: 2

    that if an application that loaded a DLL crashes or is forced to terminate the DLL may remain in memory. COM DLLs do have use counts but it's up to the application to decrement the count when it's done with it. A good operating system should clean up after bad apps automatically, IMO.
    Another problem has to do with security. DLLs and COMs advertise their data types through the use of variants so that a spying program can easily figure out why being transfered between various apps and DLLs.

  131. Not a problem with free software/open source by mike_markley · · Score: 1


    Real DLL hell is when applications start installing their own versions of shared libraries because they were linked against that particular version and are binary-incompatible with other versions. For an example, see practically any piece of commercial Windows crap you can find.

    In the free software/open source world, this isn't really an issue. Sure, it's possible to link in such a way that your program will attempt to run against a binary-incompatible shared library, but half a clue about library versioning and a tenth of a clue about linking is all that's required to fix this.

    And the best part is: if it doesn't work with the shared libs on your system, just rebuild it! Free/open-source software doesn't *need* to ship with its own version of any shared libs (.dll/.so/whatever) because it can be re-linked against the proper revision of the library if the binary API changes. You're still screwed if there's a major change in the headers and library interface (the source API, so to speak), but no technology is ever gonna fix having to rewrite programs when there are major changes to the publically-accessible/used functions and data structures of a library...

    File this under "reasons why commercial software sucks" :) (And see Debian for an example of "how to do this right").
    </hat>

    --
    Mike Markley - *NIX Sysadmin and all-around geek - finger for PGP key
  132. Re:Debs by mike_markley · · Score: 2

    That's because Debian has pretty tight policies about library versioning intended to prevent just this sort of problem. Library packages must be built with a proper SONAME, and the "shlibs" functionality allows a library package to tell the system what versions of the package are binary-compatible with that package's libraries. This information is used during the build of other Debian packages to ensure that a package's Depends reflect exactly what versions of a library it'll work with (assuming the library's maintainer didn't screw up, in which case the BTS will quickly let him/her know of the error :).

    --
    Mike Markley - *NIX Sysadmin and all-around geek - finger for PGP key
  133. Just say no to shared libraries by horse · · Score: 1

    Static linking has a lot to recommend it.

    Yes, it uses more disk space. Disk space is cheap nowadays. But it reduces the hassle factor enormously.

  134. Re:Libraries: Harken to the Bad Old Days by dbarclay10 · · Score: 2

    This shouldn't happen on Linux. At least not if things are installed properly. Let's look at an example. FooBar and YooHoo both require Wingbat; here's what /usr/lib might look like:

    libwingbar.so.1.0.2 (file)
    libwingbat.so.1 -> libfoobar.so.1.0.2 (link)

    Both YooHoo and FooBar are linked against libwingbat.so.1. A new, *compatible* version(usually a bugfux release, or in some cases a version which adds another function, but doesn't touch existing functions) is released. It will then become libwingbat.so.1.0.3 or somsuch; libwingbat.so.1 will then by symbolically linked to the new library.

    If a wholly new and incompatible libwingbat is released, then its so-version would be bumped; so you'd have:

    libwingbat.so.1.0.3 (file)
    libwingbat.so.1 -> libwingbat.so.1.0.3 (link)
    libwingbat.so.2.0.0 (file)
    libwingbat.so.2 -> libwingbat.so.2.0.0 (link)

    Then, FooBar(which needs the new library), would be compiled against libwingbat.so.2. Now, library authors are *very* careful about stuff like this. If you've had problems, I would guess that they'd be package-management related.

    Barclay family motto:
    Aut agere aut mori.
    (Either action or death.)

    --

    Barclay family motto:
    Aut agere aut mori.
    (Either action or death.)
  135. Re:Libraries: Harken to the Bad Old Days by dbarclay10 · · Score: 5
    then the next will really floor you -- applications will keep their own .DLL's in their own application directories. Just like in the DOS days, you will be able to blow an app completely off your machine by deleting its directory, and version differences will become irrelevant.

    Well, no a bad idea totally. It'd help for DLL-hell type problems, but let's raise a few points:

    1) Firstly, decent packaging makes DLL-hell much less likely. I use the experimental variant of Debian, and even then, there are rarely library dependancy problems. The problems that do arise are usually easily fixable, as opposed to most of the DLL-hell problems that Windows has(ie: two applications requiring incompatible versions of the same library).
    2) Secondly, Linux(as a *nix variant) allows one to have multiple library versions installed at the same time, without trouble. That was one of the design considerations.
    3) Security. The main reason for shared libraries isn't space-saving(as you imply), but rather security and stability. The FooBar application relies on library Wingbat. So does app YooHoo. Now, the Wingbat library has a security hole that was just found. Oops! Well, a patch is released, packages are made and sent out. You upgrade(or your computer does it automatically), and poof - all of a sudden, YooHoo, FooBar, and all the other apps that use the Wingbat library are more secure. Ditto with stability. The Wingbat library has a nasty bug which causes crashes. Okay, a fix is made, packages are installed, and now neither the YooHoo nor the FooBar apps are susceptible to that particular bug.

    Anyways, I just wanted to say that the main reasons for shared libraries isn't really the space issue. Nor is it a performance thing. It's a quality thing.



    Barclay family motto:
    Aut agere aut mori.
    (Either action or death.)
    --

    Barclay family motto:
    Aut agere aut mori.
    (Either action or death.)
  136. Re:Yea but what? by lapdog · · Score: 1

    Don't even need the floppies, I put debian on my old sparc IPX with just the network (boot image fed into forth with tftp, NFS mount the root filesystem).
    --------

    --
    --------
    WWGD? (What Would Goku Do?)
  137. Hehe by Jailbrekr · · Score: 5

    I'll bet the MS developers are rubbing their handing, and giggling gleefully right now. "Oh yes, now they understand, now they UNDERSTAND!"

    --
    Feed the need: Digitaladdiction.net
  138. Re:You wanna talk hell... (not NeXT style) by larkost · · Score: 1

    You are right about the linker only loading one version, and more than that, it loads the newest revision of that version on a computer. For example if my system folder has lib Foo version B.0 and program blue has lib Foo version B.1 in its shared lib folder (in the .app package), when program green asks for routines out of Foo version B the linker will use B.1.

    This allows for there to be both major versions (incompatible) and minor version (compatible) of any package on the system. There is a lot more to this new linker, and a lot of it is still in progress.

    Apple has been going more and more with the regular libs because people are complaining that newer version of the library don't work, or that they want newer features. Apple is working at making this seamless, but at the moment it is in a bind, spend the resources to make everything compatible (slowing work down), or get a version that works out now, and then go back and make it better...

  139. Re:Is there a real solution to this? by JWW · · Score: 1

    This is actually the only real solution. Static linking solves the problem, nothing else does.
    Thats it end of story.

    The previous post should have a few more mod points.

  140. right... by Ender+Ryan · · Score: 1

    and why does an app (such as Eurora) crashing bring down the whole system, or require a reboot to get things working correctly again.

    Any app that doesn't directly access hardware should not be able to do that.

    Seems like crappy memory management to me, but I'm not a windows programmer so I dunno.

    I'm not trying to disagree with you, I'm just curious why this is the case with windows.

    --
    Sticking feathers up your butt does not make you a chicken - Tyler Durden
  141. Windows isn't "DLL Hell" anymore. by -=[+SYRiNX+]=- · · Score: 1

    The introduction of MSI (Microsoft Installer, aka Darwin) eliminates DLL hell on Windows with applications that use it. It is a system-level, centralized installer, and as long as applications use that to install themselves, then the system can keep proper records on installed components and their versions.

    Before MSI, every application had to use its own installer, and each installer might or might not be so smart about checking for versioning / existance of DLLs before forcibly overwriting newer versions with older versions of the same library or blowing away a more recent registry key.

    In Linux, you don't run into as many installation nightmares because you don't HAVE installers to take care of installing shared libs for you--you're expected to be smart enough to install those yourself along with the app, and you're expected to handle versioning of libs appropriately via symlinks and so forth. But Linux, like Windows before MSI, lacks any centralized database of versioning information, so if you're not a dilligent & careful system admin type, you can get into the same scenario due to human error.

    GNU/Linux desperately needs some central, standard repositories of data and methods of acting upon them within the system, accessible to all applications, and application authors should be motivated to go through those central repositories/methods rather than bypass them and write their own ways. GNU/Linux is currently just as disorganized as the old MS-DOS era, when every application author wrote their own video and sound driver code from scratch only for certain supported hardware, or relied on such libraries as VESA for some lame level of standardized support. Those MS-DOS apps each had their own config files, sometimes in human readable form, sometimes in binary form, sometimes in script form, just as linux apps today all have to dump differently formatted config files into /etc. Linux needs the same concept of standardization and centralization that Windows brought to the MS-DOS PC with mechanisms such as DirectX and the registry.

    --
    - "It's just a matter of opinion!" - PRIMUS
    1. Re:Windows isn't "DLL Hell" anymore. by -=[+SYRiNX+]=- · · Score: 1

      I'm not uber-familiar with RPM, but Darwin can do some very cool things besides just keeping record of library versioning and installed registry keys. Suppose you install the latest MS Office (which uses Darwin); it doesn't install all the files. Instead, Darwin keeps record of files and registry entries that *would* be required if you wanted to use a certain feature or application, and the first time you try to actually use it, THAT's when it prompts you for the CD to copy the files and install the needed stuff. In that way it's somewhat space-efficient, only installing what you need. Another thing it can do is detect corrupted binaries or registry bits and offer automatically to reinstall them with fresh ones from the installation point. I don't think RPM supports either of those features.

      I understand that many application authors out there will choose to go with other installer technology, thus bypassing the centralized methods provided by Darwin. Microsoft can't force everyone to use their stuff--but what they can (and do) try to do is make it so appealing to use their stuff that people naturally gravitate toward it until it becomes the standard. That's what happened with DOS, Windows, and Office, after all. So I suspect that a few years down the road we'll see the majority of non-trivial-sized Windows applications utilizing Darwin. Darwin simply makes too much sense to choose to not use it.

      --
      - "It's just a matter of opinion!" - PRIMUS
    2. Re:Windows isn't "DLL Hell" anymore. by -=[+SYRiNX+]=- · · Score: 1

      I totally understand and agree with the lack of forethought that originally went into Windows DLL versioning. The assumption that newer versions of a DLL will always provide precisely identical support (including bugs apps rely upon or work around in odd ways) to older versions doesn't hold true in non-COM DLLs.

      Now, thanks to COM's way of handling interfaces and versioning, DLLs that simply implement COM components don't suffer from this problem. It's one of the reasons COM was invented. Every new version of a COM DLL contains the exact same code that was in the old version, plus new code to support the new interfaces. Think you have a bug in the old interface, and you just want to change the implementation and keep the interface the same? Then tough, you need to add a new interface on top of the new implementation and give it a new GUID so that the old stuff stays untouched and 100% compatible.

      Of course, even the COM method isn't a perfect solution, because you can still introduce bugs in the DLL housing code that fuck over the old component. The way Linux deals with versioning--by keeping around the old library files and using symlinks / versioning maps to locate the right one needed for a given app--is a 100% solution. Unforunately, it's a bitch to set up because no central installer routines do it for you. You're expected to set up all that crud yourself, and most users simply aren't that smart. Most people just want to write a Word document, and don't even know what a "library" or "binary" file is.

      --
      - "It's just a matter of opinion!" - PRIMUS
    3. Re:Windows isn't "DLL Hell" anymore. by Dr.+Spork · · Score: 1
      I think you're right about the goals Linux installation should be aiming for, but it won't be simple to acheive. Windows auto-installers have the advantage of needing to target only very few sorts of setups (95, 98, SE, NT, ME, 2K, XP) so this significantly reduces the variables. They assume no one has messed around with the registry or the windows/system directory. Linux is a totally different story because there are so many distributions with such fast release cycles.

      I don't know anything about Darwin. What does it do that RPM can't? RPM gets in trouble when you use it only some of the time and "make install" the rest. It makes no record of that, so it has faulty information about what's on your system.

      Even once Darwin gets some momentum there will be many apps which don't use it, so I don't expect the sort of panacea you envision. But I do think you're right that the Linux community should pick a standard app installation and lib registry scheme (which distributions will be free to implement in their own ways--the ways would just have to be compliant with the standardized scheme). This is absolutely necessary before a significant share of commercial software vendors start testing out Linux waters. If the community gives them standards that their installation scheme must meet in exchange for a guarantee that the program will install and cleanly uninstall on any compliant distribution, vendors can release without fear.

    4. Re:Windows isn't "DLL Hell" anymore. by blirp · · Score: 2
      Before MSI, every application had to use its own installer, and each installer might or might not be so smart about checking for versioning / existance of DLLs before forcibly overwriting newer versions with older versions of the same library or blowing away a more recent registry key.

      But you'll still have the problem of new versions not being backward compatible. MFC42.DLL exists as a 4.2 as well as 6.0 version. MSVCRT.DLL ver 6.0 tigthened up memory management, but that uncovered bugs in existing programs, rendering them unusable. This problem wasn't fixed until SP3 of Visual Studio.
      Note that all of these problems are related to new versions of a DLL without changing it's name.
      Being backward compatible also means keeping the old bugs. At which point it just becomes riduculous.

      M.

  142. Re:static goddamnit! by barneyfoo · · Score: 2

    Dont be such an imp :)

    If cdparanoia is bitching about the wrong libc.so.6.... WELL FSCKING COMPILE IT YOURSELF!!!

    That's the beauty of Free Software. And by the way, cdparanoia is PAINLESS to compile and install... What, scared of a little /usr/local/ beef? heh Wuss.

  143. Well said by kimihia · · Score: 1

    That's a succinct way of wording it. :-)

    /me is just downloading Mozilla/0.9.9.9.9.1. They haven't yet pushed the version number over to /1.0 yet because there are a few bits to go.

  144. Re:uh oh by Thomas+Miconi · · Score: 2

    It's not a Hell, but at least with the Glibc libraries it's quite an annoyance.

    I can't get Mozilla 0.9.1 because it wants Glibc2.2 - which I can't install without putting at risk my system. Same thing apply for the latest version of emacs.

    The Glibc Heck has proven to be quite a pain in the hard drive. If anyone has a solution that doesn't involve rebuilding the whole packages (I already thought about that, thx), I'd be glad to hear.

    Thomas Miconi

  145. Re:What about GUIDs? by mrogers · · Score: 2

    You would compute the checksum when loading the library, and check it against the filename given in the executable.
    Identical checksums are very unlikely if you use long enough checksums (64 bits would allow 16 billion billion unique DLLs).
    --

  146. Load libraries by checksum, not version number by mrogers · · Score: 3
    The whole point of shared libraries is to save memory (and disk space, but that's not nearly as important). If each application loads its own version of a library, you defeat the purpose of using libraries - effectively you'd be statically linking everything. (To get an idea of how much bloat that would introduce, add up the resident set size (RSS) of all of your apps in top).

    A better alternative is to load libraries by checksum instead of version number - the library's filename would be its checksum, which would be verified by the loader. If two apps were compiled against exactly the same version of a library they would share the same copy in memory, but if one was compiled against 0.8.1 and the other against (supposedly compatible) 0.8.2 they would each load their own version into memory. This approach would waste memory in some cases, but you would never see your apps behaving unexpectedly because of changes to the underlying libraries. I think the memory tradeoff would be worthwhile for the increased stability and, of course, the smug sense of superiority. ("DLL hell? Oh please. Don't tell me you're still loading shared libraries by filename on your OS!?")
    --

    1. Re:Load libraries by checksum, not version number by wadetemp · · Score: 1

      Too late, MS beat you to that idea. :) (A first?) That's part of how .NET works... two versions of the same assembly (a replacement for "normal" DLLs) are allowed to be contained within the global assembly cache, with the same filename, but different version #s and possibly different contents. Checksums are used to verify that the assemblies are what they say they are.

    2. Re:Load libraries by checksum, not version number by j7953 · · Score: 2

      Using this method you'd solve most of the problems that come with shared libraries, but you'd also lose most of the advantages. If a user installs a bugfixed version of a library (that is otherwise completely compatible with the previous version) no application will ever get to use it.

      To find out what version a library is, versions numbers are the best solution.

      Of course, it's the library developer's responsibility to make sure that different versions changed only in the minor version number are actually compatible, as the numbering suggests.

      --
      Sig (appended to the end of comments I post, 54 chars)
  147. Yea but what? by knife_in_winter · · Score: 3

    Never happen.

    I just installed a Debian GNU/Linux system with 3 floppies (not CDs, not DVDs, but 3 1.44 FLOPPIES) and a network connection.

    Once the system is up, I have access to, what is it now, over 6000 packages?

    I hate to say this, but the network really *is* the computer, if you take advantage of it.

    --

    Tyler's words coming out of my mouth.
    1. Re:Yea but what? by DrSkwid · · Score: 2

      surely you mean "the network is thr storage device"
      .oO0Oo.

      --
      There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
    2. Re:Yea but what? by blitzrage · · Score: 1

      Your part of the country must not have dial-up users? I understand where you are coming from, but we are not at a point yet where every person who has internet access can install from the internet as their connections are much too slow. (Including mine! It took me an hour to do an update yesterday)

      --

      I have no signature
  148. What about GUIDs? by PenguiN42 · · Score: 1

    What about loading with GUIDs, like COM, instead? Then you can still patch and bugfix libraries like j7953 said.

    Besides, if the checksum is the filename, and hard-coded into the app ... then no one is actually *computing* the checksum. So it's no different than an arbitrary number. .... and What if two different DLLs have identical checksums??

    -------------
    The following sentence is true.

    --
    The following sentence is true. The preceding sentence was false.
  149. Geek vs. End user by Ukab+the+Great · · Score: 2

    Not that there's anything wrong with either group of people, but both have radically different needs and radically different definitions of what failure truly is. For a geek, failure is something not running optimally, or some cool feature getting disabled, or something that comprimises security. For an end user, the definition of failure is not bloat. Nor is it crashing. The greatest failure for a desktop, end-user is something not working. The cost of something not working far exceeds any other cost, whether that cost be the cost of more RAM, disk space, performance, or really anything else. End users want their programs to "simply just work". And they have the constant, gnawing fear that virtually anything they do will screw up their computer so badly that it won't be able to do the valuable work they need it to do. For the end user, a dynamically linked AbiWord or Gnumeric going tits up two hours before they have to hand a report to the boss is far, far worse than statically linked AbiWord or Gnumeric using lots of RAM in an unefficient manner.

    Comparing dynamic linking to static linking is like comparing a Ferrari to an M1 tank. They both have their advantages, but guess which one you want on the battlefield of the desktop?

  150. You wanna talk hell... by Greyfox · · Score: 2
    Try upgrading Xfree86 to the latest thing on the Xfree86 web site on a package managed system. Can't remove X because everything depends on it. If you overwrite it, the next package update you do will likely clobber your chages. And tweaking everything to work right will be a major pain in the ass.

    Speaking of package manager hell, there's been a lot of griping on various mailing lists lately about RPM database corruption. Apparently something breaks if you switch from db1 to db3, and it's VERY easy for your RPM database to be corrupted. Try doing any upgrades on an RPM based system when the database is corrupted.

    The DLL hell thing's been around for a long time, too. Anyone who's ever made the mistake of trying to mix and match package managed software (Try compiling some gnome app that doesn't have RPMs sometime and you'll see what I mean.) You have to go all or none with package managed systems. Or try burning the Ximian branded gnome off your hard drive sometime. That's good for a few hours worth of fun.

    So yeah, the whole set-up could probably be a lot more robust. Ideally it could be done without bundling all the requsite libraries in with the package as I understand they used to do with the NeXT.

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    1. Re:You wanna talk hell... by Greyfox · · Score: 2

      And have 2 versions of X on your system? Ick... Though I supposed that'd work if you don't mind having 40 or 50 megabytes tied up with the useless version...

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    2. Re:You wanna talk hell... by crispybrown · · Score: 1
      If you overwrite it, the next package update you do will likely clobber your chages.

      Why not stick it somewhere else then, like err, /usr/local

      --
      @ .
    3. Re:You wanna talk hell... by crispybrown · · Score: 1

      50MB isn't much nowadays, and it would only be necessary until the relevent packages are updated.. then you can delete the copy in /usr/local

      --
      @ .
  151. why use gnucash... by tellurian · · Score: 1

    when you can use Yahoo!Finance and it's expense manager. granted, i'm not sure i like the fact of a "company" having access to my expenses. but it is the most convenient thing in the world. =)

  152. Upgrade to Debian by Rogain · · Score: 1

    and enter apt-get/dpkg heaven!

    --
    The current Slashdot moderation system is made by gay communists!
    1. Re:Upgrade to Debian by MrDBCooper · · Score: 1

      True, true.

      --

      --

      --
      Free Software enthusiast; Debian GNU/Linux (powerpc) developer
  153. Re:static goddamnit! by blakestah · · Score: 3

    RAM usage.

    If you use shared libraries, each gets loaded into memory ONCE. This is particularly good for something like the GNOME or KDE desktop. Do you really want 13 copies of the KDE libraries loaded into RAM because you used staticly linked binaries ??

    Anyway, I wouldn't sweat it. This will not become Windows. Open source apps do not install new versions of existing libraries, and libraries increment version numbers when they break compatibility.

    I haven't even thought about this in a long time since apt began taking care of it for me.

  154. Still no hell by Arker · · Score: 2

    libsomething.so is a symlink to libsomething.so.2, which in turn points to libsomething.so.2.17. The problem is when an app was coded and debuged on a system with version 2.17, but the end user only has 2.15. In theory, there shouldn't be any incompatible changes between 2.15 and 2.17, so the user just needs to load up to 2.17 and point .so.2 to .so.2.17. But in practice, in many situations this will cause existing binaries that point to .2 (which now points to 2.17) to break. So, the only solution is to load .so.2.17 into a new directory, and set LD_LIBRARY_PATH or LD_PRELOAD accordingly before starting up that app.

    A rather nebulous assertion, since you don't give any specific examples. When the api changes the library should go to a new version number.

    I'm not saying it's never happened, it's quite conceivable. There are two reasons why this could happen - either the library coders changed an api and didn't rev the version number appropriately (unlikely for any of the major libraries which tend to be maintained in a very professional manner) or an application coder circumvented the normal api (MUCH more likely.) Sometimes inexperienced coders will do this and think they are really clever for it, but it's actually very stupid. Either way, the problem is not in the system design, it's in someone doing something very stupid in their code. In either case it would be instantly clear who screwed up, and thus who should be on the receiving end of a stiff LART. This is probably why it's so rare.

    This isn't an issue with GNU cash, and even if it was, it STILL wouldn't be anything like .dll hell, which is a design problem, not a problem with individual coders doing something stupid occasionally.


    "That old saw about the early bird just goes to show that the worm should have stayed in bed."
    --
    =-=-=-=-=-=-=-=-=-=-=-=-=-=-
    Friends don't let friends enable ecmascript.
    1. Re:Still no hell by tchuladdiass · · Score: 1

      I agree that it is usually a problem with the application, not the library, that causes this issue. Sorry that I don't have specific examples, but I remember having all kinds of problems when I ran a slightly out of date distribution, and when glibc 2 came on the scene. There were bugs in one minor version of glibc2, and the next minor released fixed those bugs but ended up breaking existing code. I remember at the time having virtually no success trying out various new programs without them seg-faulting, unless I updated various libraries, which in turn would cause other programs that did work to stop working and start segfaulting. I eventually solved most of my problems by deciding to keep the latest version of several distributions installed, then I eventually switched over to FreeBSD and would wait for someone to relase a PORT skeleton for that program. This worked because if a port was written for FreeBSD 3.2, for example, it would generally work for everyone's FreeBSD 3.2. (Not saying that FreeBSD's port system isn't perfect, it doesn't address updating ports easily). When I get time, I'm gonna switch over to Debian (I had Corel Linux before), it appears that apt-get address most of these issues.

  155. The solution is old news by Arker · · Score: 5

    Unix solved the problems that constitute true ".dll hell" ages ago, and linux uses the solution. It's not the systems fault that some writer doesn't understand what he's talking about.

    If you want to use the new gnucash, you need the libraries it relies on (or a statically compiled version, which may be a workable alternative for a short time but is really an inferior solution in the long run.) This does not constitute .dll hell at all. Dll hell is when two applications on a windows machine require different versions of a shared library. Only one will work, and that is a problem. But on a *nix machine, there is a little something called library versioning that eliminates that problem entirely. Installing the newer libraries gnucash needs will not cause other applications to quit functioning. No .dll hell. Just another misleading slashdot headline.


    "That old saw about the early bird just goes to show that the worm should have stayed in bed."
    --
    =-=-=-=-=-=-=-=-=-=-=-=-=-=-
    Friends don't let friends enable ecmascript.
    1. Re:The solution is old news by tchuladdiass · · Score: 1
      &gt..., there is a little something called library versioning...

      This still has one major drawback:
      libsomething.so is a symlink to libsomething.so.2, which in turn points to libsomething.so.2.17. The problem is when an app was coded and debuged on a system with version 2.17, but the end user only has 2.15. In theory, there shouldn't be any incompatible changes between 2.15 and 2.17, so the user just needs to load up to 2.17 and point .so.2 to .so.2.17. But in practice, in many situations this will cause existing binaries that point to .2 (which now points to 2.17) to break. So, the only solution is to load .so.2.17 into a new directory, and set LD_LIBRARY_PATH or LD_PRELOAD accordingly before starting up that app.

  156. Re:Either .so Hell or re-invent-the-wheel Hell by Ziviyr · · Score: 1
    Problem is you're moving all that redundancy to the libraries. Which surely copy many things amongst themsleves.


    I miss the Amiga's centralized library directory... But I've stopped cracking RC5 keys for their team. :-)


    --

    Someone set us up the bomb, so shine we are!
  157. Its good to use lots of libraries by bug1 · · Score: 2
    The whole point of a library is that its shared code, its good that a project shares lots of code with other projects.

    Image the bloat hell we would be in if everyone linked their projects statically to libraries.

    1. Re:Its good to use lots of libraries by WildBeast · · Score: 1

      okay but they should at least have the decency to include the libraries instead of making us search and download them the whole day.

    2. Re:Its good to use lots of libraries by grape+jelly · · Score: 1

      Bloat hell is bad, granted. But it's not as bad as it used to be. Not that I'm advocating the disuse of shared code, but with 60GB 7400RPM hdds at $150 or so, we can afford to have a little bloat.

      (then again, maybe that's what M$ said....;-) )

  158. Re:Could we please make up our minds. by Jart · · Score: 1

    Not that I know diddly squat about Linux (I dabble, but I do ass-sucking VB in uncle-humping Windows to pay the bills) but how about a master virtual directory thing. Some kind of central master file locator. A layer of abstraction with some intelligence for browsing or whatever. Obvious? Been done?

  159. Re:Installing Free Software by slyfox · · Score: 1
    ...and gnucash will automatically be installed and run. Oh, you have to be 'root' to do it, I'm sorry. Linux has this nice thing called 'permissions', so that you can't break anything unless you've logged in as root.

    Why must everything in Linux be installed as root? Why can't RPMs and other packages be installed in my home directory and 'just work'? When you're root you can really screw things up for other users. I use Linux in a university environment where there is professional support staff. Thus, end users are strong discouraged from installing things as root. Trying to install new Linux software in my local user directory is almost impossible with some packages.

    NEXTSTEP (now Apple's OS X) does a much better job with this. They have the concept of an application bundle (which is just a folder) that you can install in a system wide area (/LocalApps/) or in your user space (~/Apps/) and the application works the same either way.

  160. Debs by vivarin · · Score: 1

    Seems to me that apt-get install works quite well, even when the dependencies are hairy. Assuming of course that the packager knows what's really necessary...

  161. Re:Libraries: Harken to the Bad Old Days by John+Miles · · Score: 2

    Do I need 20 copies of the same damned .NET DLL on my disk, one for each application? I think not. I do not consider this an intelligent move at all.

    When's the last time you saw a "disk full" error?

    Personally, I'm in danger of forgetting what that means. When I retire a machine these days, there's always at least a few hundred MB, more likely a gig or two, of disk space left.

    Along with the inevitable rise of COM, keeping DLLs out of c:\windows\system has gone a long way toward remedying Windows' version of DLL hell. "Intelligent" or not, there are some very good, real-world-type reasons why each app should maintain its own DLLs locally. Everything just works better that way.

    --
    Dahlmann tightly grips the knife, which he may have no idea how to use, and steps out into the plain.
  162. Re:Is it really necessary.. by -brazil- · · Score: 1

    That's not DLL hell because you don't risk an application overwriting the new version with an old version, breaking other applications in the process. And when they are not being actively used (i.e. most of the time), the libraries only take up disk space, which is dirt cheap. They don't slow down the whole system, like they seem to do in Windows.

    --

    The illegal we do immediately. The unconstitutional takes a little longer.
    --Henry Kissinger

  163. Re:Is it really necessary.. by -brazil- · · Score: 1

    It stops when hardware capacity and speed doesn't anymore increase exponentially. As long as it does, it's simply cheaper to make bloated software, because coding efficiently takes more time, and time is money.

    --

    The illegal we do immediately. The unconstitutional takes a little longer.
    --Henry Kissinger

  164. Re:static goddamnit! by -brazil- · · Score: 1

    Trust me, if you didn't use any shared libraries at all, you'd very quickly bump against the limits of the 4 Gig of memory that a 32bit machine can physically address. Besides, why buy more meory if there's a simple way of making do with less?

    --

    The illegal we do immediately. The unconstitutional takes a little longer.
    --Henry Kissinger

  165. less is more? by __soup_dragon__ · · Score: 1

    uh, i appologise if someone has mentioned this before but i havent had enough time to read all the posts. what has been buggin me for the last few days is the complexity of package management. i mean, in my very innocent pov as an apprentice, when we look at the tasks we have to perform there are like 2 main ones:

    1) make sure all the dependencies are met

    2) make sure we keep track of all the files we've installed.

    what i fail to understand is why can we not solve 2) in the same simple way we've done the init scripts... why can we not have:

    -/usr/lib/gnome/lib_name/ as the location of a gnome shared libs; the different versions of the lib go on the same folder

    - every gnome binary under /usr/bin/gnome as a symlink, same for docs etc.

    - all programs are installed in something like /usr/package/gnome/app_name/ (this is where all the stuff really is); this folder contains symlinks to all the libs the app needs

    so that when we install a new app, we have some dependency checking, but when we want to uninstall, its just a case of running a script that 1) deletes the symlinks 2) gets the number of symlinks referring to a lib, and if a lib has no symlinks, deletes the lib as well. this way, we could have our src tgz's with dependency checks and we can easily uninstall them as well... what am i missing here?


    soup, the dragon.

    --
    soup, the dragon.
    dna.h:include "std_disclaimer.h" /* god */
  166. Re:Could we please make up our minds. by Rakarra · · Score: 1
    If you have one all-powerful directory that you tell end-users to keep their mits off of, you make the system more user friendly. They know they can't break anything if they don't mess with that directory.

    If users don't understand what they're doing, then why do they have root access? If they don't have root access, then they can't screw with system files.

  167. Re:SLUDGE (OT) by Rakarra · · Score: 1
    Are you sure you don't mean "Slash?"

  168. GNU/Debian is the answer! by JayKey · · Score: 1

    ... with a little better installation interface... but check out Progeny Linux, they're working on that.. RPM sucks :-)

  169. Gnuchess & Xboard both have Mandrake 7.1 -8.0 rpms by Sits · · Score: 1
    I believe both have rpms for Mandrake 7.1 - 8.0 on one of the cds...

    I can't tell if they were in 7.0 (I'd guess so).

  170. Re:static goddamnit! by rcw-home · · Score: 3
    Libc6 uses symbol versioning. An application originally linked to glibc version 2.0 symbols continues to operate using the glibc 2.0 ABI even after glibc 2.2 is installed. However, an application linked to glibc version 2.2 won't work until glibc 2.2 is installed.

    Check out http://www.gnu.org/software/libc/FAQ.html#s-1.17, and try objdump -T sometime.

  171. Why use shared libraries? by Animats · · Score: 2
    The idea of shared libraries was supposed to be that multiple applications would share the same library. On a single-user desktop machine, the odds are against this except for the most common libraries.

    Worse, when you bring in a shared library, you bring in the whole thing, not just what you need. With static linking, only the referenced stuff (ignoring the C++ vtable problem) comes in. Yes, some of it may get paged out later, but you pay for the I/O during program startup.

    Now if you're using shared libraries which have shared state, that's something else. And it's something else that ought to be done via an object broker, like CORBA, not by abusing the shared library or DLL concept.

    Sometimes running separate executables in subprocesses would be more appropriate. Things like file import filters ought to be run in separate processes, for example. That, after all, is the "UNIX way".

    1. Re:Why use shared libraries? by Animats · · Score: 2
      I'm pretty sure that Linux merely memorymaps the libraries when they get linked in. Only the parts that are actually accessed are loaded into memory where they are cached for later use. It's very fast.

      Discovering what's needed by page-faulting is even worse, because it costs you one disk access per page. The OS either has to bring in too much and waste memory, or too little and wait for the disk. With current memory prices, "too much" is usually a win, but it's inefficient.

      Windows suffers from this, and it's one of the reasons some Windows apps start up so slowly.

  172. Re:video drivers or gfx drivers? by Uberminky · · Score: 1

    Video = graphics. Otherwise he'd have said "video capture" or something.

    --

    The streets shall flow with the blood of the Guberminky.

  173. Undocumented behaviors lead to DLL hell by yerricde · · Score: 2

    Put another way, if you have an error in a shared DLL, fixing that DLL will cause all other executables using that DLL to suddenly work properly

    Except for programs that use undocumented behavior in a DLL. Changing undocumented behavior is a large part of why programs that work on one version of an OS crash on the next.

    (provided, of course, that you didn't change any APIs).

    Which, incidentally, is Microsoft's specialty. Programs compiled with Visual C++ make calls to undocumented parts of Windows that change from release to release, forcing proprietary windows software developers to license and install the new version of the compiler and recompile everything.

    --
    Will I retire or break 10K?
    1. Re:Undocumented behaviors lead to DLL hell by fleeb_fantastique · · Score: 1

      I apologize for the length of time it's taken me to notice this response.. I'm not exactly good about followups <grin>.

      For the sake of clarity, I want to point out that my original comment focuses on my own generation of DLLs. As such, practically by definition, they are documented.. if by nothing else than the fact that I have the source.

      I will, however, agree that Microsoft has occasionally managed to provide some unpleasant surprises. For example:

      I have a programming constraint that requires my executable to able to work for all Windows systems (greater than 16-bit) off a network share. I may put whatever DLLs I like (within reason) in that network share. If I use STL in VC++ 6.0, the program will no longer work on Win9x systems. Why? Because the version of MSVCRT.dll on your average Win9x system lacks a function call used by VC++ 6.0.

      You will note, however, that this doesn't have anything to do with 'undocumented calls to the OS'.

      I'm not entirely sure I agree that I am forced to work with the latest Microsoft compiler for each change in OS... unless you mean "in order to take advantage of new APIs within the newer OSes". For all their faults, Microsoft has done a relatively decent job of pointing out which APIs are available for which OS they sell. But you don't have to take my word for that.. you may take a look at MSDN yourself.

      So far, it has been my experience that when a DLL changes behavior in a way that causes the executable to crash, the executable is calling the Microsoft API in some undocumented (and perhaps improper) way in the first place. Mind you, Microsoft's documentation has left much to be desired in the past, although they seem to be improving (although they still have issues). Just try and grasp how their lower-level networking API works, for an example of difficult-to-understand (and in some cases downright wrong) documentation.

      Also, if you want to try to catch some of those 'undocumented' calls for yourself, you may try viewing your DLL through the dependency walker to see exactly how it's linking. This won't catch COM library calls, but you'll at least get something of an idea of how your program is linking to the various Microsoft DLLs.

      When generating your own shared libraries, be it on Linux or Windows, your point is well taken: document your shared library carefully, and avoid using 'undocumented' tricks in your use of shared libraries.

      Also, please note.. I hate Microsoft. Despite how pro-Microsoft my comments may seem, I truly dislike the company in general. I sorta believe that, to truly hate Microsoft, you must do at least some programming for their OSes. Then, you may do so with conviction, understanding, and clarity.

      --
      And so it goes.
  174. Guidelines by spac · · Score: 1

    Well you've brought up a good point about a lot of development that's going on under linux right now. IMHO the best way to ensure that we don't damn ourselves to dll hell is by setting up a set of requirements that all library authors have to follow.

    First of all, the interface to all functions and classes in a shared library MUST be backwards compatible with previous versions.

    Secondly, some sort of package manager, that could connect to an online repository containing every major shared library (something like CPAN) in order to ensure that libraries can be acquired, upgraded, and repaired easily without reinstalling a product.

    A third solution to the DLL problem would be for an application to store all the libraries it uses within its own tree. Although this is redundant since several programs may use the same shared library, it ensures that an application's libraries will never be affected by the installation or removal of other applications on the same system.

    Basically, to all you developpers, if you're going to use shared libraries in your products, be responsible with them and never assume your app is the only one on the system. -Mike

  175. the bleeding edge, RedHat and Debian by borud · · Score: 2
    the reason I like Debian is because unlike RedHat you can expect things to work once something is called "stable". my experience with RedHat over the years is that they are not very good at QA before releasing something. they are more bent on releasing *new* features (sound familiar) than actually solving old problems.

    the RedHat 7.0 release illustrates this well. I have not seen such a shoddy OS release since Sun Solaris 2.2 (or was it 2.1? doesn't actually matter, because Solaris wasn't much to cheer about until several major releases later) or the first IRIX 5.x releases that shipped with the first INDYs.

    RedHat 7 was the reason I changed to Debian, and having used Debian since then I have not wanted to go back to RedHat and their hellish world of RPMs, stupid incompabilities, package management that is able to self-destruct if you are not aware of the "right" way to upgrade things and the constant hassle of Alpha-quality software that requires Alpha-quality libraries and *staying* on the bleeding edge if you want to upgrade them.

    I used RedHat for many years, so the psychological threshold for moving to Debian was rather high. the Debian crowd comes across as less pragmatic and more idealistic, but in reality I'd say the Debian crowd are more competent AND more pragmatic in the sense that they strive to deliver something that will work -- while RedHat will ship any assortment of crap that, although not breaking right away, certainly will result in a messy system once you start to upgrade things.

    I am immensely grateful for the decent job the Debian people have put into their distribution. they seem to do things properly or not at all. thanks guys, you make my days so much easier because I haven't needed to clean up any of the boxes where I have run Debian for several months now. that something just works and keeps on working without me having to unfuckify things every N weeks is sort of a novelty for me with Linux distributions.

    as for RedHat, I have talked to a few people there and the only thing I can say is that nobody is interested in your excuses or promises to fix things. what is required is a change of attitude. you need to become more aware of quality, you desperately need more personel that have used other UNIXen. whenever you invent new things you are prone to do the job badly or at best half-way. people want release quality work from an OS distribution.

    as for developers, I think that the question is one of tradeoffs. it is good practice to re-use components rather than designing and writing your own. but, when the components on which you depend have not yet reached a stable release state or they are otherwise low quality or prone to conflicts or installation problems, you should avoid them. the reason so much of the software for Linux is in practive unusable is because the developers don't give two shits about the users. they are used to installing bleeding edge libraries every two days and they expect their users to do the same for the privilege of using their code.

    I have made it a general rule never to rely on anything that isn't considered stable enough for inclusion in reasonable OS distributions. usually, FreeBSD STABLE and the stable releases of Debian. RedHat and derived distributions seem to lack the maturity for me to trust them implicitly. sure, things might work well for a while, but in my experience a RedHat installation detoriates over time to the point where suddenly the system is so broken you need to re-install (sound familiar?). and yes, I have used RedHat for about as long as they have been around, so this is not your ordinary Debian-zealotry.

    since I require things to install easily on a virgin system and without having to muck about with bleeding edge libraries a lot of "cool" things are never installed on my machines. for instance some "cool" file managers and browser never make it to my machines because the developers are unable to produce something that can be installed pleasantly.

    To sum it up: the reason a lot of shared libraries under Linux are such a hell is because there are too many morons who develop software out there in a fashion where you have to upgrade and/or install all sorts of crappy, unfinished buggy libraries on a weekly basis.

    this can be avoided if you want to. by being conservative and by not using things before they reach an acceptable level of stability.

    I recommend people use stable releases of Debian and install all their software with apt. if you absolutely need something not avilable, make sure you install it in /usr/local along with all the other stuff it depends on but which doesn't come with the OS.

    but the best thing is to be disciplined and just use a clean Debian system. I have YET to have any problems with Debian (about 10 machines which have seen much use for 6 months. with RedHat the machines should be ripe for re-install about now)

  176. Re:Is there a real solution to this? by stilwebm · · Score: 2

    This article make several fallacies. First, it assumes that because Windows application sizes have not decreased since they became more dependent on dynamic libraries, dynamic libraries must not decrease the size of the binary. The fact is, if those already large binaries were staticly linked, they would increase greatly in size.

    The second is the "there is plenty of drive space and memory to go around" argument. The author complains that Word has large binaries with neadless junk in them. If he had many large binaries, each with their own version of the same functions staticly linked, those large applications would take even more space. Sure space is cheap, memory is cheap. But not everyone wants to have to buy a large hard disk and 256MB of RAM just to run some personal finance and office applications.

    What it really comes down to is a tradeoff. Windows DLL's are broken because of installer bugs, backwards compatibility bugs and uninstaller bugs. But if things are done properly, and you use several applications at once (I'm sure many of the libraries for GNUCash are not used by anything else on most systems) you have reduced memory usage, storage space and the ability to optimize functionality of several applications without (assuming good coding) breaking the applications or needing to upgrade the applications themselves. Best of all, if it is a common library, dial-up users can spend much less time downloading the binaries if they don't want to compile their own. With open source, you are more likely to avoid "embrace and extend" mentallity, so good code and optimizations without breaking everything are common. With rpm or apt you can easily manage packages of libraries, usually much better than a half-assed InstallShield uninstall script in Windows.

  177. The linking process by Pflipp · · Score: 2

    Often when I write a program (or library!) that is linked with other libs, these other libs don't specify well what they depend on.

    So for instance if I write an application that uses some minor GNOME conversion function which happens to be in libgnomeui, I'll often find myself ending up specifically linking my program with gtk, gdk, esound, etc. just to resolve some of the symbols found in libgnomeui.

    Then again, I might not understand the linking process completely here. (I once wrote a ten-liner program and gave the wrong ld command, which resulted - after quite a while - in an executable of over 30 Mb; it probably included all libs completely... ;-)

    Could someone tell me how one commonly links with shared libraries using ld? (I know there are better, platform independent tools such as libtool, but I just don't seem to understand how to link "manually" using ld.)

    Concerning the "dll crisis": well, linking takes time, so that's a problem. But shared libs allow for the reuse of modules, so please don't consider it "bad by nature" if a program depends on other libs.

    Very often programmers pride themselves of having written stuff "from scratch". That's not really something to be proud of, you know. Remember, good programmers are lazy! So what if your app depends on the GTK+ libraries, most people have these anyway, they instantly make your apps portable to any platform GTK+ is ported to -- no problemo! Or, you could write yet another redundant 'libmytoolkit', forcing more redundant and badly desktop-integrated bloat on people's computers when they want to run your program.

    Still leaves the question open, though, how it can be that there's so much to link to in this example.

    It's... It's...

    --
    "We can confirm that Debian does *not* ship the version with the trojan horse. Our version predates it." [CA-2002-28]
  178. Re:static goddamnit! by Pflipp · · Score: 2

    Besides the obvious, yet important arguments of RAM and disk usage, there's yet another thing.

    Admitted, it's a silly thing.

    Have you ever seen those older Windows or MacOS apps running on your bright new machine and making your machine look like it's at least ten years aged? That's because they statically link with GUI libraries. These libs beautify in time, but your app stays ugly. Your app stays, well, static, while the system dynamically changes in time.

    OK, so that's beauty. I guess that's a minor thing.

    How 'bout bugfixes? With shared libs, you get the bugfixes when you get a new libversion.

    Some things should just be kept out of an executable IMHO. If you make a little GNOME text editor, and statically link it, the executable itself is suddenly loading themes, drawing lines, etc. Rather, I see shared libs as separate programs that do these things for you.

    It's... It's...

    --
    "We can confirm that Debian does *not* ship the version with the trojan horse. Our version predates it." [CA-2002-28]
  179. Is it really necessary.. by revengance · · Score: 1

    .. to use so many libraries?

    1. Re:Is it really necessary.. by Vann_v2 · · Score: 1

      "Linux" isn't anything but a kernel. You can size a specific distribution however the hell you want, so I see no reason to complain. I built my own distro, and my /usr/share takes up 77M. Actually, my largest directory is /usr/src which takes up about 2GB right now. Of course, I there is the fact that I keep every source file to every program I've compiled, from the kernel, to glibc, to XFree86, to Blackbox. My point is, there are ways less "drastic" than making your own distro to slim down linux, and by complaining and not using them you're making very little sense at all.

    2. Re:Is it really necessary.. by dasunt · · Score: 1

      A box is only a dinosaur if (a) you let it be, (b) you are worshipping gates and thus need the latest and greatest hardware to run the latest and greatest software from Redmond (with some of the old bugs fixed and new bugs just waiting to be found), or (c) are a gamer and like pretty pictures.

      I have an old K6-2 300 with 32 megs of ram and 16 gigs of hdd space that I find quite useful for webpage design, gaming (I don't need the latest games), playing mp3s, and browsing the net. So don't give me that crap that your box is useless.

    3. Re:Is it really necessary.. by baptiste · · Score: 2

      Man you hit it RIGHT on. I could care less about dependencies in Linux since the package managers are getting very advanced. However, the thing that drives me nuts about Windows is when new DLLs are munged just enough to break older apps. IN Linux, the developers SEEM to care much more about backward compatability - I cannot recall having older apps break which upgrading a package - I'm sure its happened to others, but from where I stand, I'll take GNUCash 1.6 with 60 libs anyday over MS Money on Windoze which is so network bloated you can't even use it with a remote money file over a wireless link! Unreal!

    4. Re:Is it really necessary.. by ope557 · · Score: 1

      Thank god we are finally starting to talk about bloat. Linux has changed from being nice and compact to being amazingly bloated in a surprisingly short time. Right now /usr/share alone is taking up a whopping 350MB on this box. WTF is in there?

    5. Re:Is it really necessary.. by whereiswaldo · · Score: 1

      You're probably right, in a sense, but would you rather Linux stayed as a minority operating system with no "Windows lusers" trying to learn it? I'm trying very quickly to learn all I can about Linux and develop applications on it. Would you rather I just didn't bother and stuck to Windows? Have you known everything about Linux since birth? Or were you a newbie once, too? Waaaaahhh.. :)

  180. My solution works by evilviper · · Score: 2
    Despite all the comments about the story being wrongly titled, or inflamatory (read flamebait) it is a great topic that has not been discussed as it should.

    You know, things are much simpler than they seem to be. There are so many dependencies because programmers are lazy/unexperienced. It is not difficult to:

    A) Use the oldest possible versions of (only basic) libraries. In turn actually writing your own program, instead of trying to use much of other people's code. This also results in much more portable and effecient programs.

    OR

    B) Include the actual code from a specific library into your distribution. This should be trivial considering the OpenSource nature of the Linux world.

    ---=-=-=-=-=-=---

    --
    Slashdot gets worse every day... Pipedot: News for nerds, without the corporate slant
  181. This is why 'Stable' distributions exist by big.ears · · Score: 5
    From what I understand, one of the primary reasons for having two or three levels of distribution is to avoid this dependency hell. In debian, e.g., everything in Stable (should) play nice together, but the newer stuff is more likely to break other stuff. This means that a lot of the stable stuff is a year or more old, and because of Linux's nascent status, this means that if you want to get something that is usable, you have to deal with conflicts.

    I think this is one of the primary hurdles facing Linux's wider adoption. Nobody wants to mess with upgrading/downgrading libraries, and you rarely have to do that stuff in Windows. For example, I have never been able to get the newest versions of galeon, mozilla, and nautilus installed and working at the same time. And, perhaps unrelated, gnumeric and netscape 4.7 no longer work. Of course, its not impossible to fix, and I'm not trying to sound like I'm whining, but I don't know to many of my friends who are Windows power users & programmers who would put up this stuff.

    Hopefully things will improve when libraries become more stable, and apps move into versions 1, 2, 3, and higher. Then, release cycles should get longer and less drastic, and everything should be easier to use together.

    1. Re:This is why 'Stable' distributions exist by abdulwahid · · Score: 3

      I think you have hit the nail on the head here. If people want to live on the bleeding edge and always have the latest release installed then they will encounter these problems. However, for the average user, if they don't really know what they are doing, they are best sticking to the stable distributions. Anyway, things like Ximian are good at keeping the average user upto date. It has definitely aided new Linux users in my office to upgrade their work stations with packages.

      We should remember, code reuse is something that makes the Bizaar model or programming so strong. The fact that we take code from here and there and save ourselves the time of reinventing the wheel. I don't think there is any problem in relying on many libraries. In fact, I think it is better than developing something that is just complete bloatware.

      Also, developers always have to look ahead at future releases of libraries. Some developers may choose to, lets say, use a development release of glib because the functionality is just what they are looking for. They're thinking that by the time they finish developing and their work becomes stable the glib they are using will also be stable. Sometimes it doesn't quite work like that. However, don't complain if you want to run the latest version but the requirements are to difficult to meet. The only time you might want to complain, in a polite way that is, is if there is a vital security bug fixed that you can't upgrade to without breaking everything else on your system. In such a case, developers should really release a patch for the previous version.

      --
      perl -e 'print $i=pack(c5, (41*2), sqrt(7056), (unpack(c,H)-2), oct(115), 10);'
    2. Re:This is why 'Stable' distributions exist by RustyTaco · · Score: 1
      You must be using a different Debian Linux than I am. I can't even get task-ximian-gnome to install properly... And when I finally did get it going by hacking through the various depencies when I tried to start it it just crashed. Well, just another reason to stick to Red Hat I guess.
      Um, CLUE!, task-ximian-gnome is NOT a Debian package. It's one of many poorly formed .debs Ximian has been mucking around with. Don't do it! Ximian packackages will fsckup a RedHat or Mandrake dependancy tree just as bad.

      - RustyTaco
  182. Re:Stop Whining by FnH · · Score: 1

    It has it's own DLL HELL which has nothign to do with Microsoft. There are just many people who are too stupid to understand something similar isn't always the same.

    Then call it something else.

    This way people are reacting like:"Oh look, Linux made the same mistake MS made x years ago, and which they already fixed by the way. Linux is so stupid, and Windows is so much more advanced."

    using 60 libraries (which get installed by default anyway) is not so terribly bad in my book. But if you thisnk this is an wrong and an error, then it's a GnuCash-error, not a Linux-error.

  183. Stop Whining by FnH · · Score: 2

    This is the first time I encounter FUD in a Slashdot article, and honestly, I expected that many readers would.ve already pointed out what I'm about to.

    Unix and Linux don't have a DLL Hell like MS had. Unices have a quite simple and elegant solution for this problem.

    Have you ever looked in your /usr/lib/ directory? The you'll see that most (if not all) .so-files are appended with a version number. In contrast with windows this allows you to have two different API's for the same dll. The linker will decide at run-time wich version is the right one, and hop ... you're happily on your way.

    One more time: Linux doesn't have a DLL HELL.

    Now stop whining. Unix has its flaws. This isn't one of them. You're making people nervous for no good reason whatsoever. Thank you.

  184. Re:Libraries: Harken to the Bad Old Days by Goldberg's+Pants · · Score: 1
    The FooBar application relies on library Wingbat. So does app YooHoo. Now, the Wingbat library has a security hole that was just found. Oops! Well, a patch is released, packages are made and sent out. You upgrade(or your computer does it automatically), and poof - all of a sudden, YooHoo, FooBar, and all the other apps that use the Wingbat library are more secure.

    Or YooHoo and FooBar are now royally hosed because the clowns who wrote them had it hard coded in for a specific library so anything outside of that library version won't work unless you enter symlink hell and set up links to the NEW library just so the retarded old program will work properly.

    Just went through this myself with a SNES emulator. Needed a new SDL libary. Once the library it need was installed, several other programs were hosed up due to them not looking for versions >=

    ---

  185. How Microsoft solves the problem ;-) by clary · · Score: 2
    They just release a version of IE every time there is a "DDL problem" in the wild. The IE upgrade fixes bugs all over the system by replacing system DLLs. Cool, huh?

    Hehe, I can just hear the discussion in a conference room in Redmond... "Screw the Netscape users!"

    --

    "Rub her feet." -- L.L.

  186. no cd rippers for nt 4? by jbellis · · Score: 1

    I ran cdEX for over a year w/o problems.

  187. Nothing New by Prof_Dagoski · · Score: 2

    This is really nothing new, nor is it exclusive to Linux. You find the problem on Unix and Solaris systems as well. Some packages come pretty well self-contained with their own libraries meanwhile many open source systems take advantage of open source libraries. One reason is plain old programmer laziness. Why reinvent the wheel when some guy a couple of years ago made a really great wheel and put it on CPAN? One one hand it's a royal pain to keep track of libraries, but on the other programmers are churning out a lot of great applications at a pretty good clip.

  188. Re:Installing Free Software by tal197 · · Score: 1
    I download it tar file.
    I double-click on it to uncompress it.
    This shows a Gnucash folder.
    It's installed!

    You can.

    Archive, System and several other applications install like this. You just need a filer that supports it.

  189. Versioned libraries by Alomex · · Score: 2
    Automated replacing of shared libraries is the road to hell. Windows has proven that.

    Each library must be versioned and each package must call explicitly a version of each library. If the desired version is not available, the installer should deploy it.

    Now that would be worthy of an advanced OS. Anything else is simply an open source implementation of a good but outdated OS (aka Unix).

    1. Re:Versioned libraries by Alomex · · Score: 2
      If I had every version of a libary on my computer then my 4GB /usr directory would very quickly become bigger than my 40GB capacity

      Versioned libraries does not imply having every version in existance. In all likelihood applications would support a range of versions, plus as you update to newer versions of each application, older libaries can safely be removed.

      Well it'll be a lot safer to only use the libary which the programme was developed for but the development cycles are way too short.

      I think this is a peculiarity of the immature state of Linux. As it ages changes will not occur as often, and improvements would be so minor that most people would hold on the upgrade until a full 1.0 change (only fresh installs would use the latest code)

      What linux needs is just better scripts for creating packages and better error handling for when installing packages doesn't go right.

      Those who do not learn from the past are condemned to repeat it. Automated replacement of shared libraries is the road to hell.

  190. My opinion by danpbrowning · · Score: 2

    First, remember that unicies can have as many versions of the same library installed at once, each having the possibility of just being a symlink, or being symlink-ed to.

    I think that if it is too complicated for you to figure out the shared libraries, then you should stick with the standard distro packages.

    I.e., wait for gnucash 1.6 rpm (or deb) comes out for your distro. That way you are leaving the problem in the hands of the distro engineers.

    Another solution is to lookup all missing libraries on rpmfind.net and install them as they are needed (yes, that's not the whole problem, but...).

    IMHO.

    --
    Daniel
  191. Yo. Vulture over here. by connorbd · · Score: 2

    That's the thing -- I do think there's such a thing as hardware bloat. My current PC is a P2/333, and I don't think I'm going to be upgrading it for a while (unless I get that PC-tech job I'm looking at...). I have a PowerMac 6500/250 whose only faults are having one too few PCI slots and lobotomized Open Firmware -- if it wasn't for that, it would do MacOS X just fine. And on top of that I have a PowerBook 5300 -- doesn't even run Cardbus, but apart from that it's as good a portable machine for what I do with it as a TiBook (though admittedly I don't much feel the need to watch DVDs on airplanes...).

    My name is Brian, and I'm a technovulture.

    The upside of being a technical neophile is that computer equipment rarely costs as much as high-end audio equipment (f'rinstance; granted there must be a couple of people out there with an IBM S/390 or zSeries in their basements). But that still means that unless you're running games or supercomputing clusters where you can see the difference, you don't need the latest and greatest -- the bottleneck is never the processor anymore anyway.

    I mentioned hardware bloat -- that's the ugly dark side of Moore's Law, a special case of Parkinson's Law IMHO where features increase to fill processing power and/or storage space available. I don't think there's a good excuse for that when we've got things like QNX-on-a-floppy or Midori Linux. Sometimes it's used to good end -- Apple, for example, putting the level of polish that they did on OS X, is to some people a good thing. The flip side is the MS effect -- massive, unnecessary software bloat, or in the case of most current Linux distributions (most egregiously SuSE and RedHat), not so much bloat as a state of muscleboundness where the package fills up with well-written shovelware.

    I maintain that the core of any OS written for current hardware should be usable on platforms equal to the following:

    -Pentium-90 or PowerPC 603/100
    -16MB RAM
    -120MB hard drive
    -PCI slots

    And that, in my opinion, is being quite generous, particularly with regard to memory.

    Why is this so hard? Why can't Apple get MacOS X supported on my 6500 when all they have to do is write a working MacOS Classic bootloader package the size of two floppy disks (half of which already exists on a standard Disk Tools floppy)? Why can't I wedge a workable SuSE package onto a gig of hard drive space? Why in the world does Windows need a P2?

    The fact is that it's good that we have the capabilities we have now. But there's no reason that the system requirements of the OS should have to grow to keep pace with it. The same argument applies to apps; why is OpenOffice such a monstrosity to download when a copy of VisiCalc will almost fit in a boot block (well, not really, but...)? There's no good reason for this.

    Alright, I've ranted. But I don't apologize for it...

    /Brian

  192. static goddamnit! by rtscts · · Score: 1

    WTF is wrong with statically linked binaries? The authors get to play with dependancies, and the user gets a binary that works. If you wanna fuck about with your own library combos, compile from source, since you're obviously an expert.

    1. Re:static goddamnit! by rtscts · · Score: 1

      To all who said "RAM usage":

      No I don't run a server for a huge number of users, but if I did then I'd probably not be on the bleeding edge anyway, and take the time to fsck about with dependancies.

      Beside, go to pricewatch.com and check the price of memory.

    2. Re:static goddamnit! by peccary · · Score: 3

      Open source apps do not install new versions of existing libraries, and libraries increment version numbers when they break compatibility.

      then how come cdparanoia (or any of a dozen other applications) insists on a different version of libc.so.6 than the one I have installed? Silly me, in twenty years of Unix experience I had naively expected that "requires libc.so.6" meant just (and only) that.

    3. Re:static goddamnit! by RustyTaco · · Score: 1
      Compiling your own is the beginning of the end. Once you start to compile your own software it's impossible to determine what file belongs to what, and so your system gets cruftier and cruftier until it reaches a point where the only real option to remove a program you no longer want is a reinstall.
      So don't compile the virgin upstream source. Just recompile and bloody package! "apt-get -b source cdparanoia" (chug chug chug) *ding*, a fresh version of cdparanoia compiled against the libraries I currently have installed. Not really any harder with an .rpm package, except you need to download the srpm yourself. - RustyTaco
  193. Linux, windows, reliability by partingshot · · Score: 1

    Just wait till all the shitty windows developers
    start developing for linux. Then we'll talk.

    --
    Anonymous posts are filtered.
  194. GNU Cash is a Broken Design by hackus · · Score: 1

    I think from the start GNU Cash is a broken design. The last point I checked there was Perl, C, Python, and all kinds of strange combinations for the application.

    Very few apps on Linux have such weird requirements. What GNU Cash needs is a total rewrite in Java, and make it a servlet design so it can be web based, far more portable and built with a object design that eliminates a lot of really bad code that is in there.

    What I don't get is why people insist on using Administration or poorly built scripting languages to build applications for Linux.

    As I see it, if you want to build a app now days, for the web, its server side java and XML.

    If you want to build a game or Office Suite I would stick with c++. (i.e. Desktop Apps).

    I wouldn't build it like Gnu Cash with umpteen different programming languages, many of them never designed to do what they are doing in GNUCash.

    I mean, GOD, how can you track the bugs in something like this?! You would need 5 different debuggers running at the same time!

    -hack

    --
    Got Geometrodynamics? Awe, too hard to figure out? Too bad.
  195. video drivers or gfx drivers? by green+pizza · · Score: 2

    I've had very good luck with the drivers for my various standalone PCI video capture cards on my PCs. It's been the graphics card drivers that have given me nothing but trouble (especially early Matrox and NVIDIA drivers).

  196. Re:uh oh by fredrik70 · · Score: 1

    Windows: No easy solution available, you can't have two versions of DLLs at the same time. If the new version breaks something, too bad. Sure you can! just put the dll in the same dir as the app, when looking for libs, windows always look in the dir of the app first, then in the path

    --
    if (!signature) { throw std::runtime_error("No sig!"); }
  197. Re:uh oh by fredrik70 · · Score: 1

    well, then you move it by hand after installation... oh, and you better have some backup of those older/newer versions of the dlls that the installation program, so you can restore them after the install.exe done it's mayhem ;-). bit of tinkering, but it works....

    Not claiming that this is the optimal way of doing things, mind you...

    Hey, looks like Mr Bush JR created some sparks back home in Sweden!! :-D

    --
    if (!signature) { throw std::runtime_error("No sig!"); }
  198. Call it update/documentation Hell. by ebyrob · · Score: 1

    First off... this isn't DLL hell, it's update hell. It's not DLL hell because Linux doesn't have that problem, since it keeps all "in use" versions of every "DLL" that ever existed. So, you'll never have the problem of apps that want differing special dll versions and not be able to get them working....

    As for where to put libraries... it's one of two places. If you're feeling prude, put it in /usr/local/lib. If you're feeling promiscuis put it in /usr/lib. It's a security thing. Any program that doesn't find a library in one of those two places (given a non trashed distribution) doesn't deserve to run successfully.

    Next, there is a problem here. It's the fact that the makers of GnuCash (if they want a production/useable version of their product) should make a distro that includes all needed libraries, or at least an update on their site with all the needed libraries. This would make life easy for all of us in luser land out here who might actually want to, gasp, *use* their program.

    This is one reason I use Debian, once a package is on their list, it will grab everything you need with it automagically. Assuming of course you can get through their half assed effort at an interface called dselect... no update hell there, of course the latest gnucash available from debian's site is 1.3.4-3. You could try something newer off the GnuCash site if you want... but uh... good luck.

    Now, to aleviate the last problem that of cluelessness on the web in general as well as here on Slashdot, maybe we should require a course called "denewbie" as an addendum to the GPL. That way people would know this stuff or they'd be running Linux illegally!

    Oh, wait a second, I almost forgot. LINUX DOCUMENTATION SUCKS!! The closest thing to it is a bunch of MAN pages and HowTos that quite frankly require an expert to even BEGIN using!!!! (note: If anyone has some docs they think are readable... please tell me about them, and I'll be happy to *review* them. I'm talking about whole system install and use from the ground up docs here.)

    (JoeNewbie_Rant)
    Um... I've been a professional C/C++/x86 Assembly programmer on dos/windows for 5 years. I just bought this new CD that says "Red Hat" on it cause I heard it was neat.

    What's this super user account thingie the install wants me to make... and uh... why should I need another account anyways?

    And uh... Now I"m running enlightenment and I want to install the latest version of this neat app I found called GnuCash, but I need 60 libraries that I have to download one at a time cause I don't know any better way to get them. By the way, what does "unstable" mean?

    Since I didn't understand what windows DLL hell was in the first place, maybe this is shared library hell?

    Also, once I get the libraries where the heck do I put them. I've heard the directory is called "lib", but which one?
    /lib
    /usr/lib
    /usr/local/lib
    /var/lib

    This must be a problem in the Linux directory structure. It should just have one folder like windows has. Hey, we could even call it "System"!!
    (/JoeNewbie_Rant)

    For any interested parties... in all intents and purposes I *am* (or was) Joe Newbie in this case. I was a programmer for 3 years professionally before I started using GNU/Linux/Unix/BSD. It's been a year and a half since then, and I'm still learning a lot of things. Now, I haven't had time to devote to *work* on linux, I've just tried to use it in a useful way, so that eventually it'll save me enough time that I have some to *work* on it. I figure that's a fair tradeoff. But so far, documentation has always been on the lacking side of the fence, quite close to his brother standardization actually. (Currently I only use Linux on internet appliances... you know, file/web servers, firewalls and the like, I've done no more than *play* with workstations)

  199. You must not be using any of their newer products. by ebyrob · · Score: 1

    I've seen tons of crashes caused by IIS, J++, and Microsoft Message Queue. All written by Microsoft.

    Of course, today, that programming seems like it was in another age. I think the only one of those still around is IIS.

  200. dll hell is worse in linux by GodSpiral · · Score: 1

    and its the only reason I stopped using it.

    Find that most packages for mandrake would not urpmi correctly, and had failed dependencies. Most .tgz's had some compilation error.

    Basically, except for the .isos, everything is out of synch, and installing any given package is more likely to fail than succeed. Ok It was probably based on my choice of distro, and it might even be better today than it was, but I'll still wait a year after someone thinks its smoothed out.

    Some of you will now promise that Debian's package database is always in sync, and mistakes in it never occur. So does apt-get really always work?

    1. Re:dll hell is worse in linux by cjwatson · · Score: 1

      No, not always. But it's damn close, and everything I care about works (if it's not in sync, I file a bug, and uninstallability bugs are release-critical).

      The next release candidate is being automatically managed to try to get everything in sync. You're going to want (lies, damn lies, and ...) statistics, so: at the moment, out of a total of 35493 binary packages across six architectures that have made it into testing, there are 443 packages which are uninstallable due to dependencies (a few more might fail due to errors in the maintainer scripts and such, but as a rule they shouldn't make it into testing either), and that will decrease during the upcoming freeze. I reckon 98.75% isn't too bad in a distribution we haven't even released yet, and the stats for i386 are running at more like 99.7% just now.

      I run unstable, which isn't quite that good and nobody should claim it is, but all the same I'm not disappointed very often when I expect things to work.

  201. Re:Linux Shared Libs....vs Window DLL's by smack_attack · · Score: 1

    Ok, take a step back and look at the big picture... eventually Linux is going to be as simplified as Win*. When that day comes, do you want people to bitch because the only way they can keep their system clean is to install from source?

    On the flip side of that, MS actually seems to have gotten their shit together as of Win2K, why not just rip off their innovation and implement a similar system for libs in Linux? I'm sure if Linux had done it first MS would have no problem borrowing the idea for their own OS.


    ---

  202. Re:uh oh by Skuto · · Score: 1

    >I can't get Mozilla 0.9.1 because it wants
    >Glibc2.2 - which I can't install without putting >at risk my system.

    Uhh? Mozilla 0.9.1 works fine with glibc 2.1.

    >The Glibc Heck has proven to be quite a pain in
    >the hard drive. If anyone has a solution that
    >doesn't involve rebuilding the whole packages (I
    >already thought about that, thx), I'd be glad to
    >hear.

    There's no good solution that I know of. Upgrading
    from libc5 to glibc2 was a major pain. The easiest
    way is to install a new distribution.

    Glibc 'upgrades' happen very infrequently just
    because of this reason (libc5->glibc2 was the
    only one I went through and I've been using Linux
    since 1.2.13) The main reason for that upgrade
    was localization and threads support. If you
    didn't need either of those, libc5 is still fine.

    AFAIK there is nothing that needs a glibc2.2 right now.

    --
    GCP

  203. Either .so Hell or re-invent-the-wheel Hell by bruthasj · · Score: 1

    Which do you want? I'd rather take the former. Reducing the amount of redundancy in programs and advocating the concept of reuse is a GoodThing(tm).

    Use apt.

  204. Re:Is there a real solution to this? by kz45 · · Score: 1

    the idea of "STANDARD" libraries on a linux system, although needed, are against the ideals of the slashdot community, because linux is "freedom" and a standard set of libraries would mean "conformity".

  205. Re:Nice troll! by kz45 · · Score: 1

    bitter about what may I ask?

    I would love to see a stable, standardized, version of linux, unlike the countless shitty distributions I have gone through within the last week.

    BTW. Kylex dev edtion is only $199. With this compiler becoming more popular, you will start to see ALL BINARY versions of linux (because people are no longer forced to use the GNU license)

  206. Its Been There a While by AgentOBorg · · Score: 1

    I learned some time ago that the "easy to upgrade" line so often attributed to Linux was not quite true. This RPM won't install until you get two more, each of which also have a couple requiremnet, and so on, until your practically upgrading the whole system (and spending all week combing the internet for the files) -- and its usually not long until something is required that just doesn't work or can't be found.

    So, I went to compiling from source so my binaries and libraries would be generally compatible -- that way I only needed four other packages to upgrade one....

    Putting code in libraries for re-use sounds really good until you realize just how interdependent everything has gotten.

  207. Re:Installing Free Software by hal200 · · Score: 1

    Speaking from experience, I can tell you that Perl will install under your home directory, and still play nice with others...

    For a while, I had copies of 4.036, 5.005_5, and 5.6 (gawd, I love the new Linux-like versioning) all running under my home directory, for testing purposes...It made the quota police very unhappy, but it worked just fine. =)

    --

    I just want to take over the world...Why does that automatically make me EVIL?

  208. Solution: GNUpdate ? by Wayne247 · · Score: 1

    I think that this project might be the solution to the above-mentionned 'shared libraries hell' problem. http://www.gnupdate.org/

  209. Could we please make up our minds. by haplo21112 · · Score: 1

    This is a good push in the right direction...BUT!, there is one thing missing...and its always missing from these conversations! Could we please make up our minds where libs belong. It seems like every new version of some programs, look for the libs in different places, every new version of the libs put them in different places, and every new distrobution puts them in a different place. I can't remember the number of times I have gone to upgrade a program that someone wrote to the lastest version, but the programmer wrote it to use /usr/lib for the libs that he also wrote, but the distrobution I am using decided they liked them better in /usr/local/lib. So now when I compile the program despite compiling the new libs for it as well, it keeps finding the old ones. Even windows is fairly good about this keeping most dlls in system32. Even worse is when the lib has been symlinked all over creation. I lind this often with the gdk libs.

    --
    Power Corrupts,Absolute Power Corrupts Absolutely, leaving one person(group)in charge is absolutely corrupt.
    1. Re:Could we please make up our minds. by zylinder4 · · Score: 1

      I think, instead of one, we need three...maybe it's not as easy for a mac/win user to comprehend, but there are great reasons for the /usr and /usr/local directories, and I'd hate to see distros throw everything into a big pile. I have these on different partitions for a reason! Maybe if we could codify where apps install better, so they always placed thier binaries in /usr/local/local, thier libs in /usr/local/libs. that and a comprehensive, agreed upon library version stamping system, so all libs can be in place and KDE 1.x and 2.x never trip on themselves. The system is almost there, just from UNIX conventions, but most apps want to put themselves in thier own little directories, and I have to rearrange them and edit files to get them where they belong... not exactly what a luser wants to do with his saturday night!

      --
      Debian - It's an open source community, why are you still in your closet hacking on that slack-box, kid? Come out and
    2. Re:Could we please make up our minds. by BigNumber · · Score: 1

      I agree. I was just talking to someone yesterday about getting Linux to the desktop. One of the main problems with this is the varied location of all of the system files. One of the things other OSes have is a standard place for all operating system files (System folder for MacOS and Windows or Winnt for the other). I think something like this would be very helpful for getting Linux to the desktop.

      If you have one all-powerful directory that you tell end-users to keep their mits off of, you make the system more user friendly. They know they can't break anything if they don't mess with that directory.

      I realize that this pushes Linux away from basic *nix compatibility but maybe that's a good thing.

      Just my thoughts...
      -BigNumber

  210. Windows stability by justin+sane · · Score: 1

    Microsoft makes plenty of buggy, crash-inducing software all on their own. But your protests regarding the stability of a clean and pristine Windows NT are pointless. The real issue is the stability of systems configured to do real day-to-day work. When that is considered, Windows is much less stable than several alternatives. Period. The truth will out.

  211. It's true by WildBeast · · Score: 1

    I've been asking this question for years and that's the part that frustrates me the most about Linux. Solving this would be a huge step forward for the OS.

  212. Vesions? by zoftie · · Score: 2

    DLL is wrong name for one thing, here made to spite
    *NIX jocks. Shared library is proper term.
    Anyhow, those who make libraries, know there
    are api freezes on major version numbers, and
    only internal bugs are fixed on particular
    versions. Functionality may be added but not
    documented.
    Linux has some sort of mechanism of recognising
    between different lib*.so.* files, by linker.
    I am not expert on the issue, but libc2 and libc1
    apps happily coexist on my system.

    Now those who do not follow *featureset* freezes
    and should be LARTed at that. This means that
    GNUCash will suffer some degradation in size of
    its userbase, not linux.

  213. Responsability is the key by alriddoch · · Score: 4

    Using libraries to add functionality to applications is essential. There can be little doubt here. It is easier, more robust, and better practice to use the standard implementation library for a piece of functionality than to attempt to re-write that functionality for yourself. However there are some important basic principles that must be understood when writing application to use, and more particularly developing shared libs.

    In development of any code project, there will be times when the codes design is undergoing rapid change. In the case of a library this means that the API will be constantly changing. In a closed source environment this does not cause too many problems because noone ever sees this code. In a cooperative Free Software project, the source to a library is always available, so there is a temptation for the application developer to use a development version of a library to get a certain feature. This is the beginning of the road to hell. It is essential that applications never have stable releases that depend on development libraries. I remember some years ago when gtk+ 1.1 was being developed towards 1.2, and many application developers were chasing the development branch because they wanted the features it had. The result was chaos. It became nearly impossible to install many combinations of gtk+ applications because they all required different versions.

    On the library development side there is a need for a great deal of responsibility. Library developers need to learn about, and really understand library interface versioning. The interface version of a library is completely different from the release version number, and it is used by the runtime linker to ensure that it is safe to link a binary to library at runtime. With properlly managed interface versions it is quite possible to have many different incompatable versions of a library installed and available for runtime linking. GNU libtool has some excellent support for library interface versioning, and the libtool documentation contains some excellent documentation on how to correctly assign interface version numbers to a release.

    Large numbers of libraries can be managed effectively, and cleanly as long as these principles are understood by both library and application developers, and good practice is followed.

  214. "Windows ain't done till Lotus won't run" by mkcmkc · · Score: 1
    Remember that one?

    --Mike

    --
    "Not an actor, but he plays one on TV."
  215. I disagree by jawtheshark · · Score: 2
    I disagree. As far as I'm concerned I think we need good standard that is ready for flexibility.
    The slashdot community, as far as I know it, is exactly for "good, working, simple and well thought standards". This is mostly is reflected in HTML-non-compliance-bashing, the well known Microsoft-Kerberos-Incompatibilites, or Office Document formats.

    The non-conformity of the slashdotters in general is more "alternative OS" and "very themed desktops". I think most people working with linux have encountered shared libs incompatibilities and cursed hard (I know, I did, and I'm a fairly new Linux user).

    Now there remain two big problems with standards:

    • Standards are evolutive, often a new idea is buildt upon an old existing infrastructure (Think email + attachments + HTML)
    • Many people think different things: for one person a standard may be perfect but for another it may be complete and utter crap. They just think differently.
    So, yes, I think there must be a way to handle this shared-library-hell, but if I come up with a solution hundreds op people will tell its crappy. Just think of apt vs. tarball vs. rpm.
    --
    Ahhh...the great dumpster continuum. Many a free computer will be found there. -- sowth (748135)
  216. DLL Hell? I rather like Apple's system by HackHackBoom · · Score: 1

    some sort of quasi non Apple-lawyer-bait version of the plugin system used in OS(insertnumberhereorromannumeralhere) should be devised for linux. I think that would solve this problem


    "It's not stealing if you don't get caught!"

    --


    "It's not stealing if you don't get caught!"

  217. What bloat? by achurch · · Score: 2

    Image the bloat hell we would be in if everyone linked their projects statically to libraries.

    Oh, like I'm really going to notice that 1500 or so binaries have an extra meg or two tacked onto them, if even that. I don't know if you've looked around recently, but even 40-gig drives are going for just $100 or so these days. There's a point up to which optimization is good, and beyond which it's not worth it--think diminishing returns. Guess where this lies? (Yes, I'm well aware there are things like embedded systems where a few kilobytes mean a lot--in fact, I just spent a year working on one. But such systems have plenty of other special requirements as well, so I'm not considering them here.)

    On the other hand, a good reason for keeping shared libraries is that if a bug is found and fixed in a library, you only have to upgrade the library (one item) instead of every program that uses it (in the case of libc, basically everything). Even that's starting to become moot with broadband connections, but there's always the security aspect: "oops, I thought I upgraded everything but I forgot about that one contrib daemon and someone cracked me through it..."

    --
    BACKNEXTFINISHCANCEL

    1. Re:What bloat? by shiftless · · Score: 1

      I don't know if you've looked around recently, but even 40-gig drives are going for just $100 or so these days.

      You sound like Microsoft.

  218. Re:Guidelines (symbol versioning rant) by achurch · · Score: 2

    Please pardon a minor rant...

    First of all, the interface to all functions and classes in a shared library MUST be backwards compatible with previous versions.

    <rant>
    And while you're at it, get rid of that stupid symbol versioning system whoever it was invented and stuck into glibc. It makes it impossible to use newer binaries with older (but the same major version) libraries, or even with the same version if it's compiled without symbol versioning. Even simple things like cat don't work. I'm almost tempted to say the GNU people are trying to sneakily force new versions of their libraries on everyone.
    </rant>

    We now return you to your regularly scheduled Slashdot programming.

    --
    BACKNEXTFINISHCANCEL

  219. dpkg-shlibdeps deals with that for you by karlheg · · Score: 1

    When you create a package of the software, the
    library dependancies are gotten for you by the
    packaging tools. It's just a matter of installing
    everything it needs and building it. After the
    packager does that, everyone else out there who
    wants to use the software can just run "apt-get"
    and Everything Just Works.

    It is better to use libraries than "reinvent the
    wheel" and thus have a lot of programs with
    unshared mostly identical code in them taking up
    RAM. At least on a decent Linux distribution
    with good package management and up to date
    development libraries available, you can get
    a very high level of code sharing going on.

    This is in contrast to the Windows environment
    where every vendor has their own proprietary DLL
    and very little code sharing can happen between
    vendor's softwares. That plus there is not any
    central package management system in place, afaik.

  220. Simple by transami · · Score: 1

    I've been talking about this for years. It really just a name space problem. There is no reason not to have all major version of sahred library available. If a program needs a library version so-1.2 then there it is. If another progam needs so-1.0, well thats there too. Over time you can purge very old libraries if they are no longer required. NOW IF WE CAN JUSYT WORK TOGETHER TO MAKE THIS HAPPEN! (P.S. Windows XP has this feature. --No more .dll hell.)

    --
    :T:R:A:N:S:
  221. Re:Installing Free Software by abe+ferlman · · Score: 2
    Loki has created a really nice installer package which is available under the LGPL, perhaps others should look into using it?

    I'm not sure to what extent it can solve the various dll problems, but for newbies who are used to the windows style of installations and have been talked into using linux because they saw Koffice and Konqueror and decided it was similar enough that they could get by, programs like this are *very* nice.

    --
    microsoftword.mp3 - it doesn't care that they're not words...
  222. Re:Uninstalling Free Software by isorox · · Score: 1

    How would I uninstall something in Debian?

    apt-get remove foobar

  223. Re:Yet another use for DLLs in Windows... by fleeb_fantastique · · Score: 1

    If you're selling a product on a CD-ROM, despite the fact that the DLL will be thrown into a compressed cabinet, you would have a strong incentive to keep your binary reduced in size.

    Hard drive space may be cheap, but CD-ROM space is somewhat more costly. But then, you may not have this problem if your program isn't that large to begin with.

    Furthermore, occasionally you must reduce the size of your executable to allow it to transfer across a network more quickly. For some of the work I do, the binary is usually executed from a networked sharepoint. Bandwidth, therefore, is a strong motivator for me to reduce filesize.

    That said, I agree with the bit about the Black Box. I sorta suggested that in my original comment, but you nail the point more clearly than I did.

    As for VB... in my dev environment, we're doing everything we can to forget VB. It's a nightmare... evil, right down to its rotten core. Can't localize it easily, can't debug it without putting your legs behind your neck, makes it easy to create truly screwy controls with ugly looking dialogs, and you have to bind to it using COM if you're working with C++ (an ugly problem if you want to work across a network on a machine that hasn't "installed" the VB dll). Just say 'no' to VB. I'm sure there's a 12-step program somewhere <chuckle> .

    And now, after having written all this stuff about shared libraries, I just happened to notice my signature, and got to wondering about Mr. Franklin's prescience. Or my own, for that matter, to already be using such a sig.

    --
    And so it goes.
  224. Yet another use for DLLs in Windows... by fleeb_fantastique · · Score: 2

    I'm probably responding to the phrase Part of the DLL hell is the vast amount of them that are unnecessarily created by people who don't understand when static linking will work just fine.

    DLLs have several decent uses, but I'd have to agree that a lot of folks probably just frivolously create them without much thought.

    In my own work, I use dynamically linked libraries to provide the following solutions:

    • Dynamic loading decreases load time

      By dynamically loading shared libraries that the executable won't be using that often, I reduce the amount of time it takes to load the binary in question, without having to call a separate executable or something. It's a very nice technique, made easier with Visual C++ 6.0's /delayload:[my.dll] parameter.

    • Shared binaries across executables reduces hard-drive space consumption

      If you have several executables using the same set of routines, putting those same routines in a shared library that's dynamically loaded can reduce the extra bloat for the individual executables. There's a limit, of course.. your results may vary. If you're trying to dynamically share code that's rather tiny, you'll actually waste space instead.

    • Shared binaries across executables decouples the executable information

      Put another way, if you have an error in a shared DLL, fixing that DLL will cause all other executables using that DLL to suddenly work properly (provided, of course, that you didn't change any APIs).

    • Huge programs become more managable when broken down into dynamically loaded shared executables

      If you're working with a truly large executable, it's handy to be able to break things down into separate little binaries. You may create small test programs for those little binaries to aid in testing. This can also help pin-point problems with large works.

    I'm sure some folks have other reasons, but these are the most important ones I consider when deciding whether to go with a DLL or a LIB.

    --
    And so it goes.
    1. Re:Yet another use for DLLs in Windows... by Computer! · · Score: 1

      Aside from the HDD-saving properties (which are the least important, they way disk prices have fallen), don't forget the importance of DLLs to object-based programming. DLLs make great black boxes, instantly adding functionality to programs without having to understand how it's done. Believe it or not, when you're writing a large app with a small piece of functionality needed that is unrelated to the rest of the app (i.e.: image manipulation in a database program, or database manipulation in an image-editing program), you'll be happy not to have to learn complex techniques you'll never need to remember. This is a good thing, for those of us on a deadline, or for those of us that want to sell libraries for money. Also, it's a boon for project management. I can assign several DLLs to several different developers, and they can just exchange binaries, not source. That introduces a lot less errors into code over time. Oh, yeah, and don't forget: VB.

      --
      If you fall off a building, go real limp, because maybe you'll look like a dummy and people will be like hey, free dummy
    2. Re:Yet another use for DLLs in Windows... by Computer! · · Score: 1

      Good post, except that there's probably less than 1/10th of 1% of programs written that are larger than 100MB. I think we're on the same page, anyway, so who cares.

      As for VB, the VB IDE has become the reference standard for visual debuggers. I don't know what you mean by "legs behind your neck". Unless you mean looking at the heap, in which case you have to use a seperate tool anyway. It can still be done, though. If you think COM is ugly, then you might want to stay away from object-based development altogether, or maybe go with CORBA. If I was a C++ guy, I'd write my objects in that, and my GUI in VB. The only machine without the VB runtime would not be running Windows, and if that's a problem, just download the SOAP toolkit, and stop caring about platforms.

      --
      If you fall off a building, go real limp, because maybe you'll look like a dummy and people will be like hey, free dummy
  225. Re:Debian != smart by MrDBCooper · · Score: 1

    > apt-get, dselect, et al will cheerfully rape your system when you ask for unstable software,
    > replacing all your nice stable shared libraries and even your nice stable software with broken
    > development versions. Never mind the security issues with running a black-box install that
    > fetches software from the internet.

    Granted, bad things can happen in unstable. I still consider it more stable than any of the commercial distros.

    Moreover, there is testing now, have you tried it? I've yet to see a better trade-off between freshmeat and stability.

    > I think the very idea of shared libraries is a bad one. It encourages promiscuous linking and
    > immense run-time bloat. My view is that it is an attempt to treat the symptom (static linked
    > executables would be too big) rather than the disease (they're too big because they're full of
    > whatever garbage you could shoehorn in).

    Feel free to link everything you have statically. Remember, only the really used stuff is linked in then.

    Let me know if that uses more or less resources...

    --

    --

    --
    Free Software enthusiast; Debian GNU/Linux (powerpc) developer
  226. Re:uh oh by sszabo · · Score: 1

    Of course, application developers can't really assume that people are running Win2K, so it's not a particularly useful solution quite yet. (Boy do I wish we could assume 2k, that'd make writing windows apps two or three times easier)

  227. Welcome to Windows? by Moridineas · · Score: 1

    Kinda scary. DLL Hell has _long_ been a regular part of dealing with windows, going back to at least 3.1 (my first experience with it). Today it doesn't seem like as big a deal, I'd guess primarily because available file space and general system resources are so much higher than in those days. Still, the number of random dll files in windows is shocking.

    I hope some sort of solution is worked out for linux. One of the things I've always liked about linux has been how you have the option of running a very streamlined system W/O tons of junk files laying around.

    My experience with newer versions of RedHat (and stuff like Gnome in particular) don't really follow that so much anymore. It seems like just about every app beyond the certain core set requires like a million dependencies now.

    Maybe there is a better way of keeping track of, and storing all these libraries?

    Scott

  228. Re:uh oh by Vann_v2 · · Score: 1

    I wouldn't worry. I built my own distro around Glibc 2.1. When I upgraded to glibc 2.2 I had literally *no* problems at all. The fact that it didn't come with libdb threw me for a loop, but you can download and install that that seperately.

  229. $0 - time not included by BlowCat · · Score: 2
    It takes time. A lot of time. Especially if you are not familiar with that system.

    I tested QNX this weekend and found a bug in the glib configuration sccript. Yes, I have already reported it.

    But I spend hours trying (in vain) to make QNX work with my network card. Finally I gave up and had to reboot every time when I needed some sources.

    Not to mention that it doesn't read ReiserFS, so I had to use a FAT partition to tranfer the files.

    I could have made 5 patches in that time. Not to say that I regret this experience, but the "regular" QNX users would be more effective in discovering the problems, while I could concentrate on fixing them without having to fight with my hardware.

  230. Re:Is there a real solution to this? by OCatenac · · Score: 1

    Yes, there is a very easy solution. Static linking. Take a look here for a discussion of why DLL's (and the analogous Shared Libraries) might be a promise that simply hasn't panned out.

    Onorio Catenacci


    --
    "And that's the world in a nutshell -- an appropriate receptacle."

    --

    --
    "And that's the world in a nutshell -- an appropriate receptacle."
    -- Stan Dunn

  231. Well, well, well. by FiringSquid · · Score: 2

    After years of listening to obnoxious and deluded Microsoft bashers bitching smugly about this very issue, it's great to see that some of them are finally beginning to learn the hard truth.

    There's no perfect solution to DLL Hell - not in Windows, not in Linux, not anywhere. Why? Because it's the human DLL developer who decides whether to issue a minor revision or a major one. As long as he believes that he hasn't broken compatibility, he'll be compelled to issue minor revisions. But unless he tests each and every app that uses his DLL, he can only make guesses about compatibility. As any programmer worth a damn will tell you, any change can break compatibility, even something that seems perfectly innocuous, like a minor bug fix or even a purely cosmetic change. Hell, an app may be relying on a library bug, and it's not necessarily the app developer's fault.

    Many people think that the problem has to do with Windows-specific things like bad installation software, the lack of symbolic link support, dynamic loading limitations, etc. They're wrong. The real problem is that when libraries are allowed to evolve independently from the apps that use them, users often end up combining software components at runtime that were never lab-tested in combination.

    And don't start with me about LD_LIBRARY_PATH or any other after-the-crash solution strategies. Windows has them too. The problem is that they're out of Joe Blow's reach, and always will be.

    Some folks have even mentioned static linking. Well ya, that works, but it's not exactly a painless solution. For one thing, you give up the app's ability to inherit library bug fixes in the field. More importantly, you lose the big advantage of shared libraries, which isn't the code sharing, but the late binding. Yes, I'm talking about binary plug-ins, component-oriented development, etc.

  232. Re:uh oh by damiangerous · · Score: 1
    Windows: No easy solution available, you can't have two versions of DLLs at the same time

    Yes, you can. At least with Win2k you can have multiple version of the same DLL loading simultaneously. Try doing a little research.

    It's embarassing how you Microsofties try to show Linux' disadvatages just to reveal even more advantages.

    You mean as embarrassing how you 'Linux zealots' need to lie to promote your agenda. Get real, look in the mirror, and lose the inflammatory rhetoric. Those with their own agendas tend to see opposition in everyone else's.

  233. DLL hell is a function of change by KarmaBlackballed · · Score: 1

    While shared libraries are evolving, there is greater likelyhood that folks will mix versions. True for Linux, true for Windows. There is no idiot proof fix.


    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~ the real world is much simpler ~~

    --

    --- -- - -
    Give me LIBERTY, or give me a check.
  234. Re:Huge Misunderstanding by rabtech · · Score: 2

    Your comment is complete and utter BULL.

    The DLL system was created back when 16MB of memory was expensive and hard drives didn't generally top 500mb. At that time, space and memory was at a premium, and DLLs provided a way to share common code across applications, as well as with the system.

    Fast forward to a time when 256MB of memory will cost you pocket change, and we're topping 100GB hard drives. Suddenly, the benefits that made the version conflicts worth it become worthless in and of themselves. Thus, DLLs became a drawback, rather than a feature.

    Microsoft is changing all that; first of all, in Windows 2000, no install program can replace a critical system DLL. Windows File Protection will see to that. Unless you are installing a b0rked driver, you will never fail to boot after installing an application. Secondly, Windows 2000 has the ability to load different versions of DLLs in memory at the same time, for different applications. It can also load DLLs out of an Application's own directory rather than the SYSTEM32 folder.

    The big changes are coming with VisualStudio.NET and the .NET runtime. In that system, Application programmers are encouraged to store all their own custom code in their own directories. Of course registration of COM components is gone, since each carries with it an XML manifest describing the component and everything the OS and program need to know about it.
    Collectively, the XML manifest, supporting resource files, and all the DLL files that makeup a certain library are now called an "assembly." (aka a package).
    If a library does need to be installed for sharing, the program hands it over to the assembly store. No application or installer can directly write to the store... The store looks at the version... if two versions are deemed compatible (1.0.x.x), then the shared assembly is updated. If they are deemed incompatible (x.x.1.1), then the new copy is stored alongside the old one. When the application runs, and the OS goes looking for the shared assembly, the store recalls what version the application installed, and hands it that version. Viola, problem solved.

    Microsoft was simply solving a problem, and the solution later turned into a problem in and of itself. This time they are being a bit more forward-looking in their approach.

    Lastly, just because you are too lazy to read the SDK and other docs, don't say Microsoft is trying to hide things in the OS from you. There is nothing that Microsoft programs, like Office, can do which I cannot do. You would be quite surprised how much information that is really available if you just looked. Spend a week or two at msdn.microsoft.com and then try and come back and tell us that you still don't know how something works; then we'll know you are illiterate :)


    -- russ

    --
    Natural != (nontoxic || beneficial)
  235. Re:uh oh by Xross_Ied · · Score: 1

    Great so you have localized storage of different versions and possibly localized loading of different versions.

    "your binary has to ask for a particular, or minimum, version of the dll"
    So with XP M$ will finally "try" (its not out yet) to fix their F**K UP versioning. How long before the majority of apps are "AWARE" of this "innovative feature"? (hint proper version control has been taught in software engineering for over 10 years).

    Do you know why XP has to have this?
    otherwise .net becomes .not
    Server has one version and the clients have other versions.

    --
    This sig space tolet, reasonable rate.
  236. www.linuxlibraryheaven.com by kenthorvath · · Score: 1
    OK, so maybe it doesn't exist (I haven't really checked), but if it doesn't, it should! I can't tell you how many times I had to "break" my system's nice clean installation to use rpm -nf or some other variant. My problem is that every package seems to conflict with every other package. Take ROOT - an object oriented data analysis and histogramming package, for instance. It took the local Unix experts in my group (Physics - High Energy experimental) almost a week to dig up all of the necessary libraries and compile them. What a waste of productivity. I would like to see an aptget interface that is dedicated SOLELY to libraries where you could pick your architecture and download them all individually.

    Just my little rant for the day...

  237. Thanks for your reply. by Futurepower(tm) · · Score: 2


    Thanks for your reply. Your comment is the first seriously pro-Microsoft information I've ever read on Slashdot. I think that's good. I'm not anti-Microsoft. I think I'm more pro-Microsoft than Bill Gates.

    Right now Slashdot readers have a general sense that something is wrong with Microsoft; I think that readers would benefit from a more complete understanding.

    Notice that you don't refute what I said; in a way you strengthen it. You say that, after 5 years of sheer hell for its customers, Microsoft is fixing DLL hell in Windows 2000.

    The people at Microsoft are not dumb. They knew about the problems. As you and other readers point out, there was always a way to solve the problem of DLL hell.

    Looking at the SDK, as you suggested, does not solve the DLL hell problem because it is a social problem, not a technical one.

    There has always been a way for each Microsoft Windows user to solve the problem of DLL hell, as you point out: It takes a week of work after you have spent many months attaining the knowledge necessary to understand what you read during that week.

    My comments are just my opinions. My opinion is that, in the transition from Windows 3.11 to Windows 95, Microsoft achieved something the company wanted. In Windows 3, the files for each program were largely segregated. That made it possible for a user to copy a program by copying its files.

    In Windows 95, the registry and the mixing of DLLs created copy protection. It was still possible to copy a program by copying its files, but now it took serious understanding.

    My opinion is that the problems with Microsoft Windows 95, 95B, 98, 98SE, and ME have been deliberate, on some level. There is a deliberate 64k or 2 megabyte memory limitation on what Microsoft calls GDI resources and USER resources; this is what causes most of the crashes, even when the user has 256 megabytes of memory.

    My opinion is that DLL hell is deliberate in the sense that Microsoft knew about the problems, and waited 5 years to solve them. During that 5 years many users upgraded 5 times, providing a huge amount of money to Microsoft. If Microsoft had delivered a good operating system in the beginning, many users would not have upgraded.

    There is a conflict of interest for a commercial company in the business of making operating systems. A company with a monopoly will make more money if there are more bugs. The bugs have to be carefully managed; they must not be too discouraging; they must be discouraging enough to make people enthusiastic about upgrading.

    That's why Linux is a brilliant social innovation. The GNU GPL removes the social conflict. Linux is solely an attempt to make a good operating system; the conflict of interest is gone.

    We have Richard Stallman and others to thank for that social innovation. Soon we will have an operating system that the whole world can use, and that has none of the problems created by conflict of interest.

    Linux is a gift from programmers and writers to all people. We have a way to go in achieving the ultimate goal, but it looks like it won't be many years before Independence Linux, RedHat, Mandrake, and others solve the problems of making Linux easy to use. Then there can be just one mainstream operating system, available to all and usable by all, without the problems caused by hidden adversarial behavior.

    --
    Bush's education improvements were
  238. Re: Huge Misunderstanding by Futurepower(tm) · · Score: 2


    Interesting.

    Certainly, if you and I understood this, Microsoft did also. The problem may have originated from sloppiness (suckyness), but not fixing it was deliberate.

    --
    Bush's education improvements were
  239. Hidden Microsoft Windows Subscription System by Futurepower(tm) · · Score: 2


    Hidden Microsoft Windows Subscription System

    Comment #467 about installers gives a clear explanation about why users would upgrade: If they upgraded, they would get a base of good DLLs. If they still had problems with an application, they could report the problems to the manufacturer, and the manufacturer would be obligated to fix it.

    So, by allowing this problem to occur, Microsoft put users in the position of having to upgrade their operating system every year, or face difficulties that would be very expensive to cure any other way.

    Microsoft Windows has thus been a subscription system, but it was a hidden subscription.

    Note that this problem occurred only for people who installed new applications. People who didn't try new things would not have this particular trouble.

    In this particular conflict of interest, this is the kind of effect desired by a monopoly, because people who never installed new software would probably be the kind of people who would not pay more anyway.

    --
    Bush's education improvements were
    1. Re:Hidden Microsoft Windows Subscription System by NutscrapeSucks · · Score: 1

      Note that in the midrange and high-end markets, "subscription" software is very common. It's called "maintenance" and often costs up to 40% of the original purchase price, per year.

      Would Microsoft be more interested in bug fixes if they derived a significant portion of revenue from maintenance? Hell, yes, which is why a move to a subscription model is not necessarily a bad thing.

      As it is, MS has a unique business model which depends on creating enough features to sell upgrades. As Bill Gates said (falsely) "Nobody ever pays for a bug fix" -- which means that the bugfixes don't get implemented until the next major "features" release.

      I don't think MS business practices are particularlly "hidden" -- You pay money for Product version X. End of Transaction. The next transaction doesn't start until you buy version X+1, and there is no incentive for MS to give you anything until then.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
  240. Huge Misunderstanding by Futurepower(tm) · · Score: 3


    There seems to be a HUGE misunderstanding. Yes, there is a problem with shared libraries. But the problem with shared libraries is minor compared to DLL hell. Shared libraries are a sunburn. DLL hell is hell.

    Microsoft DLL hell is largely caused by a deliberate attempt to create copy protection by obscuring how the operating system works. You can't fix the problem because you have no reasonable way of getting the information you need.

    This class of problem just doesn't exist with Open Source software. Yes there may be difficulties, but all the information necessary is available. The people who write Open Source software are smart and are solely motivated by the desire to do a good job. You can be sure that they will find ways of solving the problems. See comments #56, #165, #59, and #17 above for ways of solving the problems.

    On the other hand, to a commercial monopoly like Microsoft, DLL hell is an advantage. It gets people to upgrade quickly in the hope of having fewer problems.

    See #53: "DLL hell would be if gnucash blew away the libs that gnumeric needs, and then reinstalling gnumeric screwed up the libs that nautilus wants, etc."

    --
    Bush's education improvements were
    1. Re:Huge Misunderstanding by NutscrapeSucks · · Score: 1

      I would argue the the real cause of DLL Hell in Windows wasn't technical at all.

      Microsoft faced a problem back in the early 90s of how to perform OS upgrades on Windows 3.1. This was back when most people didn't have CD-ROM drives or online access, so they made the questionable decision of letting software vendors distribute the OS upgrades via their normal installers.

      The problem was that software vendors (including MS) generally are only concerned with their own warez, not the whole system. Thus you had installers which did things like overwriting newer system DLLs with the older version that the vendor QAed against, or worse, vendor-supplied system DLLs which were lying about their version number or build date to appear newer than they actually were.

      The situation got so bad late in Win 3.1's lifetime that it was virutally impossible to get more than a handful of programs from different vendors installed. The solution was to start over cleanly with Windows 95, but it didn't take long until the situation got bad (but not as bad) again.

      The fact that this problem started cropping up in 1992 and wasn't really resolved until 2000 (and even then, only partially, because warez still need to run on Win95,etc) just demonstrates the underlying suckyness of Microsoft's approach towards building systems in the 1990s.

      Many, many Windows users were crying for a DLL Hell solution for Windows 3.1 -- I would have much rather had to install Windows 95 "Service Pack 32" and have known good base of system DLLs (from which I could report incompatibilites to the vendor) than have to play installer roulete with every program.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
  241. Central Authority by FreeMath · · Score: 1

    Would it be easier if there were some sort of central authority keeping track of libs (keeping track, checking for conflict and overlap). I am also led to believe that all of this code does not need to be linked. I prefer to have one big binary, over a small one with 12 libs.

    --
    This sig intentionally left blank.
    1. Re:Central Authority by FreeMath · · Score: 1

      Some compromise could be reached. I'm saying more code in the binary, not all of it.

      --
      This sig intentionally left blank.
    2. Re:Central Authority by Ayende+Rahien · · Score: 2

      And you would change your mind when you try to open several instances of the binary and find out that you've run out of RAM.

      --
      Two witches watch two watches.

      --

      --
      Two witches watched two watches.
      Which witch watched which watch?
  242. Re:uh oh by entrigant · · Score: 1

    Try comparing the size of glibc without debugging and full optimizations, you'd be surprised how much it shrinks. Backwards compatibility is nice in the short term, but in the long term in order to embrace the future we have to let go of the past... sorry to break it to you like this.

  243. Re:uh oh by entrigant · · Score: 1

    Download glibc-2.2.2.tar.bz2, run configure with your preferred settings, make and then install. BOOM! After that you got glibc 2.1.x and glibc 2.2.x installed at the same time, and the applications that need one will use it, and the ones that need another will use it. Also, you could always just install mozilla from source.

  244. THIS IS NOT WAR! by Quazion · · Score: 1

    The evil empire is our enemy, or atleast mine ;D But whats the use of war, just use what you like and feel happy with, thats the most important thing if you ask me.

  245. Linux Shared Libs....vs Window DLL's by Quazion · · Score: 2

    I compile all my libs my self, update them my self, and yes i know this costs loads of time, but it has one advantage over the windows dll's that is that i know what i am doing and if something goes wrong then i know what i have done.

    I also run a couple of windows systems, and hench i install a program with my admin rights and it just overwrite's a dll else the software wont work, loads of software developers edit and add things to common dll's, which get overwritten, trojans overwrite dll's everyone does it under your windows system, and there is no easy way to check if what you are installing is a correct thing to install or not, you just hope for the best.

    With *nix you make your own choice of what lib to install or not, and truelly you can find out what it does if you want, and thats what its all about that you have a choice....and yes i understand if you want to run GNUCash you have to install all those 60 libs =( but if you think it is worth it then its again your choice....and you can do it in a save way i think....

  246. Re:Is there a real solution to this? by elijahb80 · · Score: 1

    A possible solution is a ports system similar to the one used by *BSD. The software that you want to install could come with a list of required libs. The ports system could download and install the necesary libs, and Bang!, you're done. When you no longer need the program, use the same list to uninstall the libs that were installed for the program.

  247. Hey programmers by Apreche · · Score: 1

    Yeah you. Stop writing programs that require 60 libraries, please!

    --
    The GeekNights podcast is going strong. Listen!
  248. BSD has no problem with dll (so) lib compat by updatelee · · Score: 1

    i your using the ports colection and you do cvsup once in awhile. cd /usr cvsup cvsup-file cd ports/security/dnsiff make install make distclean all my dependencies are check for newest versions and re-installed if nessisary. Chris Lee lee@mediawaveonline.com

  249. Is there a real solution to this? by samrolken · · Score: 1

    How can everyone agree to make libs compatible, backwards compatible, and standard? Isn't there some way to accomplish this?

    --
    samrolken
    1. Re:Is there a real solution to this? by samrolken · · Score: 1

      well, most packing management systems for linux do this too, RPM and debian, specifically...

      --
      samrolken
    2. Re:Is there a real solution to this? by FuegoFuerte · · Score: 2

      How can everyone agree to make libs compatible, backwards compatible, and standard?

      There are various reasons this may not work well, but I was thinking... why not simply add the version number into the name of the library file, and have the program coded to look for that library. This would undoubtedly cause a bit of extra overhead, but then every program would always be able to find the library version it was looking for. different versions of the same library could all be kept within the same directory to make the file structure easy to figure out. From looking at /lib on my slackware-current box, it looks like many libraries already incorporate version numbers into the name, so this is already much better than the dll hell of windows. In windows, I may have 5 different programs looking for 5 different versions of mscvrt.dll, for example, but in Linux I might have several programs using different versions of libutils, but one can use libutil-2.2.3.so, another can use libutil-2.2.0.so, etc.

      Note that I just picked library names out of my head, and I have no idea if there are actually any kinds of version conflicts with these libs. If you have flames about some anal little thing, send them to /dev/null.

    3. Re:Is there a real solution to this? by mazor · · Score: 1
      There are various reasons this may not work well, but I was thinking... why not simply add the version number into the name of the library file, and have the program coded to look for that library.

      Great idea. Linux already works like that.

      Programs are supposed to be built to bind to shared object libraries using the general release number in the .so file name, like libfoo.so.2.1. That file should be a symlink to the actual specific version that implements the 2.1 spec, such as libfoo.so.2.1.5.95-35b. When a "better" implementation of the .so library is released, the symlinks can be updated to point libfoo.so.2.1 to the new libfoo.so.2.1.6 library.

      The assumption is, whoever revectors that libfoo.so.2.1 symlink to point to a newer (or older!) implementation version will ensure that the new implementation is 100% compatible with the 2.1 "spec", whatever that is, including continuing to support bugs in the 2.1 implementations that some applications rely on or have workarounds for that will break when the bug is removed.

      Some have suggested reversing the bind convention so that programs bind to the most specific version number of so's that they need, which can be revectored via symlinks to the implementations that support what they need. In practice, this only makes matters worse (by increasing the number of "versions" and symlinks) and in the end you have exactly the same problem - which implementation will work with this program?

      None of the library management proposals on Linux or on Windows successfully deals with the problem of bozo developers (or bozo distros) deploying libraries with the wrong version numbers. The latest KDE deploys a stripped down version of the QT library, using the same filename (version) as the full-featured QT library. That causes all sorts of pain for apps that require the "real" QT lib.

      Same goes for libgd.so. At some point, the developers of libgd.so decided to drop all GIF support from the library. Fine, whatever. But did they rev the library version number when they did that? No! So if you've got an app that wants to use the GIF functions in the old libgd.so, that app can't run in the same environment as an app that wants to use the new libgd.so's completely different PNG replacement functions. Total idiocy! At a minimum, the non-GIF rev of the libgd.so should have bumped the version number to the next whole number, indicating a major revision that might not be backwards compatible. That's what they were supposed to do, and if they had then old and new apps could run side by side using the old and new libgd.so implementations.

      -mazor

    4. Re:Is there a real solution to this? by rseuhs · · Score: 1

      Yeah, just wait for the distributions to catch up.

      (I think this is rather straightforward and - compared to Windows - quite easy)

      Roland

  250. Interesting Anecdote by dasunt · · Score: 1

    This thread reminded me of an interesting anecdote.

    Once, I installed ADOM (Ancient Domains of Mystery, a Roguelike) on a Linux (RH 6.2), Win98SE, DOS 6.22, and a Win3.11 machine (triple boot). The machine was an old 486 80mhz with 32 megs of memory.

    As a normal user (not root) ADOM crashed so bad that it destroyed linux's ext2 partition, forcing a wipe and reinstall of linux. Of course it didn't do it right away, but after a random period of time after the game started.

    Under win98 it also had the habit of crashing after awhile, but didn't destroy the file system.

    Under DOS, it would crash, but the file system was okay upon reboot.

    With win3.11 running on top of the DOS installation, it ran perfectly, without a problem.

    Now the same binary was used for win3.11/DOS/win98SE. Win3.11 was installed in the same partition as DOS 6.22. Linux (of course) had its own binary.

    To add to the confusion, it runs stable on two other win98SE computers (both K6-2's).

    Anyways, it gave me an interesting perspective on "stability" of certain OSes.

  251. sharing shared libraries by gelcaps · · Score: 1

    why not implement the gnutella protocol so that all machines connected to the net can grab libraries defined as sharable on other machines around it? it'd reduce overall traffic and frustration.

    --
    --- it's pelvis to be cube
  252. This is one place where IBM might help out? by blooflame · · Score: 1

    Some time ago there was a question about what IBM could do to help the Linux community, since they are aggressively promoting Linux these days. As a systems programmer for an OS/390 mainframe, I've used their System Maintenance Program/Extended for many years. This is a program that coordinates installation of software and fixes. One of the things it does is prevent installation if co-requisite requirements are not met. Of course, to do that it also maintains records of everything that is installed. This makes my life much much easier, believe me, so it occurred to me that maybe IBM could help the Linux community quite a bit by applying their experts in this area to the problem of managing software installation and maintenance on Linux.

  253. Re:uh oh by Zocalo · · Score: 1
    Both difficult solution (install both library versions)

    I'm not so sure about the "difficult". I have an RPM based Linux disto running as a combo "server" and "desktop" (need another box). There are currently just three library glitches I am forced to resolve by installing multiple versions; it's due to drop to two "real soon now". Two of these were solved by running

    • rpm -Ivh xxx.rpm
    on the newer package having installed the older version first. The other was a simple
    • make install
    after a successful compilation.

    I suppose if that is classed as "difficult" that says positive things about Linux usability though. ;)

    --
    UNIX? They're not even circumcised! Savages!
  254. Wait, I'm confused by blonde+rser · · Score: 1

    are you guys saying that it is possible to install programs that aren't in a red carpet channel? Well that's where your problems are coming from. As long as I stay safely in my little redcarpet room everything is find - plus I get apple sauce twice a week.

  255. Re:Installing Free Software by jsse · · Score: 2

    I double-click on it to uncompress it.

    It's installed!

    Binary packages like Redhat RPM and Debian DEB does that, but I know what you mean is automatically compiling tar package.

    Really, it could be done. Double click the tar file, then system then run Configure and if there isn't any error make all. That's a thought.

    It's as easy as writing a TCL/TK front end and do some exception handling from Configure and make. I'm sure it'd be much useful to incorporate this capability in Gnome or KDE desktop. Also, it'd be better to have security check in the process.

    Good idea, let me think about it.
    &nbsp_
    /. / &nbsp&nbsp |\/| |\/| |\/| / Run, Bill!

  256. Shared code, DLLs &c by os2fan · · Score: 1
    So OK, I'm not a programmer, I'm an end user.

    The whole idea of external libraries was so that programs could share code or minimalise system load. This is as true whether you think of DOS overlays, OS/2 DLLs, or whatever. The notion is already present in C (with header files). For example, under DOS, there is no reason, why say XTREE and NC could not be merged to provide different file management interfaces, and shared file viewers. This could be extended to a generic command line utility that simply views the named file.

    When you set up an API for third party use, you are inviting other people to use your routines. Since they will call your library and use it with certian expectations, then it is up to you to meet your end of your deal.

    You do not need to update the dll every time you update the product - look at VBRUN?00.DLL for proof of this. But if you have a DLL like, say, MFC42.DLL, where some programs use vers 4, and others use vers 6, then there is a course for concern.

    This is probably a bigger concern for the open source vendors than the closed source vendors, purely because the former have a much faster release rate. For example, the EMX package for OS/2 is at 0.9e or something. Some programs have a minimal requirement, like 0.9c. But it is not beyond some future version to become incompatable with an earlier program. And then one has to run either the earlier or later version.

    An alternate version would be to design some interfaces which users could put together different files. This sort of thing is used by File Commander/2, ZTBold, Object Desktop, which load external utilities seamlessly. So you do not need separate libraries to open ZIP or RAR or CAB files in these utilities. What you do is to have a dedicated ZIP or RAR or CAB utility, which programs can open, display and use seamlessly. Adding a new archive should be as easy as entering the name of an INI header to the ARCHIVES list.

    One can use libraries intelligently, to minimise the amount of loaded and stored code. The power of the unix pipe is due to its ability to thread together divers peices into a meaningful thread. The open software market has the room available to create intelligent libraries that may be used by diverse programs. Exploit this window of opportunity.

    --
    OS/2 - because choice is a terrible thing to waste.
  257. just FTP the libs! by budgenator · · Score: 1
    Why not just FTP the libs? no not the 24Mb srpm's that those of us not on broadband find almost impossible to download intact, but the actual libs needed for the dependencies. My biggest problem has been finding the libs, sure its easy to find where the whole Gnome download is, but the thing is huges and I just need to satisfy a couple of dependencies!

    Things have gotten so large maybe developer should consider not only posting the obscure and hard to find libs on their site, but all of the dependent libs breaking up the apps into sub-modules that can be downloaded in chunks and unpacked into the directories. ( or at least links to them)

    What developers need to do is occasionaly download the app and compile on a clean machine, one that has an out-of the box version of LINUX and see if its still do-able with their tarball and links before declairing it stable.

    --
    Apocalypse Cancelled, Sorry, No Ticket Refunds
  258. Libraries: Harken to the Bad Old Days by localroger · · Score: 2
    Once upon a time there was this guy named Linus who had a Better Idea, which was to take this well tested OS built for mainframes but generally thought too complex for the desktop and put it on the desktop. And lo, Linus succeeded (with a lot of help from a lot of his friends), and we have Linux.

    We also have desktop machines that are much more powerful than the mainframes on which Unix was first driven. Some of the space-saving strategies that seemed like a Good Idea (tm) then now seem like really Bad Ideas (tm) now. Kinda like what happened to a certain closed-source software company we could mention.

    I would also mention that an associate of mine who gets front-updates on what That Closed Source Software Company (tm) is doing has told me that their .NET strategy includes a number of actual intelligent moves. One is the removal of the Variant type from the Visual Studio suite. And if that doesn't seem like a good enough idea to you, then the next will really floor you -- applications will keep their own .DLL's in their own application directories. Just like in the DOS days, you will be able to blow an app completely off your machine by deleting its directory, and version differences will become irrelevant.

    Sounds like a good idea to me. Maybe youse linux guys should like thinka implementing something like this before the Redmond Juggernaut gets up another head o' steam.

    --
    Brackets contain world's first nanosig, highly magnified:[.]
    1. Re:Libraries: Harken to the Bad Old Days by shiftless · · Score: 1

      What? I have a 3 gig drive. Unlike the apparent majority of computer users, I can't afford to run out and buy a new hard drive when I run out of space, so I use my available space as efficiently as possible. The idea of maintaining separate copies of DLLs for each application defeats the entire purpose of DLLs to begin with (code sharing with advantages), and is a sloppy approach as well. This is a fix, not a solution. There's a difference. We can't have 100 copies of the same DLL floating around on a hard disk and simply write it off as correct because there's plenty of storage space to waste, regardless of how much extra space we have. No self-respecting system designer or programmer would ever do something like that.

    2. Re:Libraries: Harken to the Bad Old Days by arQon · · Score: 1

      There are two sides to this quality thing though. The latest version of FooBar requires a newer Wingbat. So I install that, and poof - all of a sudden, YooHoo develops subtle failures, or crashes a bit more often than it used to, because YooHoo is linked against libWingbat.1, which is now symlinked to 1.5 rather than 1.4.
      That kind of thing has happened WAY too many times. I think it's SLOWLY improving as developers get more of a clue, but even the last install I did a couple of months ago took a day or two to get everything patched up and using the right libs, which Joe Average totally isn't going to be up for.

  259. Re:It seems to me that.... you don't use urpmi by buchanmilne · · Score: 1

    In most cases, unless you are using software noone else uses, you can sort things out by using urpmi. If urpmi knows about software you newly downloaded rpm is dependant on, it will take care of it, and ask you when it doen't know for sure.

  260. The answer is.... by Mike+McTernan · · Score: 1

    ...STATIC LINKING!!!!

    Disk space is cheap and computers are powerful. Why bother with libraries except in some extreme cases where the benefits are suitably huge?

    I'd prefer 30% less free disk space and RAM for greater ease of install/uninstall and greater reliability any day.

    --
    -- Mike
  261. Standards are a good thing by zerofoo · · Score: 1

    That's great, we'll inovate until nothing works together. Part of inovation is interoperability. Can you imagine if the IETF decided on many incompatible implementations of TCP-IP? Standards, when well thought out and implemented through peer review are a wonderful way to insure that your app works with everyone else. The problem is not standards, but the lack of peer review and approval. -ted

  262. Re:What a stupid f*ckin story... by zerofoo · · Score: 1

    Amen brother!

  263. what's the problem? by tplayford · · Score: 1

    Just use debian! All the libraries are taken care of for you! apt-get install gnucash done!

  264. Re:[offtopic] by Ayende+Rahien · · Score: 2

    Well, NIS to US-Dollars is roughly 4 to 1 (4.15 to be exact)
    So you've about 1 dollar (0.96, to be exact)

    I like being exact :-)

    --
    Two witches watch two watches.

    --

    --
    Two witches watched two watches.
    Which witch watched which watch?
  265. Re:uh oh by EastCoastSurfer · · Score: 1

    Actually, I am pretty sure that starting in win95 the app first goes to its local directory then to the windows/system directory when loading dlls. Any local version you needed just had to be in the same dir as the app and that would be the one it used. Otherwise it would go to the system directory.

  266. Re:uh oh by ByTor-2112 · · Score: 1

    Don't like glibc? Run FreeBSD. Compare the size of glibc to the size of the BSD libc. Not even in the same ballpark.

    For a FreeBSD developer to introduce non-backwards compatible changes is a cardinal sin. I doubt you would find more than a handful -- if any -- of instances where you needed both the old and new C libraries for any reason other than old apps linked against the old lib.

    This is the kind of thinking you get when the kernel, libs, and userland tools are all reviewed by the same people. With FSF, each project is doing their own thing and breaking each other's software. NOT GOOD.

  267. Re:uh oh by ByTor-2112 · · Score: 1

    I think you miss the point. BSD includes new optimizations, functionality and everything else. All of that without breaking compatability. And as for the size, I was referring to the size of the source, not the compiled library (although the two are related).

  268. The problem with DLL's by Strangely+Unbiased · · Score: 3

    As a Windows coder myself, I know a fair bit about DLL, and I know it's not the way they work that's causing the so-called Windows 'DLL-hell'. It is the fact that Microsoft allowed programmers to include core windows libraries with their programs to ensure compatibility (and those programs could replace the windows ones too). Sure, its cool to keep your exe size down by using a few system libraries dyn-linked, but most people think its better to shove all these libs into their installer than static-linking (i personally like to build one or two-file apps). DLLs have their use (e.g when you want your program to be easily upgradeable, or as plug-ins), but people you don't have to use them. It's not cool, its confusing and it serves little purpose.

    And all this DLL hell stuff...I haven't met with a single DLL problem since Win95(i havent met any problems on linux either)...And WinXP will have even better core DLL protection and stuff...

    By the way, one really (seemingly)cool thing about .NET programming is that you can use the .net dlls to access a huge number of cool .net functions for RAD programming.We shall wait and see though...


    --


    There is no such thing as 'world peace'.
  269. Microsoft has already fixed this. by slashdot.org · · Score: 2

    sound of fanfare
    Look at this page: http://www.microsoft.com/windowsxp/pro/guide/featu recomp.asp.

    Under 'Side-by-Side DLL Support' you will see that this is been fixed in Microsofts latest state-of-the-art Operating Systems already.
    /sound of fanfare

    Effectively nuking the whole idea behind DLL's of course, but then again, they started of with putting the least used functions in DLLs and not the common stuff in the first place. So who cares...

    The from the complex-software-causes-complex-problems dept. makes me choke though. Pulease...

  270. Linux Shared Libraries offer more choices by Xahmish · · Score: 2
    Applications like Gnucash are critical to make Linux appealing to the desktop user. It's a challenge, though, even for a seasoned user to upgrade to the latest applications and deal with missing dependencies and broken dependencies.
    1. Download the latest package of Gnucash-1.6*.rpm.
    2. Do a test install to see what else is needed.
    3. Search for the packages that have the required libraries.
    4. Download those packages and do a test install to see what dependencies are missing for them.
    5. Perform a few more iterations of the download and test process until all the dependencies of the dependencies are satisfied
    6. Try to see if the existing libraries can be updated.
    7. End up force installing everything after doing my best to make sure nothing will break.
    8. Keep my fingers crossed.
    There is nothing wrong with having lots of shared libraries in Linux. The more, the better. Disc Space is cheap. The only thing that gets me cranked is when the latest, bleeding edge application has a dependency on an older library. So, when I upgrade to Gnucash-1.6, I have to "downgrade" to python-2.0 because gnucash wants libpython2.0.so.0.0; libpython2.1.so.0.0 just won't do the trick. Well if upgrading apps on Linux ever became simple, I would have to switch to another OS to satisfy my craving for high risk sports. At least I can have multiple versions of a shared library co-existing more or less peacefully. I can remember the version conflicts and DLL hell that I dealt with before I learned about Linux and I wouldn't ever want to go back to that.
  271. Re:uh oh by rseuhs · · Score: 2
    Yeah this is slashdot. And the "I am SOOO fair and SOOO objective and Microsoft isn't that bad after all"-apologists are in the majority by now.

    But OK, let's compare DLL-Hell to shared library hell:

    Windows: No easy solution available, you can't have two versions of DLLs at the same time. If the new version breaks something, too bad.

    Linux: Both difficult solution (install both library versions) and easy solution (just wait for the distributions) available.
    With Windows there is no distributor who will help you out of the hell, with Linux... well that's exactly what distributions are all about!

    So please stop whining. It's embarassing how you Microsofties try to show Linux' disadvatages just to reveal even more advantages.

    Roland

  272. I just want to know that they do by m_evanchik · · Score: 1

    What's really important is that the libraries' (in win or lin) functionality is well defined. When you have no idea what it's supposed to do, that's when you can't keep your set up clean. Libraries, used right, free up memory and ease development. Done wrong, they cause a big mess. There should never be anything on your system that you don't know what it does.

  273. shared libs are not a problem by tbee · · Score: 1

    As long as a decent versioning system is used, things should be okay. I'm not a Microsoft fan, but the idea they have with the automatic versioning of the .Net libraries they intend to distribute, seems the way to go. You can have this huge (it always will be huge ;-) tray of libraries. Multiple versions living next to each other, and an applicatie just request a certain library. Minor updates are backward compatible, major are not. You can have a "last used" setup to decide if any library might be flushed. Of course every library that ever existed on your system should be remembered and be available over the internet, so it can be restored when required. If you're not into huge trays, then don't use share libs at all, but have each app take their own copy. But that will be huge also, and also troublessome to manage. I vote for the 1st option.

    --
    Tbee (or not?)
  274. keeping it simple... by CaptTrips · · Score: 1
    Since Windows supports the Joliet file naming system that allows up to 64 characters with
    spaces and multiple uses of periods, couldn't developers copy all DLLs for their apps,
    rename them as something else like <name>_V5.DLL and install them all into a Vendor
    folder off of the SYSTEM folder? If the original reason for overwriting DLLs was based of
    HD space, look at the HD sizes we have now a days. Most people have 20 GB and many more have 40, 60 and even 80 GBs. There's no reason not to give DLLs a type of version naming schema.

    Of course I'm probably way off on my assessment of the situation...

    ----
    Capt' Trips

    --

    grep >= ! == $your
  275. Fixing library management by Thurn+und+Taxis · · Score: 1

    The problem here is library management. Library management is currently handled by ldconfig, ldd, etc. Since ldconfig handles shared library dependences, only one particular version of a library (e.g. libGLU.so.1.3) is available to *any* program that links with libGLU.so, or libGLU.so.1. The problem you run into here is that different programs may require mutually incompatible versions of a particular libary -- but ldd resolves them all to a particular instance of the library. What we need is a version of ldconfig that allows for specific exceptions -- e.g., if ld.so.conf can specify "GnuCash uses /usr/local/lib/gnucash/libc.so.5", then the problems are easy to fix. Caveat: I haven't looked closely enough at ldconfig to determine if it already does this or not. If it does, good for the developers! If not, adding this functionality would solve some potential problems. However, I should add that if every linux program installs its own version of shared libraries, then we're no better off than the windows DLL situation....

    You ARE the Missing Link. Goodbye!

    --
    On stereophonic equipment, the monaural sound obtained through multiple channels will enhance your listening pleasure.
  276. Debian != smart by Flying+Headless+Goku · · Score: 2

    apt-get, dselect, et al will cheerfully rape your system when you ask for unstable software, replacing all your nice stable shared libraries and even your nice stable software with broken development versions. Never mind the security issues with running a black-box install that fetches software from the internet.

    There is a "Yes, but...", however, it is fully as complicated as just managing the packages by hand.

    Nothing should ever need to be "installed" to be run. Much less should it require dozens or even hundreds of files for the run-time alone, unless they can be kept neatly segregated into a single exclusive directory which can be "uninstalled" neatly with an rm -r .

    I think the very idea of shared libraries is a bad one. It encourages promiscuous linking and immense run-time bloat. My view is that it is an attempt to treat the symptom (static linked executables would be too big) rather than the disease (they're too big because they're full of whatever garbage you could shoehorn in).
    --

    --
  277. Re:Linux Descending into DLL Hell? by certsoft · · Score: 1
    Nicholas Wirth's Modula-2 addressed just this issue. Once the interface of a module was defined the implementation could be changed without the clients be recompiled or even aware of the change itself.

    It's called Delphi.

  278. Re:Installing Free Software by Tachys · · Score: 2

    When did I say anything happens behind the scenes?

    The point of my proposal is nothing happens behind the scenes. It just works

    I can install apps like this in Mac OS and Mac OS X.

    Also, in the Mac OS a "clean install" involves just replacing my system folder. You should have seen the look on my face when I found out what a "clean install" on Windows involved.

  279. Uninstalling Free Software by Tachys · · Score: 2

    One thing I forget to mention in my post

    The uninstall process

    I grab that folder put it in trash can and delete it

    It's uninstalled!

    Many having been talked about Debian's apt=get. I am actually planning to try Debian soon.

    How would I uninstall something in Debian?

  280. Installing Free Software by Tachys · · Score: 4

    It always seems to me that Free Software could get an edge with ease of installation.

    Installing propertary software requires putting in a serial number and then install some updates.

    But with Free Software I can always get the latest version, and no need for serial numbers.

    But installing apps on Linux more difficult then Windows.

    When I want to install something what shoud happen is

    I download it tar file.

    I double-click on it to uncompress it.

    This shows a Gnucash folder.

    It's installed!

    I can go in the folder and open Gnucash.

    I can then move that folder where I want it.

    Why can't Linux do this?

    1. Re:Installing Free Software by klui · · Score: 1
      FreeBSD's port system provides a way for you to compile a program along with all its dependent programs/libraries. i.e. if you want to make Mozilla, just

      cd /usr/ports/www/mozilla

      make

  281. One wrong fact by jdavidb · · Score: 1

    No, UNIX has been around longer. Since ca. 1970, in fact. (Was Gates even born then? I wasn't.)

    You do know Linux is basically UNIX, don't you?

    UNIX was about as near to open source as possible when it first came out. You bought the source code on tape and figured out how to port it to your hardware yourself.

  282. What do you mean "sell"? by jdavidb · · Score: 1

    Now, when you say, "sell," do you mean I get the intellectual property rights?

    Oh, yeah, this is software. Never mind. Selling means the seller still owns it and the buyer gets a warranty for the physical media.

  283. Good ideas, but I don't like LD_LIBRARY_PATH by jdavidb · · Score: 3

    if incompatible libraries are found, the installation process should wrap its binaries in scripts which set LD_LIBRARY_PATH to the necessary compatibility libraries (/usr/lib/compat) -- and they should be linked to _specifically by version_, so that different versions of compability libraries don't fight with each other.

    Excellent plan. Just so everyone knows, though, LD_LIBRARY_PATH is rarely needed. In this case, it is only needed because the binaries are precompiled. If you ever have to set LD_LIBRARY_PATH, the software should be recompiled correctly!

    Neat eye-opening information about LD_LIBRARY_PATH can be found at Why LD_LIBRARY_PATH is Bad

    I don't think we're going to see anything analogous to the DLL problem because most shared libraries use explicit versions. But I would love to get rid of the madness of being told to set LD_LIBRARY_PATH to run software I just compiled! All you have to do is set LD_RUN_PATH during compilation. (See that link!) One notes that Perl's MakeMaker system always sets LD_RUN_PATH appropriately when compiling an extension module.

  284. Windows and Linux Hell by Bastard0 · · Score: 4

    When I think of Linux applications I think of lean mean server side programs with no fluff. No paperclips popping up to tell me what to do just a few text based config files and raw power. That's how I like it. When I think of Windows I think of powerful feature rich desktop applications (Quicken, Word, Cubase). The interesting thing is that as Linux is beginning to tread into the desktop arena its starting to face some of the same problems that Windows has gotten a lot of flack for. As you add features you add complexity and increase the size of the code and increase risk of some kind of flaw or failure. Windows is more bloated/unstable/convoluted because it has so many features. Just look a GNOME. That thing is a true monster which looks like its just going to continue to grow. Frankly I haven't seen one desktop application / user enviornment (including GNOME) on Linux that isn't 10 years behind a comparable application on Windows. Don't get me wrong I love linux I just don't see a point putting it on my desktop.

  285. The solution is easy by Achilleas · · Score: 1

    just put the 'shared' libraries which cause conflict in another directory.

  286. How dependencies set, anyway? by buglord · · Score: 1

    I was wondering about this when working with the ximian packages and evolution on my debian box.

    Say I have package x, which needs libfoo-1.0.4-2, installed. I would like to install package y, but that needs libfoo-1.0.4-5.

    Of course I could force the installation and hope it works out. But I can't be sure that libfoo-1.0.4-2 supplies the same functions that libfoo-1.0.4-5 does.

    The problem here is that differences are made solely by the version numbers - and these can be arbitrary. What we really need is an intelligent package management system where packages query each other on function level, making sure the proper functions with proper signatures are available.

    That way it wouldn't matter if I have libfoo in the version 1.0.4-2, 1.0.4, or 1.0.4-7-ximian.

    --
    -- sigs are like parking spaces - all the good ones are occupied
  287. Re:Much easier ways by Kowalski-Two · · Score: 1

    Who is "Quicken". Perhaps you meant Intuit ??

  288. Linux Descending into DLL Hell? by lnclt · · Score: 2

    This is a serious problem that should be addressed. An answer has existed for quite some time but requires some compiler re-tooling. Nicholas Wirth's Modula-2 addressed just this issue. Once the interface of a module was defined the implementation could be changed without the clients be recompiled or even aware of the change itself. I am not advocating switching from C/C++ to Modula-2 or it's derivatives. I am suggesting that someone create a hybrid that melds the terseness of C with the separation of Interface/Implementation of Modula, Modula-2, Oberon so that we can ascend out of hell.

  289. Microsoft's patent applies by akonstan · · Score: 1
    I remember a while back, ./ flamed microsoft's patent what posters thought were soft-links. A closer reading of the patent showed anyone who cared that what th ey were patenting was a method permitting the OS to keep dynamically a single co py of repeated identical file blocks. This technique could be applied to solve t he DLL hell problem efficiently. Every application includes its own DLLs in the installation. The OS automatically figures out that some of them are replicate d and keeps only one copy of the block.

    If some application is upgraded, then the OS will detect a change in the file an d remove that particular instance from the shared data block. This technique ca n be applied both to memory, as well as to disk storage therefore completely sol ving the problem, efficiently and with zero configuration (because it is done dy namically).