AK at the Tenth Annual Tcl/Tk Conference

Jeff Hobbs and I (Andreas Kupries) flew to the Tenth Annual Tcl/Tk Conference on Tuesday, arriving at Detroit at 9:45pm (july, 2003) in the night, skipping the tutorials on Monday and Tuesday.

The two flights (we had a stopover in Minneapolis/St. Paul) were uneventful, except that Jeff underestimated the size of the various queues at Vancouver and arrived at the gate a quarter hour before closing it. The queues for AIF, INS and Security were backlogged so much that the end was well before the duty-free shop. When I was passing them earlier they were just in the duty-free shop.

Despite the late arrival there were still some people around and awake, namely Steve Landers, Cameron Laird, Donal Fellows, William Duquette, Sheila Miguez, and others, so we had some nice chats.

Nevertheless, I hit the bed around 11pm.

On Wednesday I began the day at 8am with breakfast and then listened in on Steve's tutorial about Starkits, where he also mentioned ActiveTcl and Tcl Dev Kit in several places. Thanks Steve.

After lunch I went to another tutorial, again by Steve, now about Metakit. This was the first official part of the conference for me. It was a good tutorial and I believe it helped me a lot for a current project where I am using it. Actually Steve helped even before the conference when I pestered him with questions while he was trying to write the tutorial.

In that time I asked myself if Steve's 'gbutton' package could be rewritten in snit and added to tklib. Right now they are in incr Tcl and thus depend on something outside of tcllib/tklib. I also talked with Will about the internal structure of snit, to see if it would be possible to speed it up by coding parts in C, and where. I am not thinking about a separate package, but rather about adding critcl coded parts to the critical :) sections.

Steve mentioned inofficially the idea of 'foreign readers', code to read external data from somewhere and then present it in the form of a Metakit (virtual) view. An example would be the file /etc/passwd, crontab's, and other things.

One of the ideas tossed around the audience of the tutorial was the use of Metakit for a web cache, a Tcl-squid. People were also interested in threadability of Metakit, and use in situations with a very high number of concurrent readers and some writers. Some of the questions made Steve had to defer to Jean-Claude Wippler.

Given that I wrote widget adaptor to create a tktable talking to a Metakit view I also had stray thoughts like how about wrapping a view into a matrix interface (the one from tcllib/struct), does the Unix file command recognize Metakit files as anything other than data, or could Metakit return dict's in some places ?

In the evening several of us set out to find a nice place to eat. A number of us (Kevin Kenny with wife and daughter, Steve Landers, Mark Roseman, Peter Spjuth, Donal Fellows, and myself) lost sight of the main group and thus ended up in a different place, The Brown Jug, boasting existence since 1936. Quite good.

Like the main group one of the topics was argument expansion. Good thing we had the creator of TIP 103 and 144 with us :) Yes, he had come to the conference from Sweden.

On Thursday Clif Flynt welcomed us all to the main part of the conference, and played two songs for us on his acoustic guitar, one about coding in Tcl, the other about the life of a Mississippi river boat pilot, an occupation which went from obscure to a licensed monopoly and dead again within 20 years, an allegoric reminder and question about the current state of Tcl/Tk and where we are going in the future. Are we painting ourselves into a corner ? he asked.

Our first talk, the keynote was held by Larry McVoy, founder of COMPANY: BitMover. The main product of his company is BitKeeper, a CM system. BitMover employs Bryan Oakley, an experienced Tcl'er to write the GUI's for the BitKeeper applications. Bryan was also at the conference, meeting with his boss for the first time, apparently he is tele-commuting, working from home. A very visible user of BitKeeper is Linus Torvalds of Linux fame, using it to manage the onslaught of patches.

With respect to Tcl Larry described himself as an outsider and user, and not a coder, which caused me to miss Larry Virden, who couldn't come to the conference this year, unfortunately, as he described himself in the same way, maybe with a bit more coding. Well, Larry talked a bit about BitKeeper, showing us screenshots etc. The most outstanding of BK, in his eyes, is the replication technology which allows for the easy replication of a repository with all its history over many geographically dispersed systems, and also the easy creation, maintenance and merging of branches.

