Attachment 1 / Anhang 1

 

Project description: OpenSolaris.org Korn Shell 93 Integration Project ["ksh93-integration"-Project]

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@opensolaris.org

 

1.4.2. The ARC(s) you expect to review your project

            PSARC

 

1.5. Email Aliases

 

1.5.1. Responsible Manager:

            tim.sparlin@sun.com

 

1.5.2. Responsible Engineers:

            roland.mainz@nrubsig.org

            april.chin@sun.com

 

1.5.3. Marketing Manager:

            jeff.mcmeekin@sun.com

 

1.5.4. Interest List:

            ksh93-integration-discussion@opensolaris.org

 

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