At least I think we have come down to the basic area of disagreement.
Fergus Henderson writes (at an incredibly late hour!):

   There's nothing stopping the user from directly importing modules
   other than the gather module.  Indeed, the use of gather modules
   at all is just a convention.

Yup.  I believe this to be a good thing.

   I would tend to disagree, because if privacy is enforced by the
   language, then (1) the programmer can be sure that it will be
   respected and (2) the compiler can use the information to
   perform optimizations such as specialization and dead code
   elimination that otherwise might not be possible.

1) If the programmer is himself alone, then he can be sure he respects
   it himself; if the programmer is someone else, then different uids
   should work just fine.

2) The compiler can (and should) be intelligent enough to detect the
   importation of symbols only through non-functional (gather)
   modules.  This is not a big test to perform.

   > This should properly be left to the programming environment.  On
   > a Unix system, it could be implemented by granting group and
   > world read privileges only to the public gather modules.

   That doesn't work unless you use different uids when compiling
   different modules, which would be impossible in many situations
   and ridiculously inconvenient in almost all situations.

Not different modules; different packages, which is quite a different
thing.  Nor is it all that difficult to do; chgrp as part of the make
file works just fine.

   Perhaps, but standard configuration systems such as RCS and CVS
   don't provide that sort of control -- they only provide per-user
   access control similar to (and with the same problems as)
   Unix permissions.

RCS and CVS (at least the versions I have used) are very happy to
provide read access only to selected modules that are checked in to
the system.  Other users should not (and do not) have visibility over
checked out versions that are being modified; this is the entire
purpose of a configuration control system.  I can see (to an extent)
your "using uids doesn't work" argument in a standard Unix file
system; I can't really see it in RCS or CVS, where you have to check
out the operational (as opposed to gather) modules in order to gain
access to them.

This may come down to the area of a base disagreement: "I think this
is better and you think the opposite."  I have certainly worked in
environments such as that I describe and have had no problems with it,
but that may be a matter of what you are used to.  I just hate to
clutter the language with things that should best be (in my view
only!) left outside the language definition, for reasons of simplicity
if nothing else.  But one way or the other, I *think* we're almost
done here.


                                        Dave Barton <*>
                                        [EMAIL PROTECTED] )0(
                                        http://www.averstar.com/~dlb


Reply via email to