In his conclusions he saw Tcl as a very good piece of work and on stable ground. Tk however was different matter for him, despite that he is using it to his advantage in BitKeeper. To him it needs work, desperately, because of its "clunky and ugly motif-like look and feel". He wishes for it to have windows look and feel, windows behaviour (key bindings, colors, button sizes, etc.), and a lot more widgets.

This, and the following talks about SYS, by Fred Hansen, and the GUI panel set the tone for the rest of the conference, where a lot of the chats were about Tk.

The main counterpoint was that Tk can be made to look good, pointing to Brian Griffin of Mentor Graphics who gave a talk about this last year, and has three TIPs in the running to incorporate his experiences into the Tk core. While this demolishes some of Larry's point one thing still stands: The "default" is motif-like. And while we have a lot of the widgets now considered state of the art, like comboboxes, as extensions, this does not mean that those who need them also know about their existence.

The discussion with Larry during and after the keynote not only touched on Tk, but also drifted into the areas of Marketing, Management, and their view of Tk. One thing shining through is that Larry not only sees this from the point of view of a user of Tcl/Tk, but also from the point of view of a person who has to sell his product, where important decisions about buying a product or not are made by managers, "people designed to avoid risk", demand the windows look and feel, seeing that their buddy, and his buddy, and his ... are doing it, using it. And here the motif-like L&F is hurting him. He (Larry) stayed away from windows for the time being, more centered on the unix crowd, this however means in his word "smart people, small market", and for future growth he has to look at windows. He thinks that he has about 6 months to make a decision about the future use of Tk in the BitKeeper Ui's and maybe two years for all he needs to happen should he stick by Tk.

What he also misses is excitement around Tk, something he wishes to create to grow the set of people which are liking Tk and willing to use. Again something which is good for him as he then will get people he can hire for Tk work. Also which would be good to the community, to fight the persistent meme of Tcl/Tk being a dead language.

Right now Larry is looking for people with C experience and graphics experience to have them work on Tk to get at least part of the necessary changes in motion. The one person immediately popping into my head was Jeff Hobbs, later on (during the ActiveState of Tcl talk) also the Tk Maintainers.

Back to his proposed changes for Tk, the new widgets particular. In that area he wishes to see tree, table, tabbed, property, and combobox, but also the use of anti-aliasesd fonts for polished looks.

In a chat I had later with Don Porter and Mo DeJong, and one with Donal Fellows, about the technical issues required to make his proposals happen we determined three areas, roughly layers, in need of work.

For one, the default options have to be tweaked. This will actually go a long way for the visual part. Then there are new c level widgets, c for performance and to be able to use native widgets. Although on unix we could call out to tcl instead, similar to how the file dialogs are done right now. The third was the need for 'standard components', like 'dialog skeletons' with the buttons in the right places and the proper basic bindings, or tooltips.

Other thoughts I had on the topic were about the posibility of looking at the GTk canvas and Zinc to see if there are ideas we can steal back for the Tk canvas (Both Gtk and Zinc are derived from the Tk one but now go beyond).

Regarding the options Richard Hipp proposed a 'tk lookslike' command an application has to call at the beginning to get the appearance it wishes to have. Explicitly, to maintain legacy apps in 8.5. In 9.0 Tk then can automatically select its appearance based on the information in the tcl_platform array.

Right after Larry came Jeff, presenting the ActiveState Of Tcl. While he was doing this I kept myself asking if a bitkeeper repository could be represented as a filesystem, with a driver for Tcl. That might make acess to complicated internals of a repository much easier for Tcl, much more direct and definitely easier than spawing the command line applications and parsing their output to get the information needed. This would also enhance testability of the lower layers as a testsuite based on tcltest is made possible by this. Another thing was if ActiveState's Komodo could be extended to make use of BitKeeper, like it can for Perforce and CVS.

