[haiku-development] Re: software organization/installation

  • From: David McPaul <dlmcpaul@xxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Mon, 16 Feb 2009 10:28:51 +1100

On 2009-02-16, Jonas Sundström <jonas@xxxxxxxxxxx> wrote:
> David McPaul <dlmcpaul@xxxxxxxxx> wrote:
>  ...
> > Unfortunately,developers are unable to
> > create shared libraries that maintain
> > backward compatability and it is too easy
> > to replace a newer version with an older
> > version and so break apps.
> >
> > Having 1 directory for all libraries leads to dll hell and without a
> > good installer, dependency hell
> > Having a library folder per application wastes some disk space but
> > the
> > user and developer knows that the application will just work out of
> > the box.
> >
> > If the library needs updating then the developer is likely to release
> > a new version with the new library after appropriate testing.
> >
> > The end user is also welcome to run a query to find all locations of
> > the library, replace them with whatever they found on a russian web
> > site and cross their fingers. :-)
>
> How can a user (or a package manager) know, before-
> hand, without trying, which later/earlier versions
> of a library will work for a certain application?

With great difficulty.  In the windows world I have had to track down
a newer version of some library that an application needed (and by
need of course the app would crash without it).  It is not an approach
I am recommending, I raised it because I think that libraries should
be updated via the application not by the end user just because some
new library version is out and it is so shiny.

> This ever-shifting landscape is why I think out-of-band
> metadata and dependency updates are a necessity.
>
> Could a package manager alter a package, switching
> between using private and shared libraries?
> (Depending on what's best for the software collection
> as a whole, maybe.)
>
> Can't shared libraries be versioned and applications
> semi-firmly tied to a version, for as long as that
> version is the recommended version?

I remember the Amiga library system was like that, you opened a
library with a version number as the minimum version you required and
the copyversion command would not replace a library if the new one was
a lower version.

Microsoft with .NET has moved to this standard as well (Sing along,
everything old is new again).  Anyway, all versions of .NET libraries
are available so an application is always tied to a library version.
I think they go one step further and sign the libraries with the
version as well but they are a paranoid bunch.

-- 
Cheers
David

Other related posts: