Subject: Re: HEADS UP: migration to fully dynamic linked "base" system
To: Jason R Thorpe <thorpej@wasabisystems.com>
From: Johnny Billquist <bqt@update.uu.se>
List: current-users
Date: 08/27/2002 03:19:47
On Mon, 26 Aug 2002, Jason R Thorpe wrote:

> On Tue, Aug 27, 2002 at 02:53:51AM +0200, Johnny Billquist wrote:
> 
>  > I won't go into the question wether it's a good or bad design. It has it's
>  > merits, but it's still a hack.
> 
> By your labeling it a "hack", you are discounting it as something that
> wasn't designed with some thought put into it.

Admittedly, the elf shared libraries are a big improvement on the a.out
shared libraries, which is where my hack-label really comes from.
By now, a lot of thinking have gone into it.
But hacks *can* be well thought out and implemented. While a little
disparaging, it don't neccesarily need to be interpreted *that*
negatively.

> Networking wasn't part of the original Unix design.  Nor was the notion
> of having multiple kinds of file systems.  Because they appear in Unix
> now, are they a "hack"?

They definitely were at the beginning. /dev/tcp was a hack. Neat in it's
way, but it proved to be not-so-good.
After a number of iterations, and design into the system as a whole, I'd
hardly say it's a hack now.
File systems are the same thing.

I seem to like to express things a little provocative sometimes. I
apologize. I think that NetBSD of today is a rather nice system (for a
Unix system :-) and it's what I always try to end up with no matter what I
do, or where I go. And my impressions is that you've somewhat responsible
for this, so I owe you, and the other NetBSD developers, a big thank you.

> I'll admit that the way SunOS (and our own a.out) did shared libraries was
> a hack; all the magic for starting the dynamic linker was done in crt0, and
> was prone to error.  But when ELF came along, they defined an interface where
> the kernel provided assistance to the dynamic linker (the kernel maps the
> dynamic linker, and then provides additional info to it in the form of Aux
> vectors), which lives in userland.

Like I said, the main reason for my "hack"-label is the a.out solution,
and the fact that at the time, nothing better was possible.

> You might say it was specifically designed to put the complicated part into
> userland, rather than forcing it to live in the kernel.  This keeps the
> kernel's exec code relatively simple.

True.

However, the fact that we actually have to have all these
almost-compatible ABIs is in itself a proof that Unix is sortof a hack. It
shouldn't be like this, but now it is, and I suspect we'll never be rid of
it. (But I could always dream... :-)

	Johnny

Johnny Billquist                  || "I'm on a bus
                                  ||  on a psychedelic trip
email: bqt@update.uu.se           ||  Reading murder books
pdp is alive!                     ||  tryin' to stay hip" - B. Idol