After the session about network applications we had the GUI papers, Fred Hansens SYS, and a panel about Best Practices for Tcl/Tk GUI's. This essentially continued the discussion about the state of Tk started with the keynote.

While Fred Hansen did say that we was not attacking Tk in his report about SYS, an application using a staggering 300 dialogs, many quite similar, I still had an uneasy feeling there thinking that there was still some sort of indirect claim of being Tk at fault for this. It was definititely said that "Tk is too easy to abuse", and later in the panel indirectly the even more general "Tk is to easy to use".

One definite point Fred had was that the baseline of approved software in the military (there SYS was developed for) is extended with new software with glacial slowliness, making approval for web based application much easier than something made with Tk.

In the panel coming after this talk not only the panel were talking, there was quite a lot of interaction with the audience. Also drifting a lot from the main topic into perception and management issues. Mark Ackerman, a person from the local university doing UI and HCI courses considered the problem of SYS definitely to be one of the team doing it having now experience with HCI and UI design, also one of learning (the users might have been more familar with a web metaphor), but also saw Tk as so good for prototyping, too good maybe, because this would come in the way of creating a good application architecture. For the audience this was partially a general software engineering problem, the failure to go back to the prototype and clean it up, instead using it directly for further development. I am not sure if the questioned the use of scrpiting in general. Definite is his opinion that only 1% of the users of an application need scripting exposed for them.

Larry also detracted from the main topic by harping about self-modifying code and the inability to write a true syntax checker for Tcl. Which was beside the point for the topic at hand, and in general something which is IMHO actually not done in 90% of the applications done in Tcl, and for those that do it is concentrated in some small area, encapsulated. Making a syntax checker for the majority of code quite feasible.

Another meme we have to battle come up, the perception of 'scripting == unstructured code'. This was actually the place where the 'manager == sheep' comparison and 'designed for risk-avoidance' came in too. Again it was repeated that Tk is not pretty, on windows.

Fred Hansen expounded that the ability for code to modify code is bad, calling it a pun, and something we should remove from the language. I don't think that he knows that we call this the code-data duality, and also something which is at the core of the language. Removal virtually impossible.

In the end the best practices we quested for were listed as follows: Use a small team (where people know of others work, not replicating something with only minor differences), use standards for coding, do usability studies, early! take care of bindings, hotkeys, be consistent (use templates for that).

In the marketing department, we should advertise the testability of GUI's written in tk, which is better than for other systems, because of our ability to drive dialogs and windows via 'event generate'. Here Larry proposed that we should create a 'Coolest Tk UI Award', handed out every year, with some cash to come with. Something managers can brag about. Proposed Cameron as the one to handle the selection of the UI / application getting it.

In the evening we had then a very nice dinner, with the team I was on losing the quiz by only 15 points after goofing up some of the answers. C'est la vie.

In chats in between Ken Jones threw out the thought if it would be worthwhile to pursue a NIST grant to pay for Expect on Windows. Another proposal was for procheck to look for inline pragmas in the code it reads to suppress checking of particular conditions in some places, like frink does with its "# NOFRINK" comment. Regarding the starchive system I believe that it needs some automated facility for upload, and the ability to notify other applications of such uploads. This would enable replication of the database, but also higher level systems (indexing, display of documentation).

Of the three BOF's this evening I attended the one about writing and publishing for Tcl, foregoing the one about selling Tcl/Tk to your manager. That is something Larry Virden would have liked to be in. The CANTCL BOF was rescheduled to the next day.

What I came away with is that publishing articles at outlets like oreilly.net, developerworks.ibm.net is a good way to build up a reputation, and to possibly get contacts at publishers. Ideas for books were: One about deployment, using tcl technology for the examples (playing on our newfound strength with VFS and starkits), and embedding of GUIs. Also "How to write a cross-platform application" (another thing we are good at), 101 basic games, and a "tcl programmer handbook" (like the C programmers handbook, a better reference).

