<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE TIP SYSTEM "http://tcl.activestate.com/cgi-bin/tct/tip/tipxml.dtd">
<!-- Converted at Thu Feb 09 03:27:02 GMT 2012 -->
<!-- TIP AutoGenerator - written by Donal K. Fellows -->

<TIP number='6'>
<header><title>Include [Incr Tcl] in the Core Tcl distribution</title><author address="mailto:markh@usai.asiainfo.com">Mark Harrison</author><status type='project' state='rejected' tclversion="8.4.0" vote='after'>$Revision: 1.6 $</status><history></history><created day='16' month='oct' year='2000' /></header>
<abstract>Include [Incr Tcl] in the Core Tcl distribution.</abstract>
<body><section title="Proposal">
<para>[incr Tcl] [<url ref="http://tcltk.com/itcl/"/>] shall be included in the core Tcl distribution. It shall be included in the Tcl source tree, and built as part of the standard Tcl distribution.</para>
<para>Specific items:</para>
<itemize><item.i><para> &quot;itclsh&quot; will not be included</para></item.i><item.i><para> &quot;itcl_*&quot; commands will not be included</para></item.i><item.i><para> everything will move from ::itcl to ::</para></item.i><item.i><para> the &quot;find&quot; subcommands will be reintegrated into &quot;info&quot;</para></item.i></itemize>
</section>
<section title="Rationale">
<para>The lack of a standard object and data abstraction system continues to hinder Tcl development.</para>
<quote>&quot;Lets face it, not including any sort of OO system is one of the major failings of Tcl. Indexing into global arrays is a sad hack when compared to a real OO system.&quot; <emph style="italic">- Mo DeJong &lt;<url ref="mailto:mdejong@cygnus.com"/>&gt;</emph></quote>
<para>Earlier this year, it seemed that it would finally be included in Tcl 8.4, but that plan was rescinded.</para>
<para>Note that this is distinct from the &quot;batteries included&quot; (BI) distribution, and is not intended to be a model for building the BI distribution. It is a special case for inclusion in the core tcl command set, since a &quot;class&quot; command is a fundamental language construct.</para>
</section>
<section title="Alternatives">
<para>Include [incr Tcl] in a &quot;batteries included&quot; (BI) distribution.</para>
<para>Many people will not opt for the BI distribution (<tipref type="text" tip="4"/>) due to its larger size. It is quite likely that (for example) a Linux distribution my include Tcl as a standard component, but place the BI on a supplemental disk.</para>
</section>
<section title="Objections">
<para><emph style="italic">I don&apos;t want any object system included!</emph></para>
<para>You can delete the [incr Tcl] library with no harm to your code.</para>
<para><emph style="italic">John Ousterhout hates objects!</emph></para>
<para>This misconception is primarily due to a misreading of one of his papers. A better summary of his position is that &quot;scripting is a better solution than objects in many cases.&quot; John Ousterhout has told me that he will not stand in the way of adding object-oriented programming to Tcl.</para>
<para><emph style="italic">[incr Tcl]&apos;s object model is not good!</emph></para>
<para>[incr Tcl] supports the same object model as C++ and Java. Many programmers are familiar with this model and accept it as a good model.</para>
<para><emph style="italic">The CLOS object model is better!</emph></para>
<para>Quoting John Ousterhout, &quot;People vote with their feet&quot;. For whatever reason, slot-based systems failed to gain as much popularity as C++/Java-like systems.</para>
<para><emph style="italic">There are many Tcl object systems to choose from!</emph></para>
<para>None are even a fraction as long-lived, popular, or well-supported as [incr Tcl].</para>
</section>
<section title="Special Provisions">
<para>Since [incr Tcl] still exists as a separately named entity, this TIP shall not be construed as relieving any individual from the responsibility of providing appropriate [incr Apparel].</para>
</section>
<section title="Copyright">
<para>This document has been placed in the public domain.</para>
</section>
</body></TIP>

