TIP:            9
Title:          Tk Standard Library
Version:        $Revision: 1.9 $
Author:         Marty Backe <mgbacke@usa.net>
Author:         Larry W. Virden <lvirden@yahoo.com>
Author:         Jeff Hobbs <jeffh@activestate.com>
State:          Withdrawn
Type:           Project
Vote:           Pending
Created:        07-Nov-2000
Post-History:   
Tcl-Version:    8.4

~ Abstract

A Tk standard library shall be bundled with the core Tcl/Tk
distribution.  The library will consist of general purpose widgets and
composite widgets for use in constructing Tcl/Tk applications.  The
library of Tk components will be written in Tcl/Tk.

~ Rationale

Although Tcl "ships" with a comprehensive set of native (compiled)
base Tk widgets, it lacks a library of composite widgets, from which
sophisticated applications can readily be built with minimal
reinvention.

Although the Tcl community has created a wealth of general purpose Tk
widgets, generally they are not centrally located or distributed,
making their use problematic. This requires that Tcl programs which
make use of such widgets must either distribute them or direct the end
user on their acquisition and installation. Arguably, the success and
higher visibility of other "competing" scripting languages can be
attributed in some part to their extensive libraries. Tcl/Tk should
continue this trend.

Tcl is perhaps unique in that it is considered both a graphical (Tk)
and non-graphical (Tcl) programming language. Work has begun in
implementing a standard library for Tcl. It could be argued that
Tcl/Tk's largest base, and its largest growth area, is with regards to
graphical applications. To this end, Tcl needs a comprehensive, and
well maintained Tk standard library.

Finally, to lower the barrier of using the Tk libraries, they should
be Tcl/Tk based.  This helps to assure cross platform independence
without requiring the user to compile code against a source
distribution.

~ Specification

 * The standard Tk library will be called "tklibX.Y", where "X.Y" will
   follow the version number of the Tcl/Tk distribution that it's
   compatible with.

 * Major/minor releases of the tklib shall coincide with the
   major/minor releases of Tcl/Tk. That is, if Tcl/Tk version 8.5 is
   released, a tklib8.5 shall be released.  The tklib8.5 version shall
   be tested and confirmed to be compatible with the release of Tcl8.5
   & Tk8.5.  Note that changes to tklib will not necessarily be
   required for it to receive a new version number, but the new
   version shall indicate that it has been tested and verified
   compatible with the new Tcl/Tk version.

 * The tklib shall be considered part of the "core" of Tcl/Tk. That
   is, releases of major/minor versions of Tcl/Tk shall not be made
   independent of tklib.

 * Additions to the tklib shall be made through a voting process,
   which is to be decided.

 * Tklib components shall include a test suite.  This test suite
   will be the means by which the library is verified as compatible
   with a new release of Tcl/Tk.

 * Tklib components shall include documentation to the same standards
   as Tcl/Tk, i.e., man pages, etc.  Let's continue the tradition of
   Tcl/Tk having the best documentation.

 * The tklib components will include one or more demonstration scripts
   that show to best effect all of the features and options provided
   by the component. A picture is worth a thousand words! The Tk,
   BWidgets, and Iwidgets demos are prime examples to be emulated.

 * Tklib components can be dependent on other tklib components.  If
   tklib and tcllib become coordinated efforts, the tklib components
   can be dependent on tcllib components.

 * The tklib can (and hopefully will) include megawidgets.

 * Tklib components shall be written in Tcl/Tk.

 * Tklib components shall be implemented in their own namespace and
   distributed in package form.

 * Tklib components do not have to be unique with regards to other
   tklib components, although there shall be differentiating
   characteristics between them. There is more then one way to skin a
   cat.

 * The tklib shall not contain applications, IDEs, or development
   tools.

~ Notes

A tklib module has been created next to the aforementioned tcllib at
http://tcllib.sf.net/  This creates the basic infrastructure for
people to work in, but does not set any status related to the core as
yet.

----

''Larry W. Virden writes'':

 > It appears to me that tklib isn't going to be bundled with the tk
   source code distribution any more than tcllib getting distributed
   with the tcl core distribution.

 > If the TCT concurs that this is the case, then I would propose that
   this TIP be withdrawn.  tklib exists now, and to date, submissions
   are extremely rare.

 > Here we are, some time later, and no action still on either
   withdrawing or rejecting this TIP.  Perhaps some action could be
   taken on this TIP?

----

~ Copyright

This document has been placed in the public domain.
