Re: Don't install a different version than you promised!

[prev] [thread] [next] [lurker] [Date index for 2005/05/26]

From: peter (Peter da Silva)
Subject: Re: Don't install a different version than you promised!
Date: 15:16 on 26 May 2005
> As an aside - releatively recently

Decades.

> I've heard more than a few people
> (both here and in other forums) complain that dependencies (and hence
> shared libraries)

Shared libraries are implementation, not design. Back in 1979 I
was working with some other guys at Berkeley trying to run some
software that came out of the Tufts software distribution. We
couldn't get it working without a bunch of work because they included
some of it as object files that you had to link in, and THOSE files
depended on some custom system calls they'd put into PDP-11 UNIX.

Not a "shared library" in sight.

> are a bad idea,

Well, not "are", but "can easily become". Especially if they're
not identified. I've spent six week shaking down and integrating
the dependencies in one package on Red Hat, and even when I decided
to just duplicate the existing system it took two more weeks to
put together an install script that actually worked on a virgin
Red Hat system.

> especially if they don't control them. 

If you control them, you're not dependent on them. The Excel compiler
was not a dependency for the Excel team, even if it was a dependency
for the Excel code.

> I'm always intrigued to hear whether they advocate static libraries, or 
> just not-invented-here or whether they have a new, entirely shiny and 
> different way of doing things. 

I advocate IDENTIFYING dependencies and, WHERE POSSIBLE, eliminating
them.

That doesn't mean "don't use anything anyone else wrote", it means
"write robustly portable code". One way of looking at portability
is that portability is all about identifying dependencies and
eliminating them. You isolate non-portable code behind wrappers,
you #ifdef or otherwise selectiveley reference code or other objects
you _may_not_be_able_to_depend_on_ being there, you provide hooks
for extensions but you don't break if they're not used, you provide
stubs or workarounds for missing functionality, and when you get new
tools you leave the old mechanism as a fallback... at least until
you _can_depend_on_ being able to use the new one everywhere.

There's stuff above here

Generated at 21:00 on 27 May 2005 by mariachi 0.52