TIP #12: The "Batteries Included" Distribution 
Author Message
 TIP #12: The "Batteries Included" Distribution

 TIP #12: THE "BATTERIES INCLUDED" DISTRIBUTION
------------------------------------------------
 Version:        $Revision$

 State:          Draft
 Type:           Informative
 Vote:           Pending
 Created:        Friday, 15 September 2000
 URL:             http://www.*-*-*.com/
 Post-History:  

-------------------------------------------------------------------------

 ABSTRACT
----------

 This document describes a comprehensive Tcl/Tk distribution. Its
 primary purpose is to create a standard source tree that includes Tcl,
 Tk, and extensions so that they can be built and installed in an simple
 and easy manner.

 INTRODUCTION
--------------

 One of the most enduring complaints about Tcl/Tk is that it lacks
 features, especially when compared to Perl, Python, or Java. We
 patiently explain that some particular feature is available in
 extension "XYZ" only to hear how hard it is to build and install
 extensions.

 Frank Stajano ("The SMS server, or why I switched from Tcl to Python")
 describes the problem succinctly.

       "But if I had to put the finger on the single most important
       reason that has me now working in python rather than in Tcl/[incr
       Tcl] it would not be a language issue but a library issue. I
       prefer Python because its standard library is a gold mine. Sure,
       for anything I want to do there's bound to be an extension
       available in the Tcl code repository on the FTP site. Now I just
       have to find it, fetch it, recompile the interpreter with it (Oh
       wait - this may mean getting and installing a C compiler for this
       system. Will the GNU one compile the windowing stuff properly or
       do I need to get VC++, or Borland? Who wants to have some fun
       discovering where another IDE has hidden the useful compiler
       flags this week?), hope that it won't clash with other extensions
       I've had to install, hope that it will not require a different
       version of the interpreter from the one I am running, and so on.
       Python supports the same C extension mechanism as Tcl - but the
       practical difference is that the stuff I want is, most of the
       time, already included and shipped in the standard distribution
       of the language!

       "But, as a general-purpose tool, Python's single most important
       selling point is the richness of its standard library - an idea
       that Tcl is only now starting to internalise. It's all in the
       distribution. You can attack your practical problem using the
       stuff that's already installed on your system, and documented in
       the library manual you already printed. Python is great because
       it comes with batteries included."

 It's true. There are too many things to know to maintain even a
 moderate set of extensions. There are too many different places to
 download extensions, too many extension-specific configuration options,
 etc.

 My hope is that this proposal will mark the beginning of the end of the
 "Batteries Included" problem. One evidence of success will be that
 words "core" and "extension" disappear from our Tcl vocabularies. We've
 lived their artifical distinctions that are useful only to core
 developers and extension writers. It's skewed our thinking about
 relationship between Tcl and its parts. After all, application writers
 first care about whether a feature or capability is available, not how
 it's structured under the hood.

 THE "BATTERIES INCLUDED" DISTRIBUTION.
