From xemacs-m  Wed Jul  2 22:41:57 1997
Received: from firewall2.Lehman.COM (firewall.Lehman.COM [192.147.65.67])
	by xemacs.org (8.8.5/8.8.5) with ESMTP id WAA12808
	for <xemacs-beta@xemacs.org>; Wed, 2 Jul 1997 22:41:56 -0500 (CDT)
Received: (from smap@localhost) by firewall2.Lehman.COM (8.8.5/8.6.12) id XAA06214; Wed, 2 Jul 1997 23:41:53 -0400 (EDT)
Received: from unknown(146.127.39.20) by firewall2 via smap (V1.3)
	id tmp006203; Wed Jul  2 23:41:46 1997
Received: from cfdevx1.lehman.com by relay.lehman.com (4.1/LB-0.6)
	id AA22731; Wed, 2 Jul 97 23:41:44 EDT
Received: from localhost by cfdevx1.lehman.com (4.1/Lehman Bros. V1.6)
	id AA29613; Wed, 2 Jul 97 23:41:43 EDT
Message-Id: <9707030341.AA29613@cfdevx1.lehman.com>
Reply-To: Rick Campbell <rickc@lehman.com>
X-Windows: The Success Disaster
Organization: Lehman Brothers Inc.
From: Rick Campbell <rickc@lehman.com>
To: Martin Buchholz <mrb@eng.sun.com>
Cc: acs@acm.org, XEmacs Beta List <xemacs-beta@xemacs.org>
Subject: Re: Solaris dynamics? 
In-Reply-To: Your message of "Wed, 02 Jul 1997 18:10:01 PDT."
             <199707030110.SAA01677@xemacs.eng.sun.com> 
X-Pgp-Version: 2.6.2
X-Pgp-Signed: iQCVAwUBM7sfa1tTztlqB385AQEwIgP+NXXmtQsh7jLDdZ5qFO68/61mRAv0xc8b
	      wAco7mP6aZZMRGyS2XbTSBxQxS4VCrtKEniIiAAkZ1bJ/TZQbofl0eQHx2lXOKqI
	      hsa/G9V6wWXken5umTk1EpnIygAr7lqWHZgwXFKo9pjvantcWvCPs8UReim0hfz3
	      7mdKHGw8Sns=
	      =JQZ4
Date: Wed, 02 Jul 1997 23:41:37 -0400
Sender: rickc@lehman.com

I want to apologize up front for the tone of this message.  I'm still
sending it out as is, but my rambling ranting is really not aimed at
you, but rather at the collective decisions of your firm.

    Date: Wed, 2 Jul 1997 18:10:01 -0700
    From: Martin Buchholz <mrb@Eng.Sun.COM>
    
    Most Unix vendors are moving away from static libs, and starting to
    provide only dynamic libs.

That's a real shame.  I like to have the option of delivering
executables where I know what will execute at run time.  Espcially for
programs where security is a top priority, dynamic loading represents
a class of attacks that it would be nice to avoid.

    In theory, . . .

Those are two *very* big words.

    . . . everything should work fine if you build your binaries on
    the oldest OS you want to run on.  Those binaries are then
    pseudo-guaranteed to run on more recent OSes as well, as long as
    the major version number is not incremented.

The caveats here are interesting in and of themselves, but it simply
amazes me that now the *recommended* mechanism is to try to find the
oldest environment possible to do your builds.  This should be an
indication that maybe this concept isn't really worked out very well
as yet.
    
    You can't build completely static xemacs binaries on Solaris, by
    design.  You're not even supposed to try.  I understand Sun's
    motivation, but I would have provided static libs anyways, for those
    users who know what they want and know what they're doing.

I wish that your sentiment held more sway.  I don't think that dynamic
libraries are a bad thing in all situations.  In some situations
they're a really good idea.  However, eliminating the option of static
linking altogether is an incredibly bad idea.  At the very least, some
more kinks should be worked out of the system.  For example, if I'm
going to be forced to deal with dynamic loading, I should have the
run-time option of saying ``go ahead and use old versions''.  I'm not
suggesting that such things don't have problems by themselves, but
having the program crap out unconditionally encourages some *really*
sloppy practices -- like the ones that I had to use to get XEmacs to
run.  If I can lie about the version numbers using symbolic links and
LD_LIBRARY_PATH, I'm ending up with the same effect as if I could run
the executable in ignore-old-version-numbers mode.

I find it interesting that when I download stuff from sunsite for
solaris, it normally won't run unless I rootify and create a bunch of
symbolic links in protected directories.  With static linking, you can
distribute an executable with a much higher confidence that it will
actually run at the delivery site.
    
    I build XEmacs for use by others exclusively on 2.4.

Hmmm....  A lot of the machines at my site are still running 2.3.
Hell, most of the machines at my site are still running SunOS 4.1.3.
My sense is that Sun is very quickly earning a reputation as a company
that won't stand behind their old products.  They make major changes,
proclaim them to be The Right Thing, and then walk away from you if
you don't agree.  Much as I hate Microsoft, even they don't pull that
kind of crap.

    I use 2.5.1 and 2.6 exclusively for random (non-configure-related)
    hacking, just because they're better OSes.  You just have to keep
    some crufty old machine running some crufty old OS around for 5
    years or so.

Well, as far as I know, 2.6 isn't available to me yet, but I run 2.5.1
at home and in the office . . . on the machines that have moved to
Solaris.  As a developer, I normally take the view that I should be
trying the newest stuff out before sicking it on my users.
Unfortunately, under Solaris, it seems like I've got to be running the
oldest thing available so that my users can actually run what I build.

			Rick

p. s.  I've recently heard that Sun's latest Right Thing is that you
       shouldn't run a debugger directly, but rather, you should only
       run it as part of an Integrated Development Environment (of
       their choosing).  Also, they've apparently decided that for C++
       development the IDE is a higher priority than catching up with
       the language standardization.  If Sun's our last best hope
       against the Borg, er, Microsoft, we're doomed.  Right now, the
       Linux and Free BSD efforts are the only things looking sane.