Here Larry again mentioned the GUI award, now called ' Camerons Choice of GUI Award', also proposing Brian Griffin's work at Mentor Graphics as a first candidate.

Away from this I saw Steve Landers and Jeff Hobbs conspiratorically sitting together, later learning that they did an outline for a roadmap on Tk development, hashing out a rough timeline, possible widgets to fold in (mainly from bwidgets, some from iwidgets).

Here we also noted (through the BitKeeper - Linus connection) that 'make xconfig' is one Tk application a lot of people see, especially Linux kernel hackers, and this one is butt ugly (even without the motif lf). So one of the things we can do to generate buzz for Tk would be to revamp this application after work on Tk and getting that change back into the linux kernel repository.

One thing I have to look at is how the TkTreeCtrl, Bwidget Tree and the BLT Tree compare with each other, also about BLT's tree data objects, and how all may fit together with tcllib's struct::tree.

On the next day, the second speaker went missing, Ping Tong about "MQseries Enabled Applications in Enterprise Integration". We had already lost Todd Coram the day before because he could not get approval to attend, but this was something Clif was made aware of relatively early. Now this one was a complete surprise, without any notification beforehand.

So after Michael A. Cleverly gave an introduction to nstcl and Tom Eshelman described how they use Tcl for easy database access at AT&T we had longer break.

In the Aerospace section Tk popped up again with Tk described again as clunky, however with the speed of it and Tcl also described as very good.

After the lunch Steve Cassidy talked about CANTCL, his effort on creating a package repository. One of the things he is currently handling but should is the possibility of getting archives for the same package, but different architecures. These would have to be merged for his system to work, but it doesn't. He is very dependent on the notion that package names are unique, otherwise remote 'pacvkage require's will not work. This means that the moment collisions start to happen (packages with the same name, but different functionality, or different interfaces to the same type of functionality) we will need editor-type person not to reject packages (that can be done automatically), but to help people in finding proper names. Another problem are binaries for the same package, processor architecture, compiled differently (package variants like threaded, or different just optimization levels).

My talk about doctools was ok, despite me getting thrown off track a bit in the middle off it. I currently consider it so/so, not much excitement. Well, the word is out a bit more, let us see what the future will bring. This does not mean that there was no interest at all. An independent consultant, John Harris, was very interested, as he is working on a literate programming system with/for tcl and believes that I solved some core issues for him with doctools. I also got reminded of the wiki page about rendering of mathematical formulas, something I might be able to use in some backends.

After me Mark Roseman had a much funnier talk about using starkits to easily deploy complicated applications. Easy to see that he has much more experience in giving them. I am still new to this. The main issues he had that we are not as good as we could be on OS X, gui-wise (TK again), so for some parts he had to use native IDE's to build something which looked ok for that platform. He created a website, tcl.projectforum.com, for the discussion of and collaboration Tcl related things, incidentially showcasing his projectform software.

This was followed by the TclCore Team panel. While the silence at the beginning was a bit awkward we did get a discussion going. Tk was a hot topic, no surprise, but also the TIP process, which is currently considered by at least part of the audience as hemming and hindering progress. A model of development implicit in some of the wishes seems to be that of a lot of people hacking away on Tcl and/or Tk in the periphery and then feeding patches back to the slower-moving center. This is of course one of the modes of development BitKeeper is claimed to be good at, with the example of the Linux kernel. This brought to my mind the discussion about stable versus development versions of the core. It was proposed that the needs of Tk regarding development are different from the Tcl core itself, needing a faster pace to catch to the state-of-the-art in UI's. A good thing is that a number of people in the audience with an interest in modern-looking Tk UI's are now aware of each other and forming a group to exchange experiences, draw up changes to go into Tk and to drive this process. Larry is willing to set up a BitKeeper repository for Tk to facilitate this and allow experimentation. Regarding the TCT we are willing to give BitKeeper a try, especially as the CVS import/export facilities make it possible to keep the official repository on SourceForge. If the experiment is successful we are likely to consider moving development of the Tcl core to it too.

