Happy 15th Birthday to Tcl and the Tk Toolkit
Look for the second edition of Tcl and the Tk Toolkit, which is publishing later this year but is now available as a Rough Cut.
In celebration of the 15th birthday for John Ousterhout’s book,Tcl and the Tk Toolkit, we've asked some Tcl/Tk developers, members Tcl Core Team, and organizers of the 16th Annual Tcl/TK Conference to share their thoughts on John Ousterhout’s language and his book, including what they were doing in 1994, when they first used Tcl/Tk, what kind of development they you use Tcl/Tk for, what part of Tcl and the Tk Toolkit was most valuable to them.
We've asked David Korn, creator of the Korn Shell; Donal K. Fellows of the University of Manchester; Ron Fox, a senior physicist at the National Superconducting Cyclotron Laboratory at Michigan State University and author of a data analysis tool called SpecTcl; and Michael McLennan, author of Effective Tcl/Tk Programming: Writing Better Programs with Tcl and Tk and senior research scientist at Purdue University, to comment on John's book. Their answers to our questions are posted, below.
To take you back, here's what else what going on in our world in 1994:
- Nancy Kerrigan was attacked one month before Winter Olympics; Tonya Harding later banned from skating competition for her role
- Bill Clinton and Boris Yeltsin sign the Kremlin Accords
- Commodore Computer files for bankruptcy
- Tcl and the Tk Toolkit, written by John Ousterhout, was published by Addison-Wesley
- Marc Andreesan and Jim Clark launch Mosaic Communications. Later that year they release Netscape Navigator browser
- The movie Forrest Gump is released, and later wins Oscar for Best Picture
- Whitney Houston releases album, The BodyGuard, which later wins Grammy for album of the year
- Television show Friends premieres
- Jerry Yang and Dan Filo launch Yahoo!
What you were doing in 1994?
David Korn: I was finishing the book for the new KornShell, ksh93.
Donal K. Fellows: That was the year I graduated and got my first job.
Ron Fox: I was employed as a ‘Senior Physicist’ for the National Superconducting Cyclotron Laboratory at Michigan State University. The title is very misleading. What a I did then and now is create, and maintain software for online data acquisition and analysis from experiments run at our facility. See http://www.nscl.msu.edu for more information.
When did you first use Tcl/Tk?
Donal K. Fellows: While I first encountered in in 1993 or 1994 (I don't know which, sorry to say) I first *used* it in spring 1995 (April?) after picking up a copy of _Tcl and the Tk Toolkit_.
Ron Fox: I can’t recall exactly when but it must have been after 1993.
Michael McLennan: I started using Tcl/Tk when I joined AT&T Bell Labs in 1992 to create graphical user interfaces for semiconductor device/process simulation tools that we developed in house. One of my first projects was to create an interactive editor/simulator for the metallization layers of an integrated circuit—much like the application that I later developed which appears on the front cover of John’s book. I couldn’t believe how quickly my first project came together! In just 2 weeks, I had a fully functional interactive drawing editor (based on the Tk canvas) which fed cross sections to an interconnect capacitance simulator. It was a religious experience for me, and I’ve been hooked on Tcl/Tk ever since.
For what kind of development did you use Tcl/Tk for?
David Korn: My son Jeff merged ksh93 and Tcl/Tk to create tksh which uses the tk library.>
Donal K. Fellows: Back then, I used it for building an IDE (for developing and simulating asynchronous CPUs) to replace a previous one written in Common Lisp. The version in Tcl/Tk was faster in all respects and produced much nicer output.
Ron Fox: What I do recall is that the first real Tcl/Tk application was to control a distributed data taking system for the S800 spectrograph at the NSCL . A paper on using Tcl/Tk to implement a group communication systems to control this sort of system had caught my eye (“Dart – Data Acquisition System for the Next Generation of Fermilab Fixed Target Experiments G. Oleynik et al. IEEE Transaction on Nuclear Science Feb. 1994, Vol 41, No 1 pg. 45). The paper was presented at the 1993 IEEE Conference on Real-Time Computer Applications in Nuclear, Particle and Plasma Physics in Vancouver June 8-11 1993 which I had attended. I had the idea of doing something similar, and wrapping it up in a nice GUI that made it hard for the experimenters to make errors.
This was successful and was used for a few years until we did a re-work of the data taking and data analysis software at the NSCL for the commissioning of the coupled cyclotron and radioactive beam facility. That would have been 2003. In this rework we had the idea of making the data analysis software (now called NSCLSpecTcl) an extended Tcl/Tk Interpreter and exposing this to the users so that they could script their analysis and build their own application specific GUI’s. In 2004 I became aware of the Tcl conferences and presented this work at Tcl 2004 in New Orleans.
Somehow after that I wound up on the program committee for Tcl 2005, and then wound up as the “chair-for-life” of that committee.
Michael McLennan: In 1993, I developed the [incr Tcl] package (support for object-oriented programming) to help the language scale better to support larger and larger projects. The largest application that I developed with Tcl/Tk was a CAD tool called SimVision developed at Cadence Design Systems, Inc., which included about 250,000 lines of Tcl/Tk and 250,000 lines of C/C++.
What part of Tcl and the Tk Toolkit was most valuable to you and why?
Donal K. Fellows: Back then? Absolutely the pages on the canvas widget, as they opened up the door to things I would have found it exceptionally difficult to do any other way.
Ron Fox: Two parts: Part 1: The entire Tk toolkits make writing GUI’s fun not hard. NSCLSpecTcl’s visualizer makes use of a recycled X-11/Motif application that was absolutely no fun to write. Seeing the ease with which physicists who have very little formal training as programmer wrap their applications with sophisticated GUI’s is truly rewarding.
The second part is the ease with which Tcl/Tk can be extended. In evaluating scripting languages for NSCLSpecTcl I had also looked at Python which was coming on strong at the time.. it just seemed so much easier to add commands to Tcl than it was to Python. Further the command line model of Tcl/Tk was something much more familiar to physicists at the time.
Michael McLennan: To me, this blending of Tcl with C/C++ is its real strength—the ability to create “programmable” tools with a customized command language, or to orchestrate C/C++ code at a high level to create a finished application. Tcl established that paradigm for development, and is still the best solution available today for that purpose. For that reason, I think Part III of John’s book—Writing Tcl Applications in C—is the most valuable.
Is there anything else you’d like to say about the language, John, or his book?
David Korn:Tcl/tk was one of the first to successfully merge scripting and gui programming. We owe John our gratitude.
Donal K. Fellows: It is an exceptionally well-written book, but it wasn't until I tried to revise and add to it that I realized the full extent of this. The content of the chapters fit together so well and lead me from being an absolute beginner to the point where I could tackle complex projects. Fitting in with that has been a massive challenge. Generally, I'd say, "Thanks John for helping me learn to be a genuine software engineer rather than just yet another programmer; hope to meet you one day."
Ron Fox: John’s book is still the book I recommend for beginning Tcl/Tk programmers. While it’s out of date with respect to where the language has gone, it is still the clearest exposition of the principles of the language. I’m looking forward to the next revision of the book that I understand is underway and hope the authors will be able to maintain the clarity of John’s original text as they bring it up to date.
Michael McLennan: I always keep a few copies of John’s book on my shelf to hand out to new team members and other colleagues. I’m still using Tcl/Tk today for my latest project, the Rappture toolkit (www.rappture.org), which is an interface builder for scientific simulation and modeling tools. I’ve learned so much in my career by not only using Tcl/Tk, but studying its internals and its design. Thanks to John for a marvelous work of software engineering!
Please share your link to some of your favorite Tcl/Tk code or some comments and thoughts about Tcl/Tk here.