TclTk WorkShop July 1996
These are a summary of the notes I took at the Tcl Workshop in Monterey
July 10-13 with regard to Tcl Futures and Development Projects
Errors and Omissions mine.
This is what
The conference t-shirt
looks like.
Tcl Futures and Status
Update on Tcl Project- John Ousterhout
What did over Last Year
- Tcl7.5 and Tk4.1
- Mac and PC ports
- Dynamic loading and packages - big Impact expected on installation
- New IO system , socket support, Cross Platform Issues
- Multiple Interpreters, Safe-Tcl
- Grid Geometry Manager(Tk) - Much better model for GeomMgr
- New clock command
- Performance improvements in text Tags
- First Alpha Release SpecTcl/SpecJava ("The Evil Twin")
- Netscape Plugin
- WebEdit Authoring Tool for HTML - encourage to Release soon
- Major Progress on Tcl Compiler
What didn't do that said would do
- FCS of SpecTcl (needs grid revision)
- NameSpaces (part of compiler)
- Internationalisation
- MegaWidgets
- Image Improvements - Memory utilisation and avoid dithering
People
- PC And Mac: Ray Johnson, Syd Polk, Scott Stanton, Colin Stevens
- Netscape Plugin, Security, I/O: Jacob Levy
- SpecTcl: Ken Corey, Stephen Uhler
- Compiler: Brian Lewis
- Web Authoring Tools: Brent Welch
- Mkting/Business Planning: Jay Backstrand
- Plus various Summer Interns
Release Plans
Planning 5 releases of Tcl and 4 of Tk over next year or so.
- Tcl7.5p1 and Tk4.1p1 - bug fixes to Tcl7.5 and Tk4.1
- Tcl7.6 and Tk4.2 - Patches + Grid Rev SpecTcl.
- Tcl7.6plug and Tk4.2plug - embedding and other features for
Netscape plugin.
- Tcl7.7 and Tk4.3 - Native Look and Feel on PC and
Mac (A Big release).
- Tcl8.0 and Tk?? - Bytecode compiler
- Alpha and Beta releases of above may overlap rather than pass
thru all of above sequentially.
Tcl7.6 + Tk4.2
- Major grid cmd Rev - needed for SpecTcl
- C API change for channel drivers - eliminate Tcl_File struct use.
- No other changes except bug fixes (same as patch rel)
- Goal: Beta rel in August, Final Release Sept
- Question : MegaWidget Support in this rel -
Probably not, increased risk.
Tcl7.6plug + Tk4.2plug
- Provide Features for Netscape Plugin
- Work already provided in plugIn Binaries
- No Source ref till tcl7.7/tk4.3
- PlugIn Sources probably not freely available, Support platforms
using binary ports.
Tcl7.7 + Tk4.3
- Native Widgets on PC and Mac - same scripting interface
- Config options a union superset of those available on all
machines, Unsupported options silently ignored.
- New Menu Mechanism
- Menubars implement with new menu widgets
- new -menu option for toplevel windows - given menu widget
will attach to this toplevel outside Tk widget hierarchy
- Tear off menus are clones (consistancy guaranteed)
- Can use same menu in several places - shared menus
- Hide Tear off entries
- New Font mechanism
- Virtual Bindings and Event Generation
- Standard Dialogs - FileSelectionBox (Read and Write)
- Portable File Commands: rm, mv, mkdir, rmdir, ... equivalents
- Binary I/O Support
- Read/Write Blocks of Data (stored behind scenes in tcl)
- Insert/extract fields of blocks
- Copy between channels ("unsupported0" )
- Other possible additions
- MegaWidgets
- Image Revision
- No dithering
- Memory footprint
- Channel support
- More text Improvements - smooth scrolling,
Handle long lines better
- Schedule Estimate:
- First Alpha rel Oct/Nov 96 (then 6 months to final)
- Final Release Q2 97 (i.e before next workshop)
Tcl8.0
- ByteCode Compiler
- New Object system for internal data representation
- New C API's for Command Procedures, many other Tcl lib
procedures
- All new API's where currently reference strings
- Old interface still supported but 'slow' - not faster than now,
maybe slower due to internal conversions to Tcl_Object
- NameSpaces
- Compiler will be free
- Possible changes in semantics
- Schedule: Estimate
- First alpha Oct 1996
- Final Rel Q2 1997
- Additional Speedups in later release
- Alpha may release before tcl7.7 release
- Final release will include tcl7.7 releases.
- if tcl8.0 available earlier will not release tcl7.7
Other Projects
- SpecTcl and SpecJava
- WebEdit and MicroScripting
- Edit Web Pages - WYSIWYG with WebEdit
- Insert Tcl/Tk at various places
- Scripts fire at interesting times
- Site Config (Page installation)
- Page Fetch (CGI)
- on client machine (plugin)
- Pull together WebEdit, SpecTcl, PlugIn, Tcl
- Safe-Tcl
- Better Tk support, socket communication
- Interesting Security Policies
- Add Authentication and MD5
Making Money
- Sources for the core will always be free
- Compiler will be free
- Prebuilt Binaries for sale on First Virtual InfoHaus
- Currently Solaris only
- Add SunOs, HP, SGI,etc
- Can Add own products there also
- Not much business to date
"Made the sources too easy to install and build but we think we
know how to fix that"
- Netscape Plugin
- Free for personal and educational use
- Corporate use require license after 90 days
- SpecTcl/SpecJava, WebEdit
- May be free initially
- Eventually cost (as per plugin)
- Mac and PC binaries may be avail at cost from "Big Release"
(Tcl7.7 and Tk4.3). Otherwise if want them will have to build yourself
from freely available source.
- Probable Redistribution Issues (not addressed yet)
- Runtime (free) vs Development tool (cost)
- Others may want to setup binary distribution mechanisms built
from available source - there is nothing they can or will do to
hinder that.
Publicity developments
- Official Tcl/Tk Logo
(this is a screen scraped image)
- Get Feedback at workshop
- Available in several sizes, formats (will provide gifs)
- Freely use in Tcl Extensions, Apps
- Cover story on
Sun Home Page. Story runs till
End of July returns in early August.
- Press release for Netscape plugin, Ports
- Alliances anyone ??
- Must be seen as augmenting/enhancing Java not competing with it.
- Need More books
- Have 3 on Tcl
- One on expect
- One more on extensions is coming (O'Reilly)
- Most importantly also Had T-shirts - lots of T-Shirts,
Variety of size and colors (grey, white and red)
Other
SpecTcl - Why not Use
About 40 people admitted to downloading and attempting to use
SpecTcl. None continue to use now. Reasons by frequency were:
- Not Usable
- Not Faster than by hand
- Not native GUI
- Can't convert existing code
- Unstable
- Lack of Features
Internationalisation Difficult areas
- Font resolution
- regexp handling
- tranducing unicode to external form
- Choosing and defining level of I18N support
Tcl/Tk plugin - Jacob Levy
Implementation of Tcl/Tk as Netscape 3.0 Plugin. Provide safe
environment to display better effects or applications within.
- Write in Tcl not C or HTML
- Tcl Code is portable
- Safe Execution environment "Padded Cell" environment using Safe-Tcl,
trusted Master Interpreter.
- Infinite extensibility
- Dynamic loading into Plugin
Leads to idea of "tcllets".
- Minimal scripting differences from base Tcl/Tk
- New Variables tcl_pluginVersion, ...,
embedded args passed from html page to plugin
embed_args array
How Use
- Create Web Page in HTML, use Embed tag specifying Tcl script
- Create Tcl Program that Web Server can find in response to the Tag
- Plugin executes and reads/runs Tcl Code.
Status
- Alpha releases for Solaris, Win32 and Mac. Will make binaries
for any platform that supports Navigator 3.0 and that there is a
requirement for (AIX, HP/UX, Linux, .. )
- Not Feature Complete
- Currently limited to Navigator 3.0
Future Extensions
- Navigator 2.0, Internet Explorer - Anything supporting Plugin interface
- SunOS and MSW3.11 ports
- Java And JavaScript Linking
- Fetching URLS, Driving interacting with Browser
- Authentication
- Security Policies
- Dynaic loading into plugin
- Remote Servers
- ActiveX, OCX,s, Nashville
- Suggestions Welcomed
see
http://www.smli.com/research/tcl/plugin/
In Search of the Perfect MegaWidget- Stephen Uhler
Description of hooks in Tk4.2 to allow full support of Megawidgets.
A Megawidget is Widget composite implemented in Tcl which behaves
exactkly like a builtin widget - user doesn't have to know or care that its
not a core 'builtin'.
These may be wanted for
- Compound Widgets (ComboBox - Text entry with droplist)
- Change Look/behaviour of existing widgets (text to html widget)
- Remove functionality from existing widgets
- Change Layouts of existing widgets e.g a space saving Scale Widget
MegaWidget Solution
- Change Core to provide mechanism for
complete Megawidget capability
- Is NOT addressing
NameSpace Facility, framework for Widget construction
Properties
- Command Interface - same as Builtin Widget
e.g. widget .foo
.foo configure ...
.foo cget ..
.foo sun-command ?args?
- Behaviour - winfo access (exists, class, width, height), Option
Database, Focus handling)
- Bindings - User attached to megaWidget handled as would expect...
(only caveat need use %X, %W substitution in action code )
Changes required
- frame - add a -command option making the frame a megawidget and
specifying code to be run when the widget command is executed. Provide
frame subcommand really that causes args to be passed
to the actual frame widget
frame .mega -class Mega -command {mega .mega}
proc mega {name args} {
$name really configure ... ;# handle frame args
# other processing for sub widgets or whatever
}
- Event Propagation and translation
- Some events propagated to enclosing container
- detects if widget is in a megaWidget container,
resynthesises event and passes to container.
- Focus
- Limit returned info to container rather than children
- return outermost container that has focus. Provide options
in focus command to get child of container.
Implementation
- New Flags in TkWdw structure IS_CONTAINER, IS_CONTAINED_IN
- Recursive event dispatch
- Event substitution
- New options on winfo and focus
- C API
Conclusion
- Most capabilities already in Tk
- Small changes in event and focus handling needed
- Added features for convenience
- easy access to Tcl Code
- MegaWidget Introspection
On the Fly Byte Compiler for Tcl - Brian Lewis
Creating a new compiler interpreter for Tcl Code: Compact Code, No
reparsing, less runtime work
Tcl Team HotList
These are items the Devt team has as its main priorities.
I've ordered these by community perception of importance from vote tallies.
- Compiler
- Safe Tcl/Tk
- Netscape Plugin
- Native Platform Support (Widgets, Fonts, etc)
- Image Improvements
- Binary I/O
- MegaWidget Support
- NameSpace Support
- Internationalisation
- Debugger
- WebEdit (WYSIWYG HTML editor) and Microscripting
- SpecTcl/SpecJava Dialog Builder
- Profiler
Suggestions for Development Areas
These are suggestions/wishlist developement areas from the floor.
I've ordered them by number of votes.
Note that many of these don't require core modifications -
they need not be done by the Tcl Devt team at Sun.
Tcl
- Binary I/O - support binary data same as does strings now
- Thread Safeness
- Plug and Play Loadable extensions
- "-warn" lint like syntax checking
- examples in Doc/Man Pages
- Doc on Internal Architecture - channels, Notifier, ...
- Tcl_InterpCreate option to not load init.tcl
- Minimal Core and loadable features (for embedding)
- Batch Compile Mechanism
- Priority Groups in event Loop
- shell Features into tclsh - tclsh a better interactive shell
- tclsh event driven
- Tcl CookBook - already available
http://www.cis.rl.ac.uk/proj/TclTk/)
Tk
- Support more Image Formats
- jpeg
- png
- xpm (already done (Tix))
- bmp
- pict
- 2 Way OCX support - Create and drive OCX's
- Event Logging
- State option on all Widgets (ability disable scrollbar/canvas)
- Traces On Widget Options
- postscript command for Text Widget
- Incremental Image Loading
- Tagging Widgets - widget grouping
- Selective removal of bindings
- bind tag inheritance or widget bindings init script
- Graphical interface to manage extensions
- Widget Command Registry
- input/export rtf
- Support existing VBX's (16 bit)
- C API to Canvas Widget
Other Interesting Work (that I captured Notes on)
Tcl Web Tools - Stephen Uhler
Described a library Package that can be used to suppport HTML
processing with Tcl/Tk.
- Layered HTML Library - its easy to add HTML support to a Tk app
- 4 layers of implementation
- Html_Parse - maps HTML onto Tcl commands, applies Tcl
command to each HTML tag, Possible commands to validate
URLS, steal Images, Render.
- Html_Render - display Html in text widget, one possible
function applied by Html_Parse.
- Tag Specific Helper Functions (support own tags )
- Link, Image and Form Hooks.
Available from
ftp://ftp.sunlabs.com/pub/tcl/html_library-0.3.tar.gz
DPTcl- Gerald Lester
Under Development.
A Tcl only implementation of the TclDP extension (for portability)
using the new Tcl7.5 socket calls.
Similar API but not directly interoperable with applications using it.
Being Done by
Gerald Lester
gwl@cpu.com
Mark Roseman
roseman@cpsc.ucalgary.ca
and Steve Wahl.
Neoscript - Karl Lehenbauer
Tcl extension embedded in Web server providing a whole lot of
capability on top of HTML.
- Save arrays to dbm files
- Talk to SQL Database
- Safe Interpreter environments
- embed tcl escapes in html pages
- Conveniences: Counters, Form generation, Table wrappers, ..
See
http://www.NeoSoft.com/neoscript/docs/overview.html
SWIG - David Beazley
Simplified Wrapper and Interface Generator. Generates bindings from
C/C++ code for any interpreted Language (Tcl, Python, ... ).
http://www.cs.utah.edu/~beazley/SWIG
TKsh - Jeffrey Korn
Tcl and Tk embedded in Ksh93. Use Tcl or Ksh builtins, Augment
Ksh with GUI capabilities. Shared variable space between embedded
Tcl and Ksh. Implemented by mapping lowlevel Tcl Framework API
onto Ksh93 equivalents and using Tcl/Tk code as is on top of that.
See
http://www.cs.princeton.edu/~jlk/tkshproj
CGI programming with Tcl - Don Libes
Don opened this talk saying: I am going to refute the assertion
made by Adam Sah in the previous talk (and John Ousterhout, yesterday)
when they said: CGI scripting is too hard. While preparing
this talk, I looked around for a short statement about CGI and why
people find it hard. I found this one on HTML - it's close
enough...
Slide title: What is this crap?
- If HTML had been turned in for a human factors class, it would
have gotten an F.
- Eric Schmidt, Sun
My own feelings are much more positive...
Slide title: My rating: D
- Hey, it does work after all.
- Kind of.
The talk described how to generate HTML from Tcl scripts. Several
examples of CGI scripts in Tcl were shown - they were short and
readable. Using the idea of an FAQ as an example, Don demonstrated
that it is useful to generate static pages as well. Using these
approaches, problems such as maintenance of URLs and translation
between different formats become trivial.
Don described a freely-available Tcl library to support this work.
See
Don Libes and
Writing CGI scripts in Tcl.
Plans/Directions for Contrib Archive - Karl Lehenbauer
- Enable People registry allowing you
to add yourself if interested,
Manage your own packages, uploads, Support etc...
- Compatibility matrices for extensions
- Ratings of Packages and comment storage
- Multiple indexes of Archive as well as searching (hypertcl reactivate
or reproduce)
- Newsletter (electronic)
- Ftp : Keep fairly flat simple structure and index/Search from
Web Pages.
- SiteMaps
- Nodes and Zooms
- Man Pages in html
- Pull out or separate ReadMes for provided Packages
- Unpack packages and provide WAIS indexing into their contents
See
http://www.neosoft.com/tcl.
TeamRooms - Mark Roseman
Tcl Based integrated groupware application for Macintosh, Windows,
and Unix that provides "network places" for users to congregate and
collaborate.
See
http://www.cpsc.ucalgary.ca/projects/grouplab/teamrooms/.
Caubweb - John LoVerso
A personal Web proxy server that provides user and server surrogates
for conditions of variable connectivity. Provides server hotwiring of
a browser's cache, among other things.
See
http://www.osf.org/www/dist_client/presentations/wip-tclws96/.
(use the "Next" link to move into the slide pages)
Tk Interoperability Conference
- Tk in other Languages (e.g. Perl, Python, Scheme)
- Initial major concern was embedding of Tk in other languages but
that seems to be well enough addressed currently with some relatively
minor problems and slightly ugly hacks (according to the Perl, Python
people attending). The architecture being built for bytecode compiler
should provide remaining hooks and make porting integration process much
easier. This turns out to be a superset of the Perl wishlist and appears
also support Python and Scheme to the level required.
- Tcl and Objects
- [incr Tcl] supports its OO extension by adding namespace support to
(a modified version of) the Tcl Core. This is something he needs
to get out of. Namespaces will be supported in Tcl with the compiler
release but its probable that a lighter weight hook mechanism in the right
places is what is needed to provide a vehicle for Object extensions
(e.g Namespaces and OOP separately) without needing to beat on Core code.
This minimal hookset needs to be identified (features and geography) and
provided simply and rapidly (Michael McLennan undertook to follow
through on this).
Tcls notion of namespaces will probably be much simplified from iTcls:
disallowing nested namespaces (i.e limit to local or global) or allow
nesting but disallow shared namespaces....
- Portability across Platforms
- Many Issues such as Native Look and Feel, Printing i/f,
Std MegaWidget Set,
Font Abstraction, Portable filesystem access,
Portability of extension code. Many of these are already addressed:
e.g. Menus, Fonts, Colors, Virtual Events, Native Widgets and
provision of Some Common Dialogs.
Areas that are in the process of being cleared up include
FileManipulation commands and Cursors.
Areas that are felt to be important but that are currently not
scheduled include Internationalisation, Common C Extensions API (it was felt
that this would evolve naturally as the ports are worked on), Native Printing
support, Common Drag and Drop API, OLE/ActiveX embedding on MSWindows and some
interface for a help system (both balloon style help and access to external
help viewer/data).
- Thread Support.
- A small but vociferous minority insisted on some form of thread
support being an important consideration for Tcl even if only as a checkbox
item. This evolved to a realisation that Thread Safety (ability to run
multiple interps in multiple separate threads without collisions) was
probably the minimal desirable and maximum possible.
Its unclear who would do this as the Core Tcl team already has more
higher priority items than it can
handle. A Tcl community contribution is probably the only way this
will happen.
- Other
- Theres probably a need for a list of Items that the contrib community
could provide and some forum for provision of and discussion of specifications
for these things.
Once again for any contrib work to be included in the core
it maximises its chances if it:
- Follows the Tcl coding conventions
- Has Man Pages provided in a form consistant with the existingt ones
- Provides test suites and test scripts
- has been tested and passes its test suite
- has been tested that it doesn't break anything in the existing test
suite
Hops
(hops@sco.com)
$ Last Modified: $Date: 1996/07/20 18:44:08 $: