Here's an updated version based on feedback. Comments by end of
tomorrow, California time, please.
- Stephen
---
PSARC/2006/xxx
/usr/gnu
| Stephen Hahn (sch at sun.com) and Bart Smaalders (barts at eng.sun.com)
1. Summary
| A new directory hierarchy, to contain otherwise-name-conflicting GNU
| utilities under their original names, is proposed. A guideline for
| the provision of 'g'-prefixed variants in /usr/bin is also
| presented.
This case seeks Minor release binding.
2. Discussion
In an attempt to provide a more complete offering for software
developers on OpenSolaris distributions (as well as other goals),
this case proposes the introduction of /usr/gnu as a location for
| alternate implementations of standard tools produced by the GNU
| project. This case supplements PSARC/2005/185, "Enabling
| serendipitous discovery" [1]. The goals of the two cases are
| aligned; this case may propose refinements to the handling of
| specific scenarios.
2.1. Expected use
| Much like the use of the XPG4 [2] and XPG6 [3] environments, the
| expected use of the /usr/gnu environment is to prefer its
binary components to the system defaults, via a setting like
PATH=/usr/gnu/bin:...:/usr/bin
| Traditionally, the commands environments are incomplete: they do
| not provide entries for each and every command available in
| /usr/bin. The environments are also proper subsets: there are no
| commands that are not also present in the system's default command
| environment. Although an environment could be modified to be a full
| alternative commands environment, that aspect is left to a future
| discussion.
2.2. Reliance on /usr/gnu/bin utilities
The individual utilities' stability levels dictate their
appropriateness for use by other components.
| 2.3. Utility parity requirements
|
| PSARC, in its opinion for PSARC/2005/683 [4 - 5], made policy a
| technical requirement that XPG4 and XPG6 extensions be also made
| available in the /usr/bin variant of the affected utility. This
| policy is not applicable to the /usr/gnu environment.
|
| 2.4. 'g' Prefixing
Historically, introduction of GNU utilities into /usr/bin has been
done with a 'g' character prefixed to the utility name. This
proposal amends this practice: the 'g'-prefixed version should be
provided if already introduced. In cases where another operating
system has provided a 'g'-prefixed version, the project team
| introducing an otherwise name-conflicting GNU component may choose
| to also provide one; otherwise, additional 'g'-prefixed components
| in /usr/bin are discouraged.
| GNU components that do not conflict with existing or anticipated
| components in the system's default commands environment should not
| be placed in /usr/gnu, and do not require 'g'-prefixing.
|
| 2.5. Manual pages
In the interest of reducing manual page scavenger hunts, this
proposal recommends the introduction of a new manual page section,
| 1G, to cover the introduced utilities. (Sections 1MGNU, 3GNU, and
| so forth can be added as necessary.)
Management of the manual path then proceeds along similar lines as
the executable path in Section 2.1:
| MANPATH=/usr/man,1gnu,1
to prefer the GNU project environment reference manual, and
| MANPATH=/usr/man,1,1gnu
to use the GNU environment manual as a fallback.
| 2.6. Future possibilities
One possible future direction is to extract the legacy tools from
/usr/{bin,sbin} and provide them in a new, stable path like
/usr/sunos/{bin,sbin}. The selection of the top-level /usr
components can then be made a configurable aspect of the system, via
| one or more mechanisms. This change might also involve the
| provision of complete commands environments, as mentioned in Section
| 2.1.
3. Interfaces
/usr/gnu Directory hierarchy Stable
/bin
/sbin
/lib
/info
/etc
/usr/share/man/man1g
Manual page section Stable
4. References
| [1] B. Smaalders, PSARC/2005/185: Enabling serendipitous discovery,
| 2005.
|
| [2] J. Tornatore, PSARC/1994/161: XCU4 Conformance (XPG4
Commands/Utilities component), 1994.
| [3] J. Farley, PSARC/2003/418 SUSv3 Project Update, 2003.
[4] C. Fields, PSARC/2005/683: Add /usr/xpg4/bin/crontab and
/usr/xpg6/bin/crontab, 2005.
|
| [5] B. Sommerfeld et al, PSARC/2005/683 Opinion, 2005.
|
--
Stephen Hahn, PhD Solaris Kernel Development, Sun Microsystems
stephen.hahn at sun.com http://blogs.sun.com/sch/
-------------- next part --------------
# HG changeset patch
# User sch at muskoka
# Node ID 350dc0eded3f9c46603b5f807311450023da1753
# Parent 32dfa3820183faf4c5122aeeb92b1f823c71ef32
update text for correct cases, manual page section, environment
completeness, serendipity
diff -r 32dfa3820183 -r 350dc0eded3f d-usr-gnu-fast-track.txt
--- a/d-usr-gnu-fast-track.txt Fri Apr 28 23:56:46 2006
+++ b/d-usr-gnu-fast-track.txt Mon May 1 18:09:35 2006
@@ -1,14 +1,14 @@
PSARC/2006/xxx
/usr/gnu
-Stephen Hahn (sch at sun.com) [and anyone else who dares to be forever
-blamed for this]
+Stephen Hahn (sch at sun.com) and Bart Smaalders (barts at eng.sun.com)
1. Summary
- A new directory hierarchy, to contain GNU utilities under their
- original names, is proposed. A guideline for the provision of
- 'g'-prefixed variants in /usr/bin is also presented.
+ A new directory hierarchy, to contain otherwise-name-conflicting GNU
+ utilities under their original names, is proposed. A guideline for
+ the provision of 'g'-prefixed variants in /usr/bin is also
+ presented.
This case seeks Minor release binding.
@@ -17,63 +17,82 @@
In an attempt to provide a more complete offering for software
developers on OpenSolaris distributions (as well as other goals),
this case proposes the introduction of /usr/gnu as a location for
- alternate implementations of standard tools, as well as other
- components, produced by the GNU project.
+ alternate implementations of standard tools produced by the GNU
+ project. This case supplements PSARC/2005/185, "Enabling
+ serendipitous discovery" [1]. The goals of the two cases are
+ aligned; this case may propose refinements to the handling of
+ specific scenarios.
2.1. Expected use
- Much like the use of the XPG4 [1] and XPG6 [2 - 4] environments, the
- expected use of the /usr/gnu environment is to either prefer its
+ Much like the use of the XPG4 [2] and XPG6 [3] environments, the
+ expected use of the /usr/gnu environment is to prefer its
binary components to the system defaults, via a setting like
PATH=/usr/gnu/bin:...:/usr/bin
- or to use these components as a fallback, if other environments do
- not provide a component, with a setting like
-
- PATH=/usr/bin:...:/usr/gnu/bin
+ Traditionally, the commands environments are incomplete: they do
+ not provide entries for each and every command available in
+ /usr/bin. The environments are also proper subsets: there are no
+ commands that are not also present in the system's default command
+ environment. Although an environment could be modified to be a full
+ alternative commands environment, that aspect is left to a future
+ discussion.
2.2. Reliance on /usr/gnu/bin utilities
The individual utilities' stability levels dictate their
appropriateness for use by other components.
-2.3. 'g' Prefixing
+2.3. Utility parity requirements
+
+ PSARC, in its opinion for PSARC/2005/683 [4 - 5], made policy a
+ technical requirement that XPG4 and XPG6 extensions be also made
+ available in the /usr/bin variant of the affected utility. This
+ policy is not applicable to the /usr/gnu environment.
+
+2.4. 'g' Prefixing
Historically, introduction of GNU utilities into /usr/bin has been
done with a 'g' character prefixed to the utility name. This
proposal amends this practice: the 'g'-prefixed version should be
provided if already introduced. In cases where another operating
system has provided a 'g'-prefixed version, the project team
- introducing a GNU component may choose to also provide one;
- otherwise, additional 'g'-prefixed components in /usr/bin are
- discouraged.
+ introducing an otherwise name-conflicting GNU component may choose
+ to also provide one; otherwise, additional 'g'-prefixed components
+ in /usr/bin are discouraged.
-2.4. Manual pages
+ GNU components that do not conflict with existing or anticipated
+ components in the system's default commands environment should not
+ be placed in /usr/gnu, and do not require 'g'-prefixing.
+
+2.5. Manual pages
In the interest of reducing manual page scavenger hunts, this
proposal recommends the introduction of a new manual page section,
- 1G, to cover the introduced utilities. (Sections 1MG, 3LIBG, and so
- forth can be added as necessary.)
+ 1G, to cover the introduced utilities. (Sections 1MGNU, 3GNU, and
+ so forth can be added as necessary.)
Management of the manual path then proceeds along similar lines as
the executable path in Section 2.1:
- MANPATH=/usr/man,1g,1
+ MANPATH=/usr/man,1gnu,1
to prefer the GNU project environment reference manual, and
- MANPATH=/usr/man,1,1g
+ MANPATH=/usr/man,1,1gnu
to use the GNU environment manual as a fallback.
-2.5. Future possibilities
+2.6. Future possibilities
One possible future direction is to extract the legacy tools from
/usr/{bin,sbin} and provide them in a new, stable path like
/usr/sunos/{bin,sbin}. The selection of the top-level /usr
components can then be made a configurable aspect of the system, via
- one or more mechanisms.
+ one or more mechanisms. This change might also involve the
+ provision of complete commands environments, as mentioned in Section
+ 2.1.
3. Interfaces
@@ -89,12 +108,16 @@
4. References
-[1] J. Tornatore, PSARC/1994/161: XCU4 Conformance (XPG4
+[1] B. Smaalders, PSARC/2005/185: Enabling serendipitous discovery,
+ 2005.
+
+[2] J. Tornatore, PSARC/1994/161: XCU4 Conformance (XPG4
Commands/Utilities component), 1994.
-[2] C. Fields, PSARC/2004/431: Add /usr/xpg6/bin/ex, 2004.
-
-[3] C. Fields, PSARC/2004/494: Add /usr/xpg6/bin/stty, 2004.
+[3] J. Farley, PSARC/2003/418 SUSv3 Project Update, 2003.
[4] C. Fields, PSARC/2005/683: Add /usr/xpg4/bin/crontab and
/usr/xpg6/bin/crontab, 2005.
+
+[5] B. Sommerfeld et al, PSARC/2005/683 Opinion, 2005.
+