----------------------------------------

 Let's start with a very modest example. Let's imagine that the
 "Batteries Included" distribution is nothing more than a tar file of
 Tcl/Tk and several extensions.

               Unix    Windows  Mac
                ----    -------  ---
     Tcl 8.3       x       x      x
     Tk 8.3        x       x      x
     [incr Tcl]    x       x      x
     expect        x       ?
     TclX          x
     BLT           x       x
     Trf          
     Html widget
     XML
     ...lots more...

 Tcl, Tk, and the packages are configured such that they can be built
 and installed just from a top level directory (not individually).
 Someone can download and try out all sorts of new features without
 repeating the same "configure", "make", "make install" sequences.

 With this simple tar file, the following benefits are automatically
 generated:

     * It provides a simple way for users to try out extensions. Users
       only have to run download, configure, compile and install, at
       most, once.

     * It describes a clear framework for extensions. We will have
       established a directory structure for both source code and
       installed binaries. It will be much more clear how to
       inter-operate. This is TEA in action.

     * It's better for Tcl/Tk application writers. You can count on
       features being universally available. Your program can again be
       just a Tcl script, not an array of packages that everyone needs
       to download and install.

     * It's better for extension writers. Configuration is simpler,
       since you know where all the sources and the compiler-specific
       information will reside. You don't need to search for
       _tclConfig.sh_ or _tkConfig.sh_ files.

     * It's better for Tcl/Tk distribution builders. This includes both
       the Linux distributors and company sysadmins that build Tcl/Tk.
       They don't have to fear installing extensions because of version
       dependencies.

       Let's give Redhat and SuSE a good reason to move off of version
       8.0. One the big advantages of Linux over (let's say) Solaris is
       that each new Redhat or SuSE distribution comes with updated
       versions of utilities already built.

     * It's better for the core developers. Extension writers will
       willing the adopt changes in exchange for the wider distribution.
       The core team will in turn gain better understanding of the
       burdens of extension writers.

     * It's better for Tcl library writers. With [incr Tcl], we now have
       a basis for a real, extensible Tcl-code library. Library code
       rely on a full set of extensions being available.

 RATIONALE
-----------

 We want to create an open door procedure that makes it easy for
 contributors to add new features and commands to Tcl and Tk. By
 creating a framework for extensions to be built and distributed, the
 "Batteries Included" distribution will provide a path for great new
 features to quickly become available to the Tcl community.

 The "Batteries Included" distributed is not designed to be one size
 that fits all. I assume there will be many distributions to suit many
 needs. There may be one for Tcl web servers and another for embedded
 systems. The goal is that the "Batteries Included" distribution will
 become a prototype for other distributions. Distribution creators will
 be able to pull code from the same CVS source tree.

 What will distinguish the "Batteries Included" distribution is that it
 will be the most comprehensive and most up-to-date distribution. We
 will explicitly not choose one package or extension over another. That
 decision should remain with the Tcl user community. The only
 requirement is that the extensions are robust and/or actively
 maintained.

 If the "Batteries Included" distribution is to become successful, it
 must be a cooperative effort between Tcl core developers, extension
 writers, and the Tcl user community. For example, we need the help of
 extension writers to adopt the new configuration scheme and directory
 structure.

 PARTICULARS
-------------

 We can stage the project with small milestones while still focusing on
 longer range goals. For example, the first phase can be as simple as
 creating a tar file. It will start to address questions that were
 raised by TEA. For example, how do we manage documentation?

 The biggest reason why this proposal will succeed is the incredible
 talent in the Tcl community. We can leverage the skills and experiences
 of the foremost experts on the core, extensions, and applications.

 TCL/TK VERSION.
-----------------

 The distribution will be based on 8.3.2 (or 8.3.3 when it is released).
 While there's no assurance when 8.4 will be released and in what state,
 we also want to place a premium on stable, robust extensions, that have
 been thoroughly tested. Most extensions will be unlikely to have been
 tested against the 8.4 alphas.

 PHASE 1.
----------

     * Identify extensions.  

       What extensions should be included in the near term? We need
       extension authors that are willing to work with us to build a
       directory framework, change configuration files, etc. Extensions
       do not need to work on all platforms. For example, there is a
       wealth of Windows-based extensions that should be included.

       What are the minimum requirements for extensions in the short
       term? Manual pages, html, tests, demos all would be nice. We need
       to temper this with what's practical. This is a learning process.
       We can adjust requirements in future phases.

     * Determine build and install directory structures.  

       We need to make this work with more that one release installed.
       Don't suppose that there only one version will ever be used.

     * Setup CVS archives.

     * Create configuration files.  

       This will require negotiation with extension writers. We want
       their buy-in so they will maintain the changes.

       There may be more than one form of configuration required. One
       subtle but important issue is that extensions must be able to be
       configured without
...

read more »



Fri, 09 May 2003 03:00:00 GMT  
 TIP #12: The "Batteries Included" Distribution

Quote:

>  TIP #12: THE "BATTERIES INCLUDED" DISTRIBUTION
> ------------------------------------------------

Wonderful TIP, George.  I'm taking the liberty of labeling a couple of
sub-threads for discussion.  Here, I would like to offer a suggestion on
the documentation.

Quote:
>  PHASE 2.
> ----------

>      * Handle documentation issues.

>        Generate platform specific doc with Richard Hipp's XML code.

I agree that this should be handled in phases.  First, assemble a BI
distribution with whatever docs we can include.  It might not be
elegant, but if we try to settle documentation uniformity issues at the
beginning, we may never get the BI distribution out.  

Quote:

>  OPEN ISSUES
> -------------

>      * Documentation

>        Overlap in command and widget names can be neatly handled by
>        namespaces. Need to consider how to handle manual pages.

I agree that uniform documentation would be a Good Thing(tm) for the BI
distribution.  

I have recently tried writing XML documentation, and it appears to
work.  Joe English's work on translating the man pages into XML (TMML)
is terrific!  Just look at his examples of generated HTML for Tcl, Tk,
and tcllib at http://www.flightlab.com/~joe/tmml/ and you'll see that it
is possible to combine several different documentation packages into one
cogent distribution.

I'm not positive that TMML is *the* format.  Docbook has a lot going for
it, including a lot of community support and lots of translations (HTML,
PDF, TeX, rtf, etc.).  But if we choose an XML format (plus DTD, style
sheets, and translators), I think we should focus on three goals:

  1.  Translation of existing docs (mostly man pages) into
      the new format.  By script, when possible.

  2.  Integration of Tcl/Tk core and extension docs into a
      single, uniform doc set.  Include top level table of
      contents and comprehensive index.

  3.  Deployment (style sheets) to major popular formats.
      I think we would need to be able to generate man,
      HTML, and Windows Help for starters.  (What do Mac
      docs look like, anyway?  PDF?)

  4.  Translation into a different XML/style sheet/translator
      framework.  If we start with TMML, could we change to
      another XML documentation framework later?  If I
      understand XML, this shouldn't be too hard.

Bob
--

Mayo Foundation                                           (507) 284-2702
Rochester MN, 55905 USA   http://www.mayo.edu/sppdg/sppdg_home_page.html



Sat, 10 May 2003 03:00:00 GMT  
 TIP #12: The "Batteries Included" Distribution

Quote:

>  TIP #12: THE "BATTERIES INCLUDED" DISTRIBUTION

Wonderful TIP, George.  I'm taking the liberty of labeling a couple of
sub-threads for discussion.  Here, I would like to offer my comments on
the packages to be included in the BI distribution.

Quote:

>  THE "BATTERIES INCLUDED" DISTRIBUTION.
> ----------------------------------------

>  Let's start with a very modest example. Let's imagine that the
>  "Batteries Included" distribution is nothing more than a tar file of
>  Tcl/Tk and several extensions.

>                Unix    Windows  Mac
>                 ----    -------  ---
>      Tcl 8.3       x       x      x
>      Tk 8.3        x       x      x
>      [incr Tcl]    x       x      x
>      expect        x       ?
>      TclX          x
>      BLT           x       x
>      Trf
>      Html widget
>      XML
>      ...lots more...

I would be even more modest.  I would include only a few packages in the
first BI distribution, just to prove that we can build and distribute
it.  Maybe I'm thinking more of an alpha or beta release, but it makes
sense to me to set up the framework first, and add the "...lots more..."
later.

For the first BI distribution, I would suggest just the packages
included in TclPro:  Tcl, Tk, [Incr Tcl/Tk/Iwidgets], Expect (unix
only), TclX, TkX.  These packages have already been bundled together
(probably many times) so we won't be breaking any new technical ground.
But we will be setting up the framework and conditions under which an
extension could be considered for inclusion.

Quote:
>        There may be more than one form of configuration required. One
>        subtle but important issue is that extensions must be able to be
>        configured without Tcl or Tk libraries already existing. This is
>        a "trusted" configure. The extension must trust that the library
>        will exist. Right now, most extensions work from "untrusted"
>        configurations.

I'm not so sure that extensions _must_ be configured without Tcl or Tk.
I am sure that the core would continue to be built using
configure/make.  But once the core is built, configuring and building
the rest of the BI distribution could rely upon Tcl or Tk scripts.  I
could easily imagine a distribution script which first builds the core,
then switches to Tcl scripts for managing the extensions and integrating
the documentation.

Bob
--

Mayo Foundation                                           (507) 284-2702
Rochester MN, 55905 USA   http://www.mayo.edu/sppdg/sppdg_home_page.html



Sat, 10 May 2003 03:00:00 GMT  
 TIP #12: The "Batteries Included" Distribution

Quote:
>  THE "BATTERIES INCLUDED" DISTRIBUTION.
> ----------------------------------------

>  Let's start with a very modest example. Let's imagine that the
>  "Batteries Included" distribution is nothing more than a tar file of
>  Tcl/Tk and several extensions.

>                Unix    Windows  Mac
>                 ----    -------  ---
>      Tcl 8.3       x       x      x
>      Tk 8.3        x       x      x
>      [incr Tcl]    x       x      x
>      expect        x       ?
>      TclX          x
>      BLT           x       x
>      Trf
>      Html widget
>      XML
>      ...lots more...

Why not TclX on Windows?  It provides useful functions and was
shipped with TclPro for Windows?

-- Scott



Sat, 10 May 2003 03:00:00 GMT  
 TIP #12: The "Batteries Included" Distribution
A good proposal. I suggest to separate binary and source distribution.
That is there are two BI : source & binary. The source BI should include
the binary BI. To make a source BI available on multiple platform you
need much more work to do. That may be not a problem for Linux but
on the Windows or Mac platforms the C/C++ compiler is not default.

The document format is also a problem. I'd like the PDF or HTML format
because they can be read on almost all the platforms. However the PDF
writer is not available for everybody. It is better to have one document
format. The unix man format and windows help format are not suitable for
cross platform purpose.

Chang LI
Neatware

Quote:

> TIP #12: THE "BATTERIES INCLUDED" DISTRIBUTION
>------------------------------------------------
> Version:        $Revision$

> State:          Draft
> Type:           Informative
> Vote:           Pending
> Created:        Friday, 15 September 2000
> URL:            http://www.cs.man.ac.uk/fellowsd-bin/TIP/12.html
> Post-History:

>-------------------------------------------------------------------------

> ABSTRACT
>----------

> This document describes a comprehensive Tcl/Tk distribution. Its
> primary purpose is to create a standard source tree that includes Tcl,
> Tk, and extensions so that they can be built and installed in an simple
> and easy manner.

> INTRODUCTION
>--------------



Sat, 10 May 2003 03:00:00 GMT  
 TIP #12: The "Batteries Included" Distribution


:I'm not positive that TMML is *the* format.  Docbook has a lot going for
:it

So what are the pros and cons of TMML?  I must confess that I've not figured
out this simpliest of questions regarding TMML...

--
"See, he's not just anyone ... he's my son."  Mark Schultz

Even if explicitly stated to the contrary, nothing in this posting
should be construed as representing my employer's opinions.



Sun, 11 May 2003 03:00:00 GMT  
 TIP #12: The "Batteries Included" Distribution


:I would be even more modest.  I would include only a few packages in the
:first BI distribution, just to prove that we can build and distribute
:it.

TclBlast took a minimal amount of time and proved that a team of Tcl
developers cooperating together can put together a BI type distribution.
No need to prove this yet again.

What DOES need proven, perhaps, is the ability of whomever is going to act
as the Eveready Battery Bunny for BI-Tcl...

:Maybe I'm thinking more of an alpha or beta release, but it makes
:sense to me to set up the framework first, and add the "...lots more..."
:later.

And it makes sense to me to suggest that the TclBlast framework be the
starting place, since it has already been used for a commercial release.
I suspect those involved (Jean-Claude Wippler, Michael M., etc. ) would
cooperate to see ''someone else'' up and started.

:For the first BI distribution, I would suggest just the packages
:included in TclPro:  Tcl, Tk, [Incr Tcl/Tk/Iwidgets], Expect (unix
:only), TclX, TkX.

On the other hand, I would hope that we minimialize the number of extensions
which are for only one platform - I myself would prefer to see a BI
distribution per platform than one super BI that tries to be all things
to all platforms.

:>        There may be more than one form of configuration required. One
:>        subtle but important issue is that extensions must be able to be
:>        configured without Tcl or Tk libraries already existing. This is
:>        a "trusted" configure. The extension must trust that the library
:>        will exist. Right now, most extensions work from "untrusted"
:>        configurations.
:
:I'm not so sure that extensions _must_ be configured without Tcl or Tk.

George, is the issue here concern about use of Tcl / Tk not already being
installed, or not being built?   In other words, right now there is a mix
of extensions which need the directory where Tcl has been installed,
the directory where Tcl has been compiled, or the directory where the Tcl
source code is extracted.  Which of these - or is it all three - are
your point of concern?  The _best_ approach, IMO, is for each extension
compilation to depend only on the pieces of Tcl which actually get installed -
in the location where they have been installed.

--
"See, he's not just anyone ... he's my son."  Mark Schultz

Even if explicitly stated to the contrary, nothing in this posting
should be construed as representing my employer's opinions.



Sun, 11 May 2003 03:00:00 GMT  
 TIP #12: The "Batteries Included" Distribution

One feature I would like to see BI-Tcl  (Batteries Included Tcl distribution)
eventually achieve is the ability to create extensions which could be
loaded and stored within a TclKit.  That way, one could start with a TclKit
and then, if new functionality was needed, with a few simple commands (provided
of course by the TclKit community) TclKit would be updated with one (or more)
BI-Tcl'd extensions.
--
"See, he's not just anyone ... he's my son."  Mark Schultz

Even if explicitly stated to the contrary, nothing in this posting
should be construed as representing my employer's opinions.



Sun, 11 May 2003 03:00:00 GMT  
 
 [ 38 post ]  Go to page: [1] [2] [3]

 Relevant Pages 

1. TIP #12: The "Batteries Included" Distribution

2. "Batteries Included" Tcl/Tk Distribution

3. comp.lang.tcl -- The "Batteries Included" Distribution [LONG]

4. TOOLS EUROPE 97: 2nd CFP (12-15 May "1007", Paris)

5. Eiffel "Gotcha" #12 - onceness and invariants

6. parse.y (version "2000-12-18")

7. TOOLS EUROPE 97: 2nd CFP (12-15 May "1007", Paris)

8. TIP #6: Include [Incr Tcl] in the Core Tcl distribution

9. Why not a "Deluxe" Python-distribution

10. Does F2003 included "submodule" and will F2008 include "Parameterized Modules"??

11. string.join(["Tk 4.2p2", "Python 1.4", "Win32", "free"], "for")

12. TIP #124: Adding "clock microseconds" Subcommand

 

 
Powered by phpBB® Forum Software