This evening dinner was again outside, this time with twelve of us going to a Mongolian Barbecue. Essentially each customer selects meat, vegatables, oil, sauces on his own, in a bowl, then goes to the open kitchen area there the contents are placed on a round oven, stone, about 2 meters diameter, and are then stir fried. The result was very nice.

Coming back the Wine BOF was initiated, with me staying with the fruit juices also present. Sort of overlapping we also had the Tk games BOF. Seems that Kevin Kenny wrote a robot player for master mind, i.e. the human player gives the challenge and rates the solutions proposed by the robot.

An esoteric topic we touched upon was the use of byzantine agreement algorithms to keep players from cheating, or rather keep a consistent good state of the game even if there is, allowing detection of checting participiants. This unfortunately does not preclude cheating by exchanging information outside of the game, ie. telephone for example as that will not show up in illegal moves, only that the moves made are different from the ones made without the additional information. This might show up in some sort of statistical correlation, but can't be detected during play.

A game asked for was a computer version of 'robo rally', [L1 ], where bots are programmed with key cards and then run around in some maze. This seems to be out of production, but not out of copyright.

Clif Flynt demonstrated a mine sweeper, but with a twist from the regular game. The player cannot click on any cell he likes, but starts with his avatar on a cell and can then sweep only the adjacent cells, and only by walking on them. In addition he has some hand grenades to clear out a cell suspected of containing a mine, and a spray can to mark suspected cells. The game is won when the avatar reaches the other side of the mine field.

I described a game I like called 'Dampfross' (literal translation: Ironhorse). Given the description Kevin though that it might called 'Empire Building' in the US, and maybe 'British Rail' in the UK.

An interesting surprise was that Peter Spjuth has done a lot of weekend fun projects, except that he doesn't publish them like Richard, and he also claims that many are not quite finished after learned what he wanted to learn from the project. Hopefully we will code from him soon.

A good game mentioned was TkSokoban, for his themable Tk UI, and the very good looking default theme.

Another game by Kevin is a sort of image reconstruction thing were you get information the number of black pixels in a row and column and then have to reconstruct the image generating this information. This is sort of like computer tomography where the computer uses the received X-ray dosages to reconstruct how the body looks like internally.

An interesting project which is not a game I saw at that time was a diagramming tool Clif wrote. It is for UML, not quite complete and also needing some polish. This is something the AT&T folks might have interest in, so I pointed Clif to them.

Last day. Mo DeJong presented his scripted debugging, a very interesting idea. Especially when finding a problem involves literally stepping through a lot of code searching for some specific complex condition. Lets the computer step and search (i.e. loop).

In the WIP section Chris Maj presented pgaccess, a GUI interface to Postgres written in Tcl/Tk. Regarding the demonstrated Form builder I believe that the GUI builder in Komodo is better, and could the same task if told about the special widgets they use (they have database connectivity build into them). Form builder uses place! Shudder.

Tom Allard of the Federal Reserve Board showcased an application doing XML processing he uses to wip reports sent in by the various banks in the US into a uniform shape, to be actually use- and comparable.

Steve Cassidy showed us Giggle, a simple weblog where stories are simple files. Idea stolen from blog called Blossom.

Michael A. Cleverly presented the ultimate tool for junk mail. No, not email spam, but paper mail. Seems that the USPS has a webservice accepting electronic documents and a list addresses, printing the documents and sending them out ot the recipients in paper mail. TclMML is an extension providing an interface to this service.

Simon Hefti of Netcetera presented ISG, a script to generate scripts for use in a Solaris package manager archive.

Jeff Hobbs dispensed information about the debugging facilities coming with TkCon, observe, and idebug.

