[Date Prev] [Date Next] [Thread Prev] [Thread Next] Date Index Thread Index Search archive:
Date:Mon Mar 22 19:49:53 2000 
Subject:forwarding message from Jonathan Cunningham (with comments) 
From:A . Sloman 
Volume-ID:1000322.01 

The message below from Jonathan did not get through the mail->news
gateway. Previously I thought the problem was having pop-forum in the
Cc: line. But that can't be the explanation in this case.

Maybe the gateway has stopped accepting any pop-forum messages posted
from outside this domain. So lets see if this one gets through to
comp.lang.pop

Apologies to those who have already seen the message.

I'll add some comments on Jonathan's message at the end. Search for the
second row of "=" signs.

=======================================================================

From: "Jonathan L Cunningham" <jlc@sofluc.co.uk>
To: "popforum" <pop-forum@cs.bham.ac.uk>
Subject: Re: Running Pop-11
Date: Wed, 22 Mar 2000 12:29:58 -0000

>There is no official minimal set.  This is what I use with
>no problem however.
>   usepop, popcom, popsrc, popsys, popexternlib, popobjlib, popautolib,
>   popdatalib, popliblib, poppwmlib, popsunlib, popvedlib, poplocal,
>   poplocalauto, poplocalbin, popcontrib, popsavelib, popcomppath,
>   popsavepath, popexlinkbase
>Note that poppwmlib, popsunlib can be omitted safely under Linux.


Yukk!!

I cannot believe there is any GOOD reason for twenty different
environment variables specifying directories(?) for one system,
however large.

And this is a "minimal set" ??

>It is also worth remarking that ALL of these can be given good defaults
>derived from $usepop.

Then perhaps they should?

Maybe you would then need to provide a mechanism which the terminally
insane could use to override the defaults, but such need not rely
on zillions of environment variables. Maybe something similar to
one of the pop11 based initialisation methods, previously discussed,
but which does not rely on environment variables?

Is there any strong reason why there couldn't be a fixed tree
structure, but which respected symbolic links ("short cuts" in
Microsoft terminology) if people wanted/needed to move part of the
directory structure around? Then no poplog mechanism/initialisation
would be needed for anything other than the root of the tree, in
a vanilla poplog. And you could even have sensible defaults for
that, in case $usepop has not been defined. Nowadays, I would
expect a "user-friendly" program which can't find needed
components (e.g. libraries) to make a bit of effort to locate them
for you, before giving up.

And if it can't find them, to ask the user if he/she knows. And to
remember the answer if they do.

Jonathan
=======================================================================

A few comments.

1. Poplog, unlike linux default mechanisms, was always designed so that
one can have more than one version installed simultaneously. So a new
version could be installed on a system for testing by experts and brave
people while the old version remains available for the rest. Later the
new version can replace the old one simply by adjusting some links.
I believe ALL except the most trivial software systems should support
that mode by which a system is updated (though I appreciate it is
impossible for operating systems etc.). In poplog it is achieved by
keeping EVERYTHING in one directory (though I prefer to keep
the local directory separate since that is normally shared between
old and new versions of poplog). Then removing an old poplog is just a
matter of recursively deleting a single tree.

Many package installation conventions which require different bits of
the package to be scattered around a file store make it very difficult
or impossible to have two versions installed at the same time. Thus you
either upgrade or you don't: no trial period is possible. I think that
is bad human engineering.

I know many people strongly disagree with me on this. So perhaps we need
different universes for the two styles of preferences!

The next comment is related to this.

2. I don't know all the reasons why poplog has so many environment
variables, but one reason they can be useful is if a common file server
is installed containing poplog for different architectures and operating
systems all of which cross mount the same system from the file server.
Then instead of everything being in the same default location in the
directory tree you can have different directories for the parts of the
tree which are architecture specific, e.g. $popsys, $popsrc,
$popexternlib, etc.etc.

Another reason is that these different environment variables make it
possible for an individual to do exploratory system development work
with changed versions of some of the directories without having to copy
the whole poplog tree. This was far more important 10 or 20 years ago
when file space was far more expensive and scarce than it is now: in the
early and mid 80s a whole department could be sharing an Eagle disk
drive with about 360Mbytes on it! Affordable Gbyte drives are quite
recent.

An alternative to having lots of environment variables in order to allow
parts of the directory tree to be changed for various purposes, while
sharing the rest, would be a mechanism for generating a copy of the
whole system made entirely of symbolic links to a "master" copy.
Then one could change bits of the copy by deleting the symbolic links
and replacing them with new versions of the files. (A variant of this
is actually used in the "master" development directory, at sussex,
which I've copied to
    http://www.cs.bham.ac.uk/research/poplog/src/master
where hard links rather than symbolic links are used.)

Some of the environment variables are needed only by people doing
development work or a system administrator who might need to relink
poplog. These should never have been included in thedefaults for
ALL users. To find out more about the different environment variables
and what they are for, see the comments in

	$usepop/pop/com/popenv

or, if you don't have poplog, look in

	http://www.cs.bham.ac.uk/research/poplog/src/master/C.unix/com/popenv

Certainly it would be trivial to put into $usepop/pop/pop/init.p
some code which, when poplog starts up, generates defaults for all but
the root directory $usepop, if the environment variables have not been
defined already. It would take only a few minutes to write the code for
that.

The one problem that that would not solve is using environment variables
to determine which saved image to run as defined in REF SYSTEM. That
requires the environment variables to be predefined. However you can
always define 'pop11' as an alias for 'basepop11 +startup' and 'clisp'
as an alias for 'basepop11 +startup +clisp' etc.

I don't know whether it is still necessary to add $popexternlib
to LD_LIBRARY_PATH on solaris.

Now, will this cross the mail->news gateway and get into comp.lang.pop

Aaron