From: jeff_hobbs@my-dejanews.com Subject: TEA Summit Notes Date: 22 Mar 1999 09:50:46 -0800 Here are some notes on Tcl Extension Architecture (TEA) Summit that was held at Scriptics on March 15/16. For background, and those in attendance, see: http://www.scriptics.com/tea-summit/ The 2 days were broken down into several sections where members of the Scriptics engineering staff presented background info to the current status of the item (ie - Configuration and Makefiles) and then moderated the discussion surrounding the issues. I'll go through them topic by topic, covering major points and preliminary outcomes. Each session had a set of slides, which Scriptics might be nice enough to post, but I won't otherwise elaborate (read: retype) the whole set here. NOTE: I am guaranteed to miss certain things, but please keep responses on topic. Use "RE: <Topic Point>" when replying to KEEP THREADS DISTINCT. Also note that when I say I guess|think|believe|<fuzzy logic here> then that really means me, Jeff Hobbs, not Scriptics per se. ** TOPIC 1: Ouster Chat - John gave use a shortened version of what he normally presents at the Tcl conferences. On point of interest is that Scriptics currently has only 4 core development engineers, that means engineers on the Tcl core, compared to 10-12 that were available at Sun. Keep this in mind next time you complain about slow integration of new features. Of course, also keep in mind that Scriptics is still hiring (they've got expansive new digs in Mountain View). Scriptics is definitely in a major growth cycle. Even with the limited resources, they've managed to continue with 8.0/1 parallel development while also creating tools like TclPro. * Why is their a parallel 8.0/8.1 development thread? This question doesn't have the simplest answer. The core Scriptics team left Sun with 8.1 in a very immature state. John initially wanted to focus on 8.1 and get the first TclPro out for 8.1, but realization came that by the time 8.1 was stable enough, Scriptics could deep-six. So, 8.1 was continued because it had important key new features (ie Unicode), but 8.0 was (is) being carried along further than originally intended because it is the base for TclPro. My guess is that when TclPro makes the move to 8.1, 8.0 will finally drop by the wayside. This dual-path certainly hasn't helped alleviate the crunch on Scriptics limited resources. Also, it was noted that 8.1 has so many core changes from 8.0 that it would have been better to call it v9. This is one reason stubs will be in 8.1 and not back-ported to 8.0. Scriptics hopes to improve items like transparency into the bug fixing process and communication between Scriptics and the community as a whole (both paying customers and open source). The issue of a possible Tcl Advisory Board was raised, and quickly scuttled. It's usefulness was in question, especially after the flames that arose around the Tcl Consortium. I feel that Scriptics was hoping for a moderated view into the community pathos, but it looks like they will just wade into the consciousness hip deep. * Why are we here? The purpose of the TEA summit arose from problems that exist in the extension management today. I even got an "I told you so" in on this. The Scriptics guys, who have not been keen on breaking things into packages for the Tcl core (ref kernel/core discussion), have finally had to deal with this when integration bundles into TclPro (which now bundles with incrTcl, TclX and Expect). On average, it required 2 engineer man months to integrate an extension into TclPro cleanly. Basically, Tcl is easy to extend, but with so many variations on the packaging theme, actually merging this together wasn't dead simple. TEA hopes to make it so. ** TOPIC 2: Stubs Stubs. First, what are they? Well, the simplest answer is that they provide a platform-independent backlinking mechanism. See Duffin's very long commentaries on his posts for more exact semantics. Important aspects of stubs are that is provides forwards compatability through its pointer table(s), meaning no (much much less?) worries about future changes in C APIs. Scriptics plans to also provide function stubs for 8.0 of UTF and a few other items, so extensions should be able to compile and run against both 8.0 and 8.1 equally. Stubs won't be for everyone, but should make extensions easier for most. The actual Stubs mechanism is new in 8.1b2. ** TOPIC 3: Makefiles and Configure The use of cygwin as a cross-platform solution was raised. The Scriptics guys will be surveying c.l.tcl in the near future to see who would be willing to use it. Basically, it means the ability to use configure and make equally on Unix and Windows, when one has the free cygwin tools. It was recommend that Scriptics supply a VC++ project file for Windows instead of the makefile.vc (or in addition to). I guess Windows guys like this a lot more than having to resort to nmake on the command line (what a sad state of affairs...). In general, the ability to use native tools (VC++ being considered the "native tool" for Windows) is important, with gcc as an option. The basic features of the makefiles and tclConfig.sh are to change in the coming versions for TEA. No more --with-tk, and --tcl-path as a search path for various Tcl things were recommended. The Makefile will have DYNAMIC and DEBUG defines, allowing for the removal of --enable-shared and --enable-symbols from the configure. The recommendation was to have four sub-directories: dynamic, dynamic-debug, static, static-debug with makefiles that support the right options for each in them. Makefiles in general should all have the following targets: all, man, test, dist install, install-binaries, install-libraries, install-man clean, distclean, setup (build binary dist of extension) The makefile default will be to use dynamic libs by default where supported. tclConfig.sh will have the info for all 4 variants. I recommended that tclConfig.sh was built into the tclsh tcl_platform variable, but that didn't fly for some reason. I still think that the ability to have binaries named tclsh8.1, tclsh8.0, tclsh8.0d, etc all know internally the tclConfig stuff (which is only the one file) makes sense to me. The Scriptics guys also want to be able to support static builds on Windows. Also, getting rid of any dependency on environment variables that find the init files would be nice. In general, the tcl_findLibrary call should be used by extensions. ** TOPIC 4: Test Suites Test suites should actually cover source code and be maintainable. The tcltest namespace and extension will be packaged with Tcl in the future. The area of testing is important, and Tcl can make much better headway this way. There is a new doc on writing test suites in the tests subdir (README, it'll probably get a better location soon). Further hints on all this stuff will be in TEA. ** TOPIC 5: Installation Wouldn't it be nice to just say: package require Expect and when it doesn't exist, have a dialog come back asking if you want to install it? This has been used in apps like Netscape, and may become a reality in Tcl in the future. Until then, the issues for TEA are to standardize everything down to the minutiae, so that automatic builds can be guaranteed. Also, the focus should shift to more binary distributions, with perhaps even a method to upload to a special site that builds the binaries for you. A standardized Tcl archive will be formulated in the (near) future to get this all kick-started. An installer of some sort will also find its way into the Tcl core to support this. More to come as the individual points are finalized. Oh, one thing - it should be assumed for extension writers that Tcl will be installed (and Tk for Tk extensions) already. ** TOPIC 6: Miscellany & Closing stuff It looks like XML will be the future doc format for the Tcl core and its extensions. In this case, the core will provide conversion utilities for XML->nroff/HTML/rtf, etc as appropriate. One important item that Scriptics was ambushed with was printing support. It was noted by most extension authors to be a key issue. Scriptics got the message I believe, but their expertise on and resource for this is slim at the moment. Any volunteers? It was noted that just 100% proper canvas printing was essential, and the text widget after that. More than that would just be having the ability for Tk extension writers to access the necessary primitives in a cross-platform manner. CONCLUSION This is the start of a process which will take a bit to reach finalization. Scriptics is aware of the importance, and will be devoting core engineer time to realizing the issues above. Some are already done, others are well-formed or out in open source, and others are still pie in the sky ideas. With coordinated community effort, especially among extension authors, it looks like we should be able to reach concensus on outstanding items and develop the Tcl Extension Architecture to the benefit of every user. We need to eliminate the idea that adding a C extension is anything more than a simple turnkey solution, and take Tcl to the next level. jeff.hobbs @SPAM acm.org jeffrey.hobbs @SPAM icn.siemens.de [[Send Tcl/Tk announcements to tcl-announce@mitchell.org Send administrivia to tcl-announce-request@mitchell.org Announcements archived at http://www.findmail.com/list/tcl_announce/ The primary Tcl/Tk archive is ftp://ftp.neosoft.com/pub/tcl/ ]]