At last David Graveraux talked about IOCP, his rewrite of the Windows socket driver. It is for NT only and makes use of overlapped IO to boost performance considerably.

The conference was concluded with the town meeting.

Bryan Oakley proposed that we should do (some of) the tutorials for free in the future to draw newcomers. A problem with this is that the tutorial fees usually are most of the meat which pays for the conference.

Larry McVoy observed that conference attendees are usually split into two groups, the normal and the power users. He suggested that we should do some type of Tcl Hackers conference for the latter (this is quite likely something along the lines of the Linux Hackers conference where a lot of the kernel hackers meet). This would have no tutorials, but also be cheaper. He signed himself up to support this.

Regarding organization Clif said that a conference like we had is way to much for a single person to manage and is glad that he brought in someone else with experience (MacHack conferences). He said he would have been in trouble timewise if he had had 2 contracts to work instead of one. Steve Simmons, who helped out with technical stuff, especially the wireless network, proposed a tri-chair structure, for programm, logistics and ..., and the latter two being local to where the conference will be held.

One part Clif was disappointed about was the non-attendance of academics. He had moved the conference into the summer to attract them more, yet they did not come. And on the other hand this move lost us people from the industry as it hit them in the middle of their vacations. Given that he proposes to move back to a fall schedule.

Another proposal was to be(come) a track at the big usenix conferences, similar to the Freenix track. Similar to that was to team up with people from other scripting languages, like Python, PHP, Ruby and then pitch conference about 'Scrpiting' (languages) in general to usenix. Clif mentioned that this was proposed before and usenix thought that there would be no people coming to such a venue. On the other hand it was noted that other communities are becoming disenchanted with O'Reilly's OSCON, it seems to be still more of a perl conference than aything else. Steve Simmons said that he had contacts in the Ruby community, and also experience with usenix, especially knowing what they have to hear in a proposal, and is willing to put a proposal together. 'Actually, I was seeking contacts in the Ruby community. If you want to follow my progress, it'll be tracked in the Scripting Languages 2004 Conference Proposal. scs

Brian Griffin additionally pointed us to the Design Automation Conference. This is something I believe we could do papers at.

Drawing on the above the proposal for the Tcl Hackers Conference then changed to a Tk Hackers conference, as this means that we may garner people from Perl and Python communities for this as they have an interest in Tk (Perl/Tk, Tkinter). Sheila Herndon recommended to get HCI people as well for this. It was proposed to hOld this in 6 months in the Bay area.

Mark Roseman will set up a projectforum as a focus for post-conference work, Clif will distribute a reference to all conference attendees. Mark also reminded us there will be a HCI conference in Vancouver next month we can grep for interesting people. Jeff Hobbs volunteered to draw the roadmap for Tk development.

The project forum is at http://tcl.projectforum.com/tk/Home .

Another topic was the marketing of the upcoming intended changes to Tk, with proposals for papers comparing Tk to Java, in terms of size of code, speed, and time to create the GUIs, also comparisons of the old versus the new Tk, showing examples of the new Tk. This of course is based on the assumption that Tk will be developed. A point brought up was to not drum up the big marketing stuff before we have our stuff together, i.e. new Tk to show and websites to point to.

This evening eight of the remaining people went out a last time to dinner, in the Knights Inn with more chatting and joking around.

I myself had virtually no sleep that night, then went with Jeff to the airport at 7, with our flight at nine. Given my lack of sleep I was fading quite a bit, especially in speech/voice recognition. Uuugh. When back in Vancouver I dropped my laptop at ActiveState, dumping my notes to the computers as well, then went home. I was able to stay awake for a bit, sorting through email, but hit the bed around 4pm. Slept like a log, waking up today (Aug 4) around 9:50am. Luckily today is a statutory holiday in Canada (Heritage Day), giving me one more day to recuperate. Now in the evening I felt good enough to rewrite my rough notes into this travelog. Back to normal work tomorrow.


Great summary! Thanks. -- Marty Backe