I've added three issues of my own to the bottom; sch-0 is the "why
   are you doing this?" issue.

   - Stephen

----

jdc-1   The proposal selects /usr/gnu as FSF/UNESCO Free Software, but
        why is this the important or useful determinant?  More to the
        point: what software or user actually targets or would target
        operation in an "FSF environment" on this basis?

        It's easy to construct an argument for a "similar to [insert
        distribution here] Linux" environment for people adopting
        Solaris, or for those using Solaris within a mixed environment
        (something that likely is true for _most_ Sun customers).
        However, FSF isn't precisely Linux, because distributions of
        the latter are typically a superset.

        Similarly, "XPG4" is a complete, standards-conformant
        environment.  Users expect it to exist on other systems, so
        there's an argument for allowing selection of that
        environment.

        Is there an equivalent to "the GNU environment" on any other
        system?  If not, then what interoperability story are we
        trying to sell?

    The choice of the GNU packages of the FSF/UNESCO list is an attempt
    to recognize the FSF implementations of longstanding Unix commands
    as a second source of these commands, with wide acceptance across
    operating systems.  In particular, this wide acceptance means that
    various other software components of interest to OpenSolaris are
    becoming dependent on the FSF/GNU implementations, at least in the
    build phase.  This proposal attempts to share the effort of
    maintaining these tools, by virtue of housing them in the SFW
    consolidation.  (See sch-0 below for more.)

    I don't believe there is an equivalent competing set of command
    variants with the same attributes.

    Although one could read this case as calling for the complete set of
    GNU packages, it does not do so--it is providing a means of
    resolving included packages that provide a variant implementation of
    existing commands.  As such, the notion of equivalence of
    environments isn't part of the current argument; the variants being
    included are included because the project team (or future teams)
    believe the variant of sufficient utility to justify integration.

jdc-2   Where are we heading?  The case hints at /usr/sunos.  Do we
        really want a forest of /usr/foo directories for different
        flavors?  Is that an architecturally viable system?

        It's of course doable; the question is whether it's wise, and
        what the criteria are for creating a new /usr/$THING
        directory.  (Is "gnu" the last one?)

    My expectation is that /usr/gnu is indeed the only one of its kind
    that we need (although in five or more years I may be shown wrong).
    The /usr/sunos notion is a suggestion for fairness in managing name
    conflicts, so that, from a packaging perspective /usr/bin is in fact
    only populated with non-conflicting commands.  Other technologies
    are postulated to make /usr/bin appear to be complete, with a
    particular subset of variants selected.  (But that's why it's in
    "Future Work".)

    As I note in jdc-1, I don't believe there is an additional large set
    of widely used variants that would necessitate a similar
    /usr/$THING, future standards efforts notwithstanding.

jdc-3   Nit: make it clear that /usr/gnu/etc and /usr/gnu/var are
        explicitly disallowed, and thus just setting the basedir isn't
        enough for integration.

    Text added.

jmp-0   Scope:  Is this an OpenSolaris-wide proposal or a Solaris-specific
        one?  i.e., would we expect Nextenta to follow this lead?

    My working position is that ARC review is a choice of each Community
    providing a consolidation.  Solaris, as a Distribution, elects to
    make itself out of only consolidations that have pursued ARC review.
    Nexenta, as a Distribution, may or may not choose to take the
    published output of each consolidation; further, it may choose to
    take only the parts of each published consolidation it deems
    interesting--which could in fact lead to outcomes other than those
    catalogued in the ARC cases that led to the current form of a
    particular consolidation.

    So, this is an SFW-specific proposal, that various OpenSolaris
    distributions may choose to follow by virtue of including the SFW
    consolidation's output.

jmp-1   This proposal puts a set of OSS utilities in /usr/bin where
        they become intermingled with core Solaris commands.  It also
        puts conflicting commands in /usr/gnu. This lets the user
        choose between
                Solaris versions 1st + Solaris-GNU versions 2nd
                (PATH=/usr/bin:/usr/gnu)
        and
                Solaris-GNU versions 1st + Solaris versions 2nd
                (PATH=/usr/gnu:/usr/bin)

        It does not allow for
                Solaris versions 1st + User-Provided-GNU versions 2nd
        That is, if I download/configure/make my own version of the
        GNU utilities, I am faced with either using them to the exclusion
        of any Solaris versions (PATH=/myGNU:/usr/bin) or not using them
        at all.  There is no way for me to use the Solaris versions 1st
        and my GNU versions 2nd.

    (I think a key aspect of this case is that it is primarily focussed
    on managing conflicting binaries.  As a result, the first example,
    PATH=/usr/bin:/usr/gnu/bin, isn't actually fully simplified--it is
    equivalent to PATH=/usr/bin.)

    I believe the issue raised concerns the provision of a
    /usr/local/bin/foo, and selecting its preference on a per-command
    basis against /usr/bin/foo and /usr/gnu/bin/foo.  It is true that
    the path mechanism in Unix always chooses the first executable found
    in the list of paths given in the environment, which leads to
    relatively crude outcomes when considering individual commands
    implementations.  The proposal attempts to utilize the solution in
    place for other command variant collections (UCB, XPG4, XPG6).

    Remediation is available to local sites by placing a preferred
    subset of commands and placing the path to that subset ahead of the
    default entries, or via omission of the SFW package(s) delivering
    conflicting functionality.  This omission may cause other, dependent
    packages to fail installation.

sch-0   Why are you doing this?

    The proposal to add /usr/gnu as a filesystem tree is based on the
    costs derived from (a) the absence of these implementations on a
    system based on OpenSolaris consolidations, and (b) the reliance on
    filename prefixing to resolve conflicting variants of well-known
    Unix commands.  The JDS and SFW consolidations bear these costs in
    common, but were providing duplicate solutions in the form of
    carrying a private build environment (JDS) or porting software to
    utilize alternate command variants, or alternate command names
    (SFW).  More recently, the Xen project in ON declared dependencies
    on a variety of OSS components for its build and operation.

sch-1   /usr/bin should not be populated with OSS/GPL-licensed software.

    The SFW consolidation (and the other active consolidations) attempt
    to be pragmatic about the software they include:  if a large
    collection of developers or users would benefit from the inclusion
    of some software, and that software can be maintained at the
    declared stability levels while remaining within the resource
    constraints of the project teams involved, then the software is a
    suitable candidate for integration. 

    Comments about a potentially license-restricted set of commands,
    perhaps achieved via packaging or new filesystem locations, are
    interesting, but contradict existing cases, like PSARC/2005/185,
    "Enabling serendipitous discovery", as well as the other OSS
    inclusion precedents.  Changing this direction will require
    discussion beyond the scope of this case.

sch-2   What about other implementations of various Unix commands?

    Although this case expresses the position that the FSF/GNU
    collection is the de facto alternative to the command variants
    historically associated with OpenSolaris, it does not actually
    propose a command variant replacement policy.  The historic variants
    remain in /usr/bin, and remain the default choice.  New command
    variants, on their individual merits, can of course be added via
    integration in an OpenSolaris consolidation.  Such additions should
    be viewed in two parts:  a means of resolving name conflicts with
    existing variants (usually by executable name prefixes, or alternate
    names), and a proposal that the default variant be replaced by the
    new variant.  As has been observed in various cases, the latter is
    substantially more involved.

-- 
Stephen Hahn, PhD  Solaris Kernel Development, Sun Microsystems
stephen.hahn at sun.com  http://blogs.sun.com/sch/

Reply via email to