Attachment 1 / Anhang 1
Responsible Engineers: Roland Mainz and April Chin.
1. Introduction
1.1 Project/Component Working Name
Korn Shell 93 Integration
1.2 Name of Document Author/Supplier
April Chin (april.chin@sun.com)
1.3 Date of this Document
20 September, 2006
1.4 Name of Major Document Customer(s)/Consumer(s)
-
1.4.1. The community this proposal comes from
ksh93-integration-discussion
1.4.2. The ARC(s) you expect to review your project
PSARC
1.5. Email Aliases
1.5.1. Responsible Manager:
1.5.2. Responsible Engineers:
roland.mainz@nrubsig.org
1.5.3. Marketing Manager:
1.5.4. Interest List:
ksh93-integration-discussion
2. Project Description
2.1 Description
This project seeks approval to introduce the latest version of the open source ksh93, maintained by korn shell creator David Korn and others at AT&T, into the Solaris system as a new set of binaries. Supporting AT&T libraries will also be introduced as private shared libraries.
2.2 Risks and Assumptions
This project is based on an external open source product and may have dependencies on the development of or the inclusion of required fixes by the korn shell owners at AT&T.
It is the goal of the project team to keep ksh93 in the Solaris operating system updated with AT&T's latest version of ksh93 and its supporting libraries. Thus it will be important to keep Solaris ksh93 source in sync, including contributing Solaris-specific changes back to the AT&T source.
There are cases of Solaris-specific functionality, covered under the CDDL (Common Development and Distribution License), which should be merged upstream to AT&T source for Solaris-specific builds.
AT&T allows contributions under the condition that only a copyright may be added to AT&T source. At this time it is unknown if a blanket licensing agreement will be reached which allows contribution of such source to AT&T without requiring the addition of the CDDL.
Although this project will introduce ksh93 as binaries separate from the existing /usr/bin/ksh and /usr/xpg4/bin/sh (the standard shell), which are both based on ksh88, the eventual goal in one or more future projects will be to replace both /usr/bin/ksh and the standard-compliant /usr/xpg4/bin/sh with ksh93. Thus this project needs to be aware of potential compatibility problems. See COMPAT file for a list of known incompatibilities between ksh93 and Solaris ksh.
This project will also introduce built-in commands in ksh93, which have a superset of the functionality of the corresponding Solaris /usr/bin commands (see Section 4.3 Description). These ksh93 built-in commands may lead to the future replacement of the source of some existing /usr/bin commands with the corresponding AT&T code used by the ksh93 built-ins.
Some functionality available in the current Solaris /usr/bin/ksh or /usr/xpg4/bin/sh is either not fully verified or not fully implemented in ksh93, including standards conformance.
Although the intention is for ksh93 to be POSIX compliant, it does not yet meet UNIX98 or UNIX03 standards conformance, that is, ksh93does not pass the latest OpenGroup Shell and Utilities Verification Suite, VSC version 5.2.8. This issue will be revisited before ksh93 replaces /usr/xpg4/bin/sh.
3. Business Summary
3.1 Problem Area
Since at least 1998 (CR 4113420), and especially after AT&T's ksh93 was open sourced, circa 2000, users have been requesting that Solaris systems include the latest version of the Korn shell, ksh93, as a replacement for or alternative to the existing /usr/bin/ksh and /usr/xpg4/bin/sh, which are both derived from ksh88i.
ksh93s- is under the Common Public License which allows Sun to freely redistribute a derived version of ksh93, provided Sun includes the license terms and does not encumber it with any proprietary changes.
The derived ksh88 we currently ship in /usr/bin/ksh and /usr/xpg4/bin/sh is encumbered by copyrights which do not allow us to ship the source through the Open Source Solaris product.
3.2 Market Requester
In addition to Open Solaris users, there have been multiple Change Requests (CRs):
4113420 *ksh* request for ksh93 integration
many CRs have been closed as duplicates of this CR.
4113420 has many Customer Call records, including those from
Nokia, Lockheed Martin, Lexis Nexis, Bell South, and AT&T.
6332421 Solaris Kornshell outdated
involves a customer trying to port their application from
SUSE Linux to Solaris 10 and running into problems with
existing ksh93 scripts.
3.3 Justification
ksh88 is out dated and considered obsolete by many. The current version of the Solaris ksh is not even considered ksh88 compatible, since its behavior has diverged significantly from the original AT&T ksh88.
ksh88 source is closed on the Open Solaris source tree, but ksh93 will be open source, allowing community members to contribute fixes, resulting in a better quality Solaris korn shell.
Users with existing ksh93 scripts on other platforms are reluctant to migrate to the Solaris OS without ksh93 functionality (see CR 6332421, above).
Users on Open Solaris discussion groups and other media, such as news:comp.unix.solaris, have requested that Sun replace /usr/bin/ksh with ksh93, to allow default login shells to take advantage of the many features of ksh93 and to allow interoperability with other operating systems (see 3.4).
In addition to many new features (see 4.2), many bugs in the existing /usr/bin/ksh are fixed in ksh93, including:
4500743 *ksh* 'test -w' should exit with zero exit status
4703213 *ksh* ksh can't handle [[ā$sā]] as manpage claims
4771050 *ksh* test -z "=" should not produce an error
4869545 *ksh* ksh should print error message for "trap - YABBA_DABBA_DOO"
6359008 *ksh* dumps core running command builtin with large argument list
6417347 *ksh* test -nt/-ot doesn't compare all of the timestamp
6435815 *ksh* sometimes chokes when piping output to a shell function
6442036 *ksh* ksh: "export -p" doesn't work as documented
Presumably, a majority of the remaining currently-open ksh RFEs and defects would be resolved by the use of ksh93 in place of Solaris /usr/bin/ksh.
3.4 Competitive Analysis
Sun is one of the only major vendors which does not include ksh93.
/usr/dt/bin/dtksh on the Solaris OS is not a viable login shell and is based on ksh93d alpha, a very early, out-of-date version of ksh93.
ksh93 is included with IBM AIX, HP-UX, Debian, Redhat/Fedora, MacOSX, Darwin, and SUSE Linux distributions. The absence of ksh93 on the Solaris OS has been a major complaint by users.
HP-UX 11i Version 2 released September 2004 still keeps /usr/bin/ksh as ksh88 and ksh93 as the binary dtksh.
On Debian, ksh93 is available as /usr/bin/ksh93, and does not include the AT&T libraries libast and libshell.
IBM AIX 5L (released in 2004) introduced ksh93 as /usr/bin/ksh93,
/usr/bin/ksh is still an enhanced POSIX-compliant version of ksh88.
Source: http://arc.opensolaris.org/caselog/PSARC/2006/550/materials-final/updated_proposal