> > and making it the current ksh for OpenSolaris?
> 
> One of the goals for opensolaris is compatibility with solaris.  We're
> not starting with a blank slate.
> 
> I don't think switching to ksh93 is out of the question but our practice
> is to avoid rushing into these things without understanding the
> incompatibilities.
> 
> But I went googling for differences and found a pretty significant one:
> 
> It looks like ksh88 uses dynamic scoping while ksh93 uses lexical
> scoping.  As I understand it, a similar disagreement caused something of
> a schism within the lisp community.
> 
> This won't matter for many scripts.  But any script which uses local
> variables may well trip over this, and the behavior change will be hard
> to diagnose if you're not aware of the incompatibility.

Bill's argument is not a theoretical one; these changes _do_ matter and
they _do_ break people.  As one example, Tim Bray took Solaris to task
for not supporting "%" as an alias for "%%" in bash:

  http://www.tbray.org/ongoing/When/200x/2005/02/27/Linux-Solaris

(It's the "--" at the bottom.)  As it turns out, this is not a Solaris
issue, but a bash issue -- this change in (undocumented, probably
accidental) behavior was a side-effect of other changes in bash-3.00.
Tim just happened to be running older versions of bash on his Linux
boxes, and naturally chalked up the behavior change to Solaris being
broken instead of bash being fixed.

What's the moral of the story?  In any software system -- but especially
in an operating system -- many behaviors develop implicit dependencies;
When these behaviors change and the system breaks, the most recent change
will be blamed.  If the system breaks with sufficient frequency,
change will therefore become prohibited (or at least resisted) -- and
this resistance will in turn impede the forward progress of the system.
Changes anywhere in a software system must therefore be made carefully,
but they must be made especially so in domains where implicit dependencies
are likely.  If one were to infer sloth from this deliberation, one would
be drawing exactly the wrong conclusion:  the whole point of compatibility
is to _accelerate_ change, not to obstruct it.  Indeed, when developing
an operating system, compatibility is one of the core technical
principles -- it is no more (and no less) a business issue than are
other core principles like reliability, scalability, observability, etc.

        - Bryan

--------------------------------------------------------------------------
Bryan Cantrill, Solaris Kernel Development.       http://blogs.sun.com/bmc
_______________________________________________
opensolaris-discuss mailing list
opensolaris-discuss@opensolaris.org

Reply via email to