On Tue, Feb 06, 2007 at 02:00:58PM -0500, Glenn Fowler wrote: > I believe one of the attractions of bringing ksh93+ast into ON is > the that it does configure for many systems > doing so produces executables that behave in a similar way, > modulo system specific features, on all systems
And as I've pointed out elsewhere, autoconfiguration is the exact wrong thing to bring into ON. First, it's inherently illogical - ON is by definition always a part of OpenSolaris and never a part of any other OS. That means that all the autoconfiguration functionality itself is immediately and forever dead code. Second, any changes to the code that are required to support either autoconfiguration or characteristics of other operating systems need to be evaluated without regard for their merits outside of ON; in nearly all cases they reduce readability, clarity, and maintainability. ON (and OpenSolaris in general) offers a lot of simplifying assumptions that can improve code quality. The issue at hand is a perfect example of this. Third, autoconfiguration at compile time often encodes the assumption that buildtime and runtime hosts are identical, which is usually wrong. This can lead to difficult-to-debug problems. Fourth, and most devastating to my way of thinking, it can and does lead to overlooking the impact of changes elsewhere in the codebase that affect (or should affect but don't) the autoconfigured component. It also encourages laziness and sloppiness. If, for example, someone makes a change that removes a Consolidation Private function from libc, a component that relies on that function should in turn fail to build, alerting the engineer to the need to replace calls to the function with some newer alternative (or perhaps that the function ought not be removed after all). Autoconfiguration papers over this by either substituting its own (probably inferior) implementation or disabling the use of the newly-removed feature. This is, to say the least, unexpected and undesirable. It's fine for AT&T to offer components that autoconfigure if that's what their customers want. There's some value in being able to get some kind of hopefully useful binary out of a pile of source code on HPUX, Solaris, GNU/Linux, and ConvexOS. But that's not a problem we have. This is ON. We know what the environment offers, and we know what interfaces are available to us. And if those change in a way we don't expect, we want to know *before* a user complains about it. Dead code has no place in ON, and workarounds for bugs and incompatibilities in other operating systems should be present only when needed to interoperate with those systems - not to build on or for them. -- Keith M Wesolowski "Sir, we're surrounded!" FishWorks "Excellent; we can attack in any direction!"