> > 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