Tcl/Tk Workshop `95 - Thursday: Session 3

What's Happening in the Sun Tcl/Tk Project

by John Ousterhout

New Tcl/Tk web page: http://www.sunlabs.com

Tk4.0/Tcl7.4 is finally out. Lots of changes (half of the changes file) since 3.6 release. 6 months in beta, 500-1000 bugs fixed. By comparison, Tcl7.0/Tk3.3 was 2.5 months in beta with 2 months for followup.

The release was about a year later than expected -- 4.0 was a big release because it was the last chance to break things, and get things like Motif compatibility right. Also there was the usual optimistic development scheduling, and the new group at Sun getting started.

The GUI builder will be called .... SpecTcl. Various interpretations of this name are possible... Several people submitted this name, but primacy goes to Paul Eggert. The release should be out in the Fall, with luck.

Windows and Mac ports will be first available this summer, with a Motif look and feel. Native look and feel -- early in 1996? What about an OS/2 port? No plans, but if OS/2 is important than it would be nice. More details about the windows port in the paper.

Safe-Tcl has been integrated into the Tcl core and generalized to handle multiple slave interpreters. Should be bundled with the ports in August, as Tcl7.4b1/Tk4.1b1. Safe-Tcl doesn't handle denial of service attacks yet.

Dynamic loading is also due for release sometime in Fall, or maybe with lots of luck in August. The interesting problem is integrating provide/require and version control with auto-loading. Dynamic unloading is unclear and probably won't be provided. Regarding portability -- there is a commitment to making dloading and other extensions work on all important platforms. Most of the machines aren't available at Sun but can be borrowed from other places (e.g. Berkeley).

Medium term plans: integrating extensions from other people that are popular: table (based on BLT), socket support (perhaps based on Tcl-DP but more simple), application embedding (e.g. TkSteal, with support for the WM protocols), megawidgets (some facilities are required in the core Tk here, and interaction with the GUI builder would be very useful), name spaces, and MIME support. There is an issue of whether these things should be loadable modules or statically linked into the core, but both of these can be done in the framework of the basic distribution, with the clear advantages for maintenance.

Other interesting possibilities: import and export of Tcl scripts and Megawidgets as VBX'es (or OCX'es?), and making Tcl/Tk work with OLE (after the first release on the PC). How about adding [incr Tcl] or another OO package to the core? Unclear.

More plans: JPEG image support and other formats, and better color management (no more dithering for photo images when unnecessary). Other format handlers are welcome from contributors but the support has to be robust, small, and well-behaved. How about an "unknown" procedure to load additional image formats? Unclear how this should work.

The text widget will also get some improvements. Images should become first-class objects, scrolling needs to be improved somewhat, and tags need to be more efficient when there are very many distinct tags.

Eventual goal: make a great WWW browser using Tcl/Tk.

Voting on these issues suggested that megawidgets were most important, followed by socket support and name spaces. Others gained fewer votes and MIME came in lowest.

Long-term plans included a compiler and internationalization. Probably two people will be working on this for about a year. The compiler will produce byte codes and use an internal object model, to provide an expected 10-20x speedup. A static correctness checker would be nice also. The compiled language must be backward compatible, but maybe optional types and other extensions might find their way into the new version.

Internationalization should provide support for Asian fonts (Unicode or UTF), and this will require updating the regular expression and font packages.

How does Tcl/Tk compare with Java? Some similarities and some differences are clear. Is there competition between these languages? Both are mobile, but Java is C-like and Tcl is good for scripting. The official line is that Tcl and Java are siblings and do not fill the same niche. There is cooperation between the two groups at Sun, with Java to Tcl calls available and a Tk binding for Java a possibility. The analogy should be with Visual Basic and VBX'es. Some important things that Tcl has that makes it different from Java include runtime polymorphism of types and implicit string concatenation.

A neat Web Browser by Steve Uhler, called Hippo. This is 2000 lines of Tcl and has similar functionality to Mosaic, and very flexible. It also allows Tcl scripts to be embedded in web pages and is very fast and flexible. Should be released in Summer or Fall.

Making money from Tcl and Tk. It is important that people be able to make money off of Tcl and Tk, to ensure continued growth and evolution. This has helped Visual Basic quite a bit. How do we do this? One thing is to make it as easy as possible to sell and market extensions, via a WWW storefront where extensions are bought and sold electronically (perhaps via Sun). Is the community large enough to support this? Experts say "yes!". What will be sold? C source code (preferable), or binaries, or both? It really depends on the price -- $50 could be the ideal price for extensions. How about royalties? John says it's not worth it. There are a lot of interesting issues with buying stuff over the net, demos, etc. The point was brought up that making money from Tcl is against the spirit of the community, but most people seemed to feel that there were no problems with this. Buying support is also a very important issue for the business community. The final point is that unless we have dynamic loading in the core, selling extensions won't work well.

Sun must also make money off of Tcl/Tk. Therefore the group needs to develop some products. These might include the GUI builder (an enhanced version after the free initial version), a debugger and other development tools, the compiler (perhaps), and documentation and support. A substantial fraction of attendees would consider such things. Another possibility is to charge for binaries. Strange idea -- charge $30 for a binary but make the source code free...

We need showcase applications to demonstrate the capabilities of Tcl/Tk, just like HotJava. Something with web micro-scripting, with Tcl and HTML mixed would be nice. Validating forms, simple spreadsheets, dynamic layouts, conditional inclusion of HTML, etc. Any other ideas for showcase applications are welcome.

Questions